Struct rust_tcp_ipc::Client
source · pub struct Client<P: Protocol> { /* private fields */ }
Expand description
This is the main type of the library. Here all the logic is bundle. It can be used to easily send and receive messages via TCP, allowing for many different protcols to be used.
Implementations
sourceimpl<P: Protocol> Client<P>
impl<P: Protocol> Client<P>
sourcepub fn connect<T: ToSocketAddrs>(
socket_addresses: T,
config: ClientConfig
) -> Result<Client<P>, ConnectErrors>
pub fn connect<T: ToSocketAddrs>(
socket_addresses: T,
config: ClientConfig
) -> Result<Client<P>, ConnectErrors>
This connects the client to the server.
Example
let config = ClientConfig {
connect_wait_time_ms: 5_000,
read_iteration_wait_time_ns: 1_000,
shutdown_wait_time_in_ns: 1_000_000,
};
let mut client =
Client::<ProtocolExample>::connect("127.0.0.1:6666", config).expect("connecting failed");
sourcepub fn update_busy_state(
&mut self,
new_busy_state: P::BusyStates
) -> BusyStateUpdateResult
pub fn update_busy_state(
&mut self,
new_busy_state: P::BusyStates
) -> BusyStateUpdateResult
sourcepub fn get_message(&mut self) -> Result<Option<Message<P>>, ReadThreadErrors<P>>
pub fn get_message(&mut self) -> Result<Option<Message<P>>, ReadThreadErrors<P>>
This function check if a message was received and returns it, if so. If no message is available (or if a message is only partial available and more data is neceesary), Ok(None) is return.
Example
let message = client.get_message();
sourcepub fn clear_message_queue(
&mut self,
sleep_time: Duration
) -> Result<(), ReadThreadErrors<P>>
pub fn clear_message_queue(
&mut self,
sleep_time: Duration
) -> Result<(), ReadThreadErrors<P>>
This function attemps to clear the message queue. To do this, it waits a given duration. Then it calls get_message until no message is received, or an error is received (which is returned in turn).
Example
let result = client.clear_message_queue(std::time::Duration::from_micros(10_000));
sourcepub fn await_message(
&mut self,
maximal_wait_time: Duration,
iteration_wait_time: Duration
) -> Result<Option<Message<P>>, ReadThreadErrors<P>>
pub fn await_message(
&mut self,
maximal_wait_time: Duration,
iteration_wait_time: Duration
) -> Result<Option<Message<P>>, ReadThreadErrors<P>>
This function awaits for a message.
Example
let message = client.await_message(std::time::Duration::from_micros(10_000), std::time::Duration::from_nanos(2_000));
sourcepub fn write_message(
&mut self,
command: P::Commands,
message_: &[u8]
) -> Result<(), WriteMessageErrors>
pub fn write_message(
&mut self,
command: P::Commands,
message_: &[u8]
) -> Result<(), WriteMessageErrors>
This function writes/sends a message. The message is given as command (as enum-variant) & a payload/message. Then the message header is added and send via TCP, including the message.
Example
let message = client.write_message(ProtocolExampleCommands::Start, "ok".as_bytes());
sourcepub fn shutdown(self) -> Result<(), ShutdownError>
pub fn shutdown(self) -> Result<(), ShutdownError>
Attemps to close the TCP-connection Since the receiving side might not implement any shutdown functionality, this is optionally (and not included in Drop).