laminar/lib.rs
1//! Laminar is an application-level transport protocol which provides configurable reliability and ordering guarantees built on top of UDP.
2//! It focuses on fast-paced fps-games and provides a lightweight, message-based interface.
3//!
4//! Laminar was designed to be used within the [Amethyst][amethyst] game engine but is usable without it.
5//!
6//! [amethyst]: https://github.com/amethyst/amethyst
7//!
8//! # Concepts
9//!
10//! This library is loosely based off of [Gaffer on Games][gog] and has features similar to RakNet, Steam Socket, and netcode.io.
11//! The idea is to provide a native Rust low-level UDP-protocol which supports the use of cases of video games that require multiplayer features.
12//! The library itself provides a few low-level types of packets that provide different types of guarantees. The most
13//! basic are unreliable and reliable packets. Ordering, sequencing can be done on multiple streams.
14//! For more information, read the projects [README.md][readme], [book][book], [docs][docs] or [examples][examples].
15//!
16//! [gog]: https://gafferongames.com/
17//! [readme]: https://github.com/amethyst/laminar/blob/master/README.md
18//! [book]: https://github.com/amethyst/laminar/tree/master/docs/md_book
19//! [docs]: https://docs.rs/laminar/
20//! [examples]: https://github.com/amethyst/laminar/tree/master/examples
21
22#![warn(missing_docs)]
23#![allow(clippy::trivially_copy_pass_by_ref)]
24
25pub use self::config::Config;
26pub use self::error::{ErrorKind, Result};
27pub use self::net::{
28 Connection, ConnectionManager, ConnectionMessenger, DatagramSocket, LinkConditioner, Socket,
29 SocketEvent, VirtualConnection,
30};
31pub use self::packet::{DeliveryGuarantee, OrderingGuarantee, Packet};
32#[cfg(feature = "tester")]
33pub use self::throughput::ThroughputMonitoring;
34
35mod config;
36mod either;
37mod error;
38mod infrastructure;
39mod net;
40mod packet;
41mod protocol_version;
42mod sequence_buffer;
43
44#[cfg(feature = "tester")]
45mod throughput;
46
47#[cfg(test)]
48pub mod test_utils;