Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
node: Move state transition code to session
Alexis Sellier committed 3 years ago
commit 71561a8e12951001410a942178c9aede81457ccd
parent 011923f1dff08562b79b5d6ae902e5301fc08044
2 files changed +15 -10
modified radicle-node/src/service.rs
@@ -603,16 +603,8 @@ where
        }

        if let Some(session) = self.sessions.get_mut(&remote) {
-
            if let session::State::Connected { protocol, .. } = &mut session.state {
-
                if let session::Protocol::Fetch { .. } = protocol {
-
                    *protocol = session::Protocol::default();
-
                } else {
-
                    panic!(
-
                        "Unexpected session state for {}: expected 'fetch' protocol, got 'gossip'",
-
                        session.id
-
                    );
-
                }
-
            }
+
            // Transition session back to gossip protocol.
+
            session.to_gossip();
            // Drain any messages in the session's outbox, which might have accumulated during the
            // fetch, and send them to the peer.
            self.reactor.drain(session);
modified radicle-node/src/service/session.rs
@@ -250,6 +250,19 @@ impl Session {
        *protocol = Protocol::Fetch { rid };
    }

+
    pub fn to_gossip(&mut self) {
+
        if let State::Connected { protocol, .. } = &mut self.state {
+
            if let Protocol::Fetch { .. } = protocol {
+
                *protocol = Protocol::default();
+
            } else {
+
                panic!(
+
                    "Unexpected session state for {}: expected 'fetch' protocol, got 'gossip'",
+
                    self.id
+
                );
+
            }
+
        }
+
    }
+

    pub fn to_connecting(&mut self) {
        assert!(
            self.is_disconnected(),