use std::collections::HashMap;
use crate::{
DialerId, UnixTimestamp,
actors::{
document::io::DocumentIoResult,
messages::{DocDialerState, DocMessage, HubToDocMsgPayload},
},
io::IoResult,
};
#[derive(Debug)]
pub(crate) enum ActorInput {
Terminate,
HandleDocMessage {
connection_id: crate::ConnectionId,
message: DocMessage,
received_at: UnixTimestamp,
},
NewConnection {
connection_id: crate::ConnectionId,
peer_id: crate::PeerId,
},
ConnectionClosed {
connection_id: crate::ConnectionId,
},
IoComplete(IoResult<DocumentIoResult>),
Request,
Tick,
DialerStatesChanged {
dialers: HashMap<DialerId, DocDialerState>,
},
}
impl From<HubToDocMsgPayload> for ActorInput {
fn from(message: HubToDocMsgPayload) -> Self {
match message {
HubToDocMsgPayload::Terminate => ActorInput::Terminate,
HubToDocMsgPayload::HandleDocMessage {
connection_id,
message,
received_at,
} => ActorInput::HandleDocMessage {
connection_id,
message,
received_at,
},
HubToDocMsgPayload::NewConnection {
connection_id,
peer_id,
} => ActorInput::NewConnection {
connection_id,
peer_id,
},
HubToDocMsgPayload::ConnectionClosed { connection_id } => {
ActorInput::ConnectionClosed { connection_id }
}
HubToDocMsgPayload::RequestAgain => ActorInput::Request,
HubToDocMsgPayload::DialerStatesChanged { dialers } => {
ActorInput::DialerStatesChanged { dialers }
}
}
}
}