mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-21 16:33:24 +00:00
Remove {,un}register_observer
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
054c64542b
commit
ac71234b89
@ -344,22 +344,6 @@ impl FileLike for EpollFile {
|
||||
return_errno_with_message!(Errno::EINVAL, "epoll files do not support ioctl");
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.pollee.register_observer(observer, mask);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.pollee.unregister_observer(observer)
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "anonymous inode fs" and link `EpollFile` to it.
|
||||
|
@ -5,7 +5,6 @@
|
||||
//! Opened File Handle
|
||||
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
fs::{
|
||||
device::Device,
|
||||
utils::{AccessMode, FallocMode, InodeMode, IoctlCmd, Metadata, SeekFrom, StatusFlags},
|
||||
@ -101,22 +100,6 @@ pub trait FileLike: Pollable + Send + Sync + Any {
|
||||
return_errno_with_message!(Errno::EOPNOTSUPP, "fallocate is not supported");
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
return_errno_with_message!(Errno::EINVAL, "register_observer is not supported")
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
None
|
||||
}
|
||||
|
||||
fn as_socket(self: Arc<Self>) -> Option<Arc<dyn Socket>> {
|
||||
None
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ use super::{
|
||||
utils::{AccessMode, Channel, Consumer, InodeMode, InodeType, Metadata, Producer, StatusFlags},
|
||||
};
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
events::IoEvents,
|
||||
prelude::*,
|
||||
process::{
|
||||
signal::{PollHandle, Pollable},
|
||||
@ -104,21 +104,6 @@ impl FileLike for PipeReader {
|
||||
rdev: 0,
|
||||
}
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.consumer.register_observer(observer, mask)
|
||||
}
|
||||
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.consumer.unregister_observer(observer)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct PipeWriter {
|
||||
@ -188,21 +173,6 @@ impl FileLike for PipeWriter {
|
||||
rdev: 0,
|
||||
}
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.producer.register_observer(observer, mask)
|
||||
}
|
||||
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.producer.unregister_observer(observer)
|
||||
}
|
||||
}
|
||||
|
||||
fn check_status_flags(status_flags: StatusFlags) -> Result<()> {
|
||||
|
@ -8,7 +8,7 @@ use takeable::Takeable;
|
||||
use self::{bound::BoundDatagram, unbound::UnboundDatagram};
|
||||
use super::{common::get_ephemeral_endpoint, UNSPECIFIED_LOCAL_ENDPOINT};
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
events::IoEvents,
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
utils::{InodeMode, Metadata, StatusFlags},
|
||||
@ -259,22 +259,6 @@ impl FileLike for DatagramSocket {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.pollee.register_observer(observer, mask);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.pollee.unregister_observer(observer)
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "SockFS" and link `DatagramSocket` to it.
|
||||
|
@ -14,7 +14,7 @@ use util::TcpOptionSet;
|
||||
|
||||
use super::UNSPECIFIED_LOCAL_ENDPOINT;
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
events::IoEvents,
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
utils::{InodeMode, Metadata, StatusFlags},
|
||||
@ -416,22 +416,6 @@ impl FileLike for StreamSocket {
|
||||
Some(self)
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.pollee.register_observer(observer, mask);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.pollee.unregister_observer(observer)
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "SockFS" and link `StreamSocket` to it.
|
||||
|
@ -5,7 +5,7 @@ use core::ops::Deref;
|
||||
use ostd::sync::PreemptDisabled;
|
||||
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
events::IoEvents,
|
||||
fs::utils::{Channel, Consumer, Producer},
|
||||
net::socket::{
|
||||
unix::{addr::UnixSocketAddrBound, UnixSocketAddr},
|
||||
@ -96,25 +96,6 @@ impl Connected {
|
||||
|
||||
combine_io_events(mask, reader_events, writer_events)
|
||||
}
|
||||
|
||||
pub(super) fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.reader.register_observer(observer.clone(), mask)?;
|
||||
self.writer.register_observer(observer, mask)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
let reader_observer = self.reader.unregister_observer(observer);
|
||||
let writer_observer = self.writer.unregister_observer(observer);
|
||||
reader_observer.or(writer_observer)
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn combine_io_events(
|
||||
|
@ -7,7 +7,7 @@ use super::{
|
||||
listener::Listener,
|
||||
};
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
events::IoEvents,
|
||||
net::socket::{
|
||||
unix::addr::{UnixSocketAddr, UnixSocketAddrBound},
|
||||
SockShutdownCmd,
|
||||
@ -122,25 +122,4 @@ impl Init {
|
||||
// Meanwhile, it is in `IoEvents::ALWAYS_POLL`, so we always return it.
|
||||
combine_io_events(mask, reader_events, writer_events) | IoEvents::HUP
|
||||
}
|
||||
|
||||
pub(super) fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
// To avoid loss of events, this must be compatible with
|
||||
// `Connected::poll`/`Listener::poll`.
|
||||
self.reader_pollee.register_observer(observer.clone(), mask);
|
||||
self.writer_pollee.register_observer(observer, mask);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
let reader_observer = self.reader_pollee.unregister_observer(observer);
|
||||
let writer_observer = self.writer_pollee.unregister_observer(observer);
|
||||
reader_observer.or(writer_observer)
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ use super::{
|
||||
UnixStreamSocket,
|
||||
};
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
events::IoEvents,
|
||||
fs::file_handle::FileLike,
|
||||
net::socket::{
|
||||
unix::addr::{UnixSocketAddrBound, UnixSocketAddrKey},
|
||||
@ -84,25 +84,6 @@ impl Listener {
|
||||
|
||||
combine_io_events(mask, reader_events, writer_events)
|
||||
}
|
||||
|
||||
pub(super) fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.backlog.register_observer(observer.clone(), mask)?;
|
||||
self.writer_pollee.register_observer(observer, mask);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
let reader_observer = self.backlog.unregister_observer(observer);
|
||||
let writer_observer = self.writer_pollee.unregister_observer(observer);
|
||||
reader_observer.or(writer_observer)
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for Listener {
|
||||
@ -229,22 +210,6 @@ impl Backlog {
|
||||
fn poll(&self, mask: IoEvents, poller: Option<&mut PollHandle>) -> IoEvents {
|
||||
self.pollee.poll(mask, poller)
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.pollee.register_observer(observer, mask);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.pollee.unregister_observer(observer)
|
||||
}
|
||||
}
|
||||
|
||||
impl Backlog {
|
||||
|
@ -10,7 +10,7 @@ use super::{
|
||||
listener::{get_backlog, Backlog, Listener},
|
||||
};
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
events::IoEvents,
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
utils::{InodeMode, Metadata, StatusFlags},
|
||||
@ -194,29 +194,6 @@ impl FileLike for UnixStreamSocket {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
match self.state.read().as_ref() {
|
||||
State::Init(init) => init.register_observer(observer, mask),
|
||||
State::Listen(listen) => listen.register_observer(observer, mask),
|
||||
State::Connected(connected) => connected.register_observer(observer, mask),
|
||||
}
|
||||
}
|
||||
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
match self.state.read().as_ref() {
|
||||
State::Init(init) => init.unregister_observer(observer),
|
||||
State::Listen(listen) => listen.unregister_observer(observer),
|
||||
State::Connected(connected) => connected.unregister_observer(observer),
|
||||
}
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "SockFS" and link `UnixStreamSocket` to it.
|
||||
|
@ -18,7 +18,7 @@ use ostd::sync::WaitQueue;
|
||||
|
||||
use super::SyscallReturn;
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
events::IoEvents,
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
file_table::{FdFlags, FileDesc},
|
||||
@ -242,22 +242,6 @@ impl FileLike for EventFile {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn register_observer(
|
||||
&self,
|
||||
observer: Weak<dyn crate::events::Observer<IoEvents>>,
|
||||
mask: IoEvents,
|
||||
) -> Result<()> {
|
||||
self.pollee.register_observer(observer, mask);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn unregister_observer(
|
||||
&self,
|
||||
observer: &Weak<dyn Observer<IoEvents>>,
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.pollee.unregister_observer(observer)
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "anonymous inode fs" and link `EventFile` to it.
|
||||
|
Reference in New Issue
Block a user