27 releases (5 breaking)

0.6.1 Oct 11, 2024
0.5.5 Sep 16, 2024
0.2.0 Jul 31, 2024

#862 in Web programming

Download history 393/week @ 2024-07-25 1333/week @ 2024-08-01 574/week @ 2024-08-08 199/week @ 2024-08-15 218/week @ 2024-08-22 194/week @ 2024-08-29 137/week @ 2024-09-05 440/week @ 2024-09-12 235/week @ 2024-09-19 122/week @ 2024-09-26 100/week @ 2024-10-03 232/week @ 2024-10-10 50/week @ 2024-10-17 151/week @ 2024-10-24 128/week @ 2024-10-31

573 downloads per month
Used in 3 crates

Apache-2.0

31KB
498 lines

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:

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

Dependencies

~4–12MB
~130K SLoC