Remove {,un}register_observer

This commit is contained in:
Ruihan Li
2024-09-02 22:06:29 +08:00
committed by Tate, Hongliang Tian
parent 054c64542b
commit ac71234b89
10 changed files with 8 additions and 217 deletions

View File

@ -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.

View File

@ -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
}

View File

@ -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<()> {

View File

@ -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.

View File

@ -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.

View File

@ -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(

View File

@ -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)
}
}

View File

@ -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 {

View File

@ -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.

View File

@ -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.