diff --git a/src/runtime2/component/component_internet.rs b/src/runtime2/component/component_internet.rs index 4d508f2545e458c5747fd9fdd2eed7fe9d269b92..8d2f67a13e88cf98e39c0edd0eddb4eb2043896c 100644 --- a/src/runtime2/component/component_internet.rs +++ b/src/runtime2/component/component_internet.rs @@ -24,11 +24,15 @@ impl SocketState { } } +// ----------------------------------------------------------------------------- +// ComponentTcpClient +// ----------------------------------------------------------------------------- + /// States from the point of view of the component that is connecting to this /// TCP component (i.e. from the point of view of attempting to interface with /// a socket). #[derive(PartialEq, Debug)] -enum SyncState { +enum ClientSyncState { AwaitingCmd, Getting, Putting, @@ -39,7 +43,7 @@ enum SyncState { pub struct ComponentTcpClient { // Properties for the tcp socket socket_state: SocketState, - sync_state: SyncState, + sync_state: ClientSyncState, poll_ticket: Option, inbox_main: InboxMain, inbox_backup: InboxBackup, @@ -137,12 +141,12 @@ impl Component for ComponentTcpClient { // When in non-sync mode match &mut self.socket_state { SocketState::Connected(_socket) => { - if self.sync_state == SyncState::FinishSyncThenQuit { + if self.sync_state == ClientSyncState::FinishSyncThenQuit { // Previous request was to let the component shut down self.exec_state.set_as_start_exit(ExitReason::Termination); } else { // Reset for a new request - self.sync_state = SyncState::AwaitingCmd; + self.sync_state = ClientSyncState::AwaitingCmd; component::default_handle_sync_start( &mut self.exec_state, &mut self.inbox_main, sched_ctx, comp_ctx, &mut self.consensus ); @@ -160,7 +164,7 @@ impl Component for ComponentTcpClient { CompMode::Sync => { // When in sync mode: wait for a command to come in match self.sync_state { - SyncState::AwaitingCmd => { + ClientSyncState::AwaitingCmd => { match component::default_attempt_get( &mut self.exec_state, self.pdl_input_port_id, PortInstruction::NoSource, &mut self.inbox_main, &mut self.inbox_backup, sched_ctx, comp_ctx, @@ -180,16 +184,16 @@ impl Component for ComponentTcpClient { self.byte_buffer.push(value.as_uint8()); } - self.sync_state = SyncState::Putting; + self.sync_state = ClientSyncState::Putting; } else if tag_value == self.input_union_receive_tag_value { // Component requires a `recv` - self.sync_state = SyncState::Getting; + self.sync_state = ClientSyncState::Getting; } else if tag_value == self.input_union_finish_tag_value { // Component requires us to end the sync round - self.sync_state = SyncState::FinishSync; + self.sync_state = ClientSyncState::FinishSync; } else if tag_value == self.input_union_shutdown_tag_value { // Component wants to close the connection - self.sync_state = SyncState::FinishSyncThenQuit; + self.sync_state = ClientSyncState::FinishSyncThenQuit; } else { unreachable!("got tag_value {}", tag_value) } @@ -205,7 +209,7 @@ impl Component for ComponentTcpClient { } } }, - SyncState::Putting => { + ClientSyncState::Putting => { // We're supposed to send a user-supplied message fully // over the socket. But we might end up blocking. In // that case the component goes to sleep until it is @@ -231,7 +235,7 @@ impl Component for ComponentTcpClient { component::default_handle_sync_end(&mut self.exec_state, sched_ctx, comp_ctx, &mut self.consensus); return CompScheduling::Requeue; }, - SyncState::Getting => { + ClientSyncState::Getting => { // We're going to try and receive a single message. If // this causes us to end up blocking the component // goes to sleep until it is polled. @@ -253,7 +257,7 @@ impl Component for ComponentTcpClient { return CompScheduling::Immediate; } else { let scheduling = send_result.unwrap(); - self.sync_state = SyncState::AwaitingCmd; + self.sync_state = ClientSyncState::AwaitingCmd; return scheduling; } }, @@ -266,7 +270,7 @@ impl Component for ComponentTcpClient { } } }, - SyncState::FinishSync | SyncState::FinishSyncThenQuit => { + ClientSyncState::FinishSync | ClientSyncState::FinishSyncThenQuit => { component::default_handle_sync_end(&mut self.exec_state, sched_ctx, comp_ctx, &mut self.consensus); return CompScheduling::Requeue; }, @@ -274,7 +278,7 @@ impl Component for ComponentTcpClient { }, CompMode::BlockedGet => { // Entered when awaiting a new command - debug_assert_eq!(self.sync_state, SyncState::AwaitingCmd); + debug_assert_eq!(self.sync_state, ClientSyncState::AwaitingCmd); return CompScheduling::Sleep; }, CompMode::SyncEnd | CompMode::BlockedPut => @@ -317,7 +321,7 @@ impl ComponentTcpClient { return Self{ socket_state: SocketState::Connected(socket.unwrap()), - sync_state: SyncState::AwaitingCmd, + sync_state: ClientSyncState::AwaitingCmd, poll_ticket: None, inbox_main: vec![None], inbox_backup: Vec::new(), @@ -379,4 +383,9 @@ impl ComponentTcpClient { return value_group; } -} \ No newline at end of file +} + +// ----------------------------------------------------------------------------- +// ComponentTcpListener +// ----------------------------------------------------------------------------- +