소스 검색

net/acceptor: remove Mutex<Option<SessionWeakPtr>> in Acceptor, instead simply use SessionWeakPtr

x 2 년 전
부모
커밋
18f7a27f66
2개의 변경된 파일6개의 추가작업 그리고 7개의 파일을 삭제
  1. 5 5
      src/net/acceptor.rs
  2. 1 2
      src/net/session/inbound_session.rs

+ 5 - 5
src/net/acceptor.rs

@@ -19,7 +19,7 @@
 use std::sync::Arc;
 
 use log::error;
-use smol::{lock::Mutex, Executor};
+use smol::Executor;
 use url::Url;
 
 use super::{
@@ -39,16 +39,16 @@ pub type AcceptorPtr = Arc<Acceptor>;
 pub struct Acceptor {
     channel_subscriber: SubscriberPtr<Result<ChannelPtr>>,
     task: StoppableTaskPtr,
-    pub session: Mutex<Option<SessionWeakPtr>>,
+    session: SessionWeakPtr,
 }
 
 impl Acceptor {
     /// Create new Acceptor object.
-    pub fn new() -> AcceptorPtr {
+    pub fn new(session: SessionWeakPtr) -> AcceptorPtr {
         Arc::new(Self {
             channel_subscriber: Subscriber::new(),
             task: StoppableTask::new(),
-            session: Mutex::new(None),
+            session,
         })
     }
 
@@ -86,7 +86,7 @@ impl Acceptor {
         loop {
             match listener.next().await {
                 Ok((stream, url)) => {
-                    let session = self.session.lock().await.clone().unwrap();
+                    let session = self.session.clone();
                     let channel = Channel::new(stream, url, session).await;
                     self.channel_subscriber.notify(Ok(channel)).await;
                 }

+ 1 - 2
src/net/session/inbound_session.rs

@@ -117,9 +117,8 @@ impl InboundSession {
     ) -> Result<()> {
         info!(target: "net::inbound_session", "[P2P] Starting Inbound session #{} on {}", index, accept_addr);
         // Generate a new acceptor for this inbound session
-        let acceptor = Acceptor::new();
         let parent = Arc::downgrade(&self);
-        *acceptor.session.lock().await = Some(parent);
+        let acceptor = Acceptor::new(parent);
 
         // Start listener
         let result = acceptor.clone().start(accept_addr, ex).await;