Crate connect[][src]

This crate provides a simple brokerless message-queue abstraction over asynchronous network streams.

Why?

When building networked applications, developers shouldn't have to focus on repeatedly solving the problem of reliable, fault-tolerant message delivery over byte-streams. By using a message queue abstraction, crate users can focus on core application logic and leave the low-level networking and message-queue guarantees to the abstraction.

Examples

Please use the examples provided to help understand crate usage.

Protobuf

This crate relies on the use of Protocol Buffers due to it being widely adopted and industry-proven. All messages are Protobuf messages that are packed into a Protobuf Any type and then sent over the wire. Message recipients must decide what Protobuf message type it is, and correspondingly unpack the Any into a particular message type.

Protobuf was chosen when the library hit a roadblock with Rust's TypeId potentially not being consistent between Rust compiler versions. The crate requires a consistent way to determine what type of message is received, so it can appropriately deserialize the message from network bytes. Until the Rust ecosystem around reflection improves, the crate will use Protobuf to fill the void.

Modules

tcp

TCP transport client and listener implementations.

tls

TLS transport client and listener implementations.

Structs

Connection

Wrapper around a ConnectionReader and ConnectionWriter to read and write on a network connection

ConnectionReader

An interface to read messages from the network connection

ConnectionWriter

An interface to write messages to the network connection

Traits

SinkExt

An extension trait for Sinks that provides a variety of convenient combinator functions.

StreamExt

An extension trait for Streams that provides a variety of convenient combinator functions.