Refactor the implementation

This commit is contained in:
Jianfeng Jiang
2023-10-08 17:40:58 +08:00
committed by Tate, Hongliang Tian
parent 50761a5cc5
commit 0d6f6f001c
54 changed files with 433 additions and 326 deletions

View File

@ -1,7 +1,6 @@
use crate::{
fs::utils::{IoEvents, Pollee, Poller},
prelude::*,
};
use crate::events::IoEvents;
use crate::prelude::*;
use crate::process::signal::{Pollee, Poller};
use super::Iface;
use super::{IpAddress, IpEndpoint};

View File

@ -1,13 +1,12 @@
use core::sync::atomic::{AtomicBool, Ordering};
use crate::events::IoEvents;
use crate::fs::utils::StatusFlags;
use crate::net::iface::IpEndpoint;
use crate::process::signal::Poller;
use crate::{
fs::{
file_handle::FileLike,
utils::{IoEvents, Poller},
},
fs::file_handle::FileLike,
net::{
iface::{AnyBoundSocket, AnyUnboundSocket, RawUdpSocket},
poll_ifaces,
@ -259,7 +258,7 @@ impl Socket for DatagramSocket {
return_errno_with_message!(Errno::EAGAIN, "try to receive again");
}
// FIXME: deal with recvfrom timeout
poller.wait_interruptible(None)?;
poller.wait()?;
}
}
}

View File

@ -1,8 +1,9 @@
use core::sync::atomic::{AtomicBool, Ordering};
use crate::events::IoEvents;
use crate::net::iface::IpEndpoint;
use crate::process::signal::Poller;
use crate::{
fs::utils::{IoEvents, Poller},
net::{
iface::{AnyBoundSocket, RawTcpSocket},
poll_ifaces,
@ -58,7 +59,7 @@ impl ConnectedStream {
return_errno_with_message!(Errno::EAGAIN, "try to recv again");
}
// FIXME: deal with receive timeout
poller.wait_interruptible(None)?;
poller.wait()?;
}
}
}

View File

@ -1,6 +1,6 @@
use core::sync::atomic::{AtomicBool, Ordering};
use crate::fs::utils::{IoEvents, Poller};
use crate::events::IoEvents;
use crate::net::iface::Iface;
use crate::net::iface::IpEndpoint;
use crate::net::iface::{AnyBoundSocket, AnyUnboundSocket};
@ -8,6 +8,7 @@ use crate::net::poll_ifaces;
use crate::net::socket::ip::always_some::AlwaysSome;
use crate::net::socket::ip::common::{bind_socket, get_ephemeral_endpoint};
use crate::prelude::*;
use crate::process::signal::Poller;
pub struct InitStream {
inner: RwLock<Inner>,
@ -152,7 +153,7 @@ impl InitStream {
return_errno_with_message!(Errno::EAGAIN, "try connect again");
} else {
// FIXME: deal with connecting timeout
poller.wait_interruptible(None)?;
poller.wait()?;
}
}
}

View File

@ -1,9 +1,10 @@
use core::sync::atomic::{AtomicBool, Ordering};
use crate::events::IoEvents;
use crate::net::iface::{AnyUnboundSocket, BindPortConfig, IpEndpoint};
use crate::fs::utils::{IoEvents, Poller};
use crate::net::iface::{AnyBoundSocket, RawTcpSocket};
use crate::process::signal::Poller;
use crate::{net::poll_ifaces, prelude::*};
use super::connected::ConnectedStream;
@ -46,7 +47,7 @@ impl ListenStream {
return_errno_with_message!(Errno::EAGAIN, "try accept again");
}
// FIXME: deal with accept timeout
poller.wait_interruptible(None)?;
poller.wait()?;
}
continue;
};

View File

@ -1,7 +1,5 @@
use crate::fs::{
file_handle::FileLike,
utils::{IoEvents, Poller, StatusFlags},
};
use crate::events::IoEvents;
use crate::fs::{file_handle::FileLike, utils::StatusFlags};
use crate::net::socket::{
util::{
send_recv_flags::SendRecvFlags, shutdown_cmd::SockShutdownCmd,
@ -10,6 +8,7 @@ use crate::net::socket::{
Socket,
};
use crate::prelude::*;
use crate::process::signal::Poller;
use self::{connected::ConnectedStream, init::InitStream, listen::ListenStream};

View File

@ -1,7 +1,8 @@
use super::endpoint::Endpoint;
use crate::fs::utils::{IoEvents, Poller};
use crate::events::IoEvents;
use crate::net::socket::{unix::addr::UnixSocketAddrBound, SockShutdownCmd};
use crate::prelude::*;
use crate::process::signal::Poller;
pub(super) struct Connected {
local_endpoint: Arc<Endpoint>,

View File

@ -1,5 +1,7 @@
use crate::events::IoEvents;
use crate::process::signal::Poller;
use crate::{
fs::utils::{Channel, Consumer, IoEvents, Poller, Producer, StatusFlags},
fs::utils::{Channel, Consumer, Producer, StatusFlags},
net::socket::{unix::addr::UnixSocketAddrBound, SockShutdownCmd},
prelude::*,
};

View File

@ -1,9 +1,11 @@
use core::sync::atomic::{AtomicBool, Ordering};
use crate::events::IoEvents;
use crate::fs::fs_resolver::{split_path, FsPath};
use crate::fs::utils::{Dentry, InodeMode, InodeType, IoEvents, Pollee, Poller};
use crate::fs::utils::{Dentry, InodeMode, InodeType};
use crate::net::socket::unix::addr::{UnixSocketAddr, UnixSocketAddrBound};
use crate::prelude::*;
use crate::process::signal::{Pollee, Poller};
use super::connected::Connected;
use super::endpoint::Endpoint;

View File

@ -1,9 +1,11 @@
use super::{connected::Connected, endpoint::Endpoint, UnixStreamSocket};
use crate::events::IoEvents;
use crate::fs::file_handle::FileLike;
use crate::fs::utils::{Dentry, Inode, IoEvents, Pollee, Poller};
use crate::fs::utils::{Dentry, Inode};
use crate::net::socket::unix::addr::{UnixSocketAddr, UnixSocketAddrBound};
use crate::net::socket::SocketAddr;
use crate::prelude::*;
use crate::process::signal::{Pollee, Poller};
use core::sync::atomic::{AtomicBool, Ordering};
use keyable_arc::KeyableWeak;
@ -133,7 +135,7 @@ impl BacklogTable {
// FIXME: deal with accept timeout
if events.is_empty() {
poller.wait_interruptible(None)?;
poller.wait()?;
}
}
}

View File

@ -1,12 +1,14 @@
use crate::events::IoEvents;
use crate::fs::file_handle::FileLike;
use crate::fs::fs_resolver::FsPath;
use crate::fs::utils::{Dentry, InodeType, IoEvents, Poller, StatusFlags};
use crate::fs::utils::{Dentry, InodeType, StatusFlags};
use crate::net::socket::unix::addr::UnixSocketAddrBound;
use crate::net::socket::unix::UnixSocketAddr;
use crate::net::socket::util::send_recv_flags::SendRecvFlags;
use crate::net::socket::util::sockaddr::SocketAddr;
use crate::net::socket::{SockShutdownCmd, Socket};
use crate::prelude::*;
use crate::process::signal::Poller;
use super::connected::Connected;
use super::endpoint::Endpoint;