p2p/connection/incoming_effectful/
p2p_connection_incoming_effectful_actions.rs1use crate::{
2 connection::{incoming::P2pConnectionIncomingInitOpts, P2pConnectionEffectfulAction},
3 identity::PublicKey,
4 webrtc::{ConnectionAuth, ConnectionAuthEncrypted},
5 P2pState, PeerId,
6};
7use openmina_core::ActionEvent;
8use serde::{Deserialize, Serialize};
9
10#[derive(Serialize, Deserialize, Debug, Clone, ActionEvent)]
11#[action_event(fields(debug(opts), display(peer_id), display(error)))]
12pub enum P2pConnectionIncomingEffectfulAction {
13 Init { opts: P2pConnectionIncomingInitOpts },
15 ConnectionAuthorizationEncryptAndSend {
16 peer_id: PeerId,
17 other_pub_key: PublicKey,
18 auth: ConnectionAuth,
19 },
20 ConnectionAuthorizationDecryptAndCheck {
21 peer_id: PeerId,
22 other_pub_key: PublicKey,
23 expected_auth: ConnectionAuth,
24 auth: ConnectionAuthEncrypted,
25 },
26}
27
28impl redux::EnablingCondition<P2pState> for P2pConnectionIncomingEffectfulAction {
29 fn is_enabled(&self, _: &P2pState, _: redux::Timestamp) -> bool {
30 true
31 }
32}
33
34impl From<P2pConnectionIncomingEffectfulAction> for crate::P2pEffectfulAction {
35 fn from(a: P2pConnectionIncomingEffectfulAction) -> crate::P2pEffectfulAction {
36 crate::P2pEffectfulAction::Connection(P2pConnectionEffectfulAction::Incoming(a))
37 }
38}