Fix observer missing in socket for mongoose support

This commit is contained in:
Fabing Li
2024-03-25 16:01:26 +08:00
committed by Tate, Hongliang Tian
parent a2e9b0aaae
commit 30a2553a70
8 changed files with 122 additions and 4 deletions

View File

@ -2,7 +2,7 @@
use super::{connected::ConnectedStream, init::InitStream};
use crate::{
events::IoEvents,
events::{IoEvents, Observer},
net::iface::{AnyBoundSocket, IpEndpoint, RawTcpSocket},
prelude::*,
process::signal::Pollee,
@ -71,6 +71,26 @@ impl ConnectingStream {
self.update_io_events(pollee);
}
pub fn register_observer(
&self,
pollee: &Pollee,
observer: Weak<dyn Observer<IoEvents>>,
mask: IoEvents,
) -> Result<()> {
pollee.register_observer(observer, mask);
Ok(())
}
pub fn unregister_observer(
&self,
pollee: &Pollee,
observer: &Weak<dyn Observer<IoEvents>>,
) -> Result<Weak<dyn Observer<IoEvents>>> {
pollee
.unregister_observer(observer)
.ok_or_else(|| Error::with_message(Errno::EINVAL, "fails to unregister observer"))
}
pub(super) fn update_io_events(&self, pollee: &Pollee) {
if self.conn_result.read().is_some() {
return;