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");
|
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 {
|
fn metadata(&self) -> Metadata {
|
||||||
// This is a dummy implementation.
|
// This is a dummy implementation.
|
||||||
// TODO: Add "anonymous inode fs" and link `EpollFile` to it.
|
// TODO: Add "anonymous inode fs" and link `EpollFile` to it.
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
//! Opened File Handle
|
//! Opened File Handle
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
|
||||||
fs::{
|
fs::{
|
||||||
device::Device,
|
device::Device,
|
||||||
utils::{AccessMode, FallocMode, InodeMode, IoctlCmd, Metadata, SeekFrom, StatusFlags},
|
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");
|
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>> {
|
fn as_socket(self: Arc<Self>) -> Option<Arc<dyn Socket>> {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ use super::{
|
|||||||
utils::{AccessMode, Channel, Consumer, InodeMode, InodeType, Metadata, Producer, StatusFlags},
|
utils::{AccessMode, Channel, Consumer, InodeMode, InodeType, Metadata, Producer, StatusFlags},
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
events::IoEvents,
|
||||||
prelude::*,
|
prelude::*,
|
||||||
process::{
|
process::{
|
||||||
signal::{PollHandle, Pollable},
|
signal::{PollHandle, Pollable},
|
||||||
@ -104,21 +104,6 @@ impl FileLike for PipeReader {
|
|||||||
rdev: 0,
|
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 {
|
pub struct PipeWriter {
|
||||||
@ -188,21 +173,6 @@ impl FileLike for PipeWriter {
|
|||||||
rdev: 0,
|
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<()> {
|
fn check_status_flags(status_flags: StatusFlags) -> Result<()> {
|
||||||
|
@ -8,7 +8,7 @@ use takeable::Takeable;
|
|||||||
use self::{bound::BoundDatagram, unbound::UnboundDatagram};
|
use self::{bound::BoundDatagram, unbound::UnboundDatagram};
|
||||||
use super::{common::get_ephemeral_endpoint, UNSPECIFIED_LOCAL_ENDPOINT};
|
use super::{common::get_ephemeral_endpoint, UNSPECIFIED_LOCAL_ENDPOINT};
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
events::IoEvents,
|
||||||
fs::{
|
fs::{
|
||||||
file_handle::FileLike,
|
file_handle::FileLike,
|
||||||
utils::{InodeMode, Metadata, StatusFlags},
|
utils::{InodeMode, Metadata, StatusFlags},
|
||||||
@ -259,22 +259,6 @@ impl FileLike for DatagramSocket {
|
|||||||
Ok(())
|
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 {
|
fn metadata(&self) -> Metadata {
|
||||||
// This is a dummy implementation.
|
// This is a dummy implementation.
|
||||||
// TODO: Add "SockFS" and link `DatagramSocket` to it.
|
// TODO: Add "SockFS" and link `DatagramSocket` to it.
|
||||||
|
@ -14,7 +14,7 @@ use util::TcpOptionSet;
|
|||||||
|
|
||||||
use super::UNSPECIFIED_LOCAL_ENDPOINT;
|
use super::UNSPECIFIED_LOCAL_ENDPOINT;
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
events::IoEvents,
|
||||||
fs::{
|
fs::{
|
||||||
file_handle::FileLike,
|
file_handle::FileLike,
|
||||||
utils::{InodeMode, Metadata, StatusFlags},
|
utils::{InodeMode, Metadata, StatusFlags},
|
||||||
@ -416,22 +416,6 @@ impl FileLike for StreamSocket {
|
|||||||
Some(self)
|
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 {
|
fn metadata(&self) -> Metadata {
|
||||||
// This is a dummy implementation.
|
// This is a dummy implementation.
|
||||||
// TODO: Add "SockFS" and link `StreamSocket` to it.
|
// TODO: Add "SockFS" and link `StreamSocket` to it.
|
||||||
|
@ -5,7 +5,7 @@ use core::ops::Deref;
|
|||||||
use ostd::sync::PreemptDisabled;
|
use ostd::sync::PreemptDisabled;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
events::IoEvents,
|
||||||
fs::utils::{Channel, Consumer, Producer},
|
fs::utils::{Channel, Consumer, Producer},
|
||||||
net::socket::{
|
net::socket::{
|
||||||
unix::{addr::UnixSocketAddrBound, UnixSocketAddr},
|
unix::{addr::UnixSocketAddrBound, UnixSocketAddr},
|
||||||
@ -96,25 +96,6 @@ impl Connected {
|
|||||||
|
|
||||||
combine_io_events(mask, reader_events, writer_events)
|
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(
|
pub(super) fn combine_io_events(
|
||||||
|
@ -7,7 +7,7 @@ use super::{
|
|||||||
listener::Listener,
|
listener::Listener,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
events::IoEvents,
|
||||||
net::socket::{
|
net::socket::{
|
||||||
unix::addr::{UnixSocketAddr, UnixSocketAddrBound},
|
unix::addr::{UnixSocketAddr, UnixSocketAddrBound},
|
||||||
SockShutdownCmd,
|
SockShutdownCmd,
|
||||||
@ -122,25 +122,4 @@ impl Init {
|
|||||||
// Meanwhile, it is in `IoEvents::ALWAYS_POLL`, so we always return it.
|
// Meanwhile, it is in `IoEvents::ALWAYS_POLL`, so we always return it.
|
||||||
combine_io_events(mask, reader_events, writer_events) | IoEvents::HUP
|
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,
|
UnixStreamSocket,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
events::IoEvents,
|
||||||
fs::file_handle::FileLike,
|
fs::file_handle::FileLike,
|
||||||
net::socket::{
|
net::socket::{
|
||||||
unix::addr::{UnixSocketAddrBound, UnixSocketAddrKey},
|
unix::addr::{UnixSocketAddrBound, UnixSocketAddrKey},
|
||||||
@ -84,25 +84,6 @@ impl Listener {
|
|||||||
|
|
||||||
combine_io_events(mask, reader_events, writer_events)
|
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 {
|
impl Drop for Listener {
|
||||||
@ -229,22 +210,6 @@ impl Backlog {
|
|||||||
fn poll(&self, mask: IoEvents, poller: Option<&mut PollHandle>) -> IoEvents {
|
fn poll(&self, mask: IoEvents, poller: Option<&mut PollHandle>) -> IoEvents {
|
||||||
self.pollee.poll(mask, poller)
|
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 {
|
impl Backlog {
|
||||||
|
@ -10,7 +10,7 @@ use super::{
|
|||||||
listener::{get_backlog, Backlog, Listener},
|
listener::{get_backlog, Backlog, Listener},
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
events::IoEvents,
|
||||||
fs::{
|
fs::{
|
||||||
file_handle::FileLike,
|
file_handle::FileLike,
|
||||||
utils::{InodeMode, Metadata, StatusFlags},
|
utils::{InodeMode, Metadata, StatusFlags},
|
||||||
@ -194,29 +194,6 @@ impl FileLike for UnixStreamSocket {
|
|||||||
Ok(())
|
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 {
|
fn metadata(&self) -> Metadata {
|
||||||
// This is a dummy implementation.
|
// This is a dummy implementation.
|
||||||
// TODO: Add "SockFS" and link `UnixStreamSocket` to it.
|
// TODO: Add "SockFS" and link `UnixStreamSocket` to it.
|
||||||
|
@ -18,7 +18,7 @@ use ostd::sync::WaitQueue;
|
|||||||
|
|
||||||
use super::SyscallReturn;
|
use super::SyscallReturn;
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{IoEvents, Observer},
|
events::IoEvents,
|
||||||
fs::{
|
fs::{
|
||||||
file_handle::FileLike,
|
file_handle::FileLike,
|
||||||
file_table::{FdFlags, FileDesc},
|
file_table::{FdFlags, FileDesc},
|
||||||
@ -242,22 +242,6 @@ impl FileLike for EventFile {
|
|||||||
Ok(())
|
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 {
|
fn metadata(&self) -> Metadata {
|
||||||
// This is a dummy implementation.
|
// This is a dummy implementation.
|
||||||
// TODO: Add "anonymous inode fs" and link `EventFile` to it.
|
// TODO: Add "anonymous inode fs" and link `EventFile` to it.
|
||||||
|
Reference in New Issue
Block a user