# protosocket-connection
`protosocket-connection` provides a flexible, asynchronous TCP connection handler. It's designed to efficiently manage bidirectional, message-oriented TCP streams with customizable serialization and deserialization.
## Key Features
- Low abstraction - no http or higher level constructs
- Asynchronous I/O using `mio` via `tokio`
- Customizable message types through `ConnectionBindings`
- Efficient buffer management and flexible error handling
## Flow Diagrams
The `poll()` function on `connection.rs` controls the lifecycle of the entire connection. You're recommended to read individual comments on the code to understand the flow, but below is a sequence diagram to get you started:
```mermaid
sequenceDiagram
participant P as Poll
participant IS as Inbound Socket
participant D as Deserializer
participant R as Reactor
participant S as Serializer
participant OS as Outbound Socket
P->>IS: Read from inbound socket
IS->>D: Raw data
D->>P: Deserialize inbound messages
P->>R: Submit inbound messages
R-->>P: Process messages
P->>S: Prepare and serialize outbound messages
S->>P: Serialized outbound bytes
P->>OS: Write to outbound socket
```