diff --git a/src/net/p2p.rs b/src/net/p2p.rs index b2db46feb..221187cd9 100644 --- a/src/net/p2p.rs +++ b/src/net/p2p.rs @@ -5,7 +5,7 @@ use std::net::SocketAddr; use std::sync::Arc; use crate::error::Result; -use crate::net::sessions::SeedSession; +use crate::net::sessions::{SeedSession, InboundSession}; use crate::net::{Channel, ChannelPtr, Hosts, HostsPtr, Connector, Settings, SettingsPtr}; pub type Pending = Mutex>>; @@ -41,10 +41,10 @@ impl P2p { /// Synchronize the blockchain and then begin long running sessions, /// call after start() is invoked. - pub fn run() { - //let inbound = InboundSession::new(Arc::downgrade(&self)); - //let inbound_task = inbound.start(executor.clone()); - //inbound_task.await; + pub async fn run(self: Arc, executor: Arc>) -> Result<()> { + let inbound = InboundSession::new(Arc::downgrade(&self)); + let inbound_task = inbound.start(executor.clone()); + inbound_task.await } pub async fn store(self: Arc, channel: ChannelPtr) { diff --git a/src/net/sessions/inbound_session.rs b/src/net/sessions/inbound_session.rs new file mode 100644 index 000000000..24ca99ffb --- /dev/null +++ b/src/net/sessions/inbound_session.rs @@ -0,0 +1,30 @@ +use async_executor::Executor; +use log::*; +use std::net::SocketAddr; +use std::sync::{Arc, Weak}; + +use crate::error::{Error, Result}; +use crate::net::sessions::Session; +use crate::net::{ChannelPtr, HostsPtr, Connector, P2p, SettingsPtr}; +use crate::net::protocols::{ProtocolPing, ProtocolSeed}; + +pub struct InboundSession { + p2p: Weak +} + +impl InboundSession { + pub fn new(p2p: Weak) -> Arc { + Arc::new(Self { p2p }) + } + + pub async fn start(self: Arc, executor: Arc>) -> Result<()> { + Ok(()) + } +} + +impl Session for InboundSession { + fn p2p(&self) -> Arc { + self.p2p.upgrade().unwrap() + } +} + diff --git a/src/net/sessions/mod.rs b/src/net/sessions/mod.rs index e93d0233c..21aa9e1dc 100644 --- a/src/net/sessions/mod.rs +++ b/src/net/sessions/mod.rs @@ -1,5 +1,7 @@ +pub mod inbound_session; pub mod seed_session; pub mod session; +pub use inbound_session::InboundSession; pub use seed_session::SeedSession; pub use session::Session;