1#![no_std]
4#![allow(missing_docs)]
5#![allow(clippy::missing_safety_doc)]
6#![warn(missing_debug_implementations)]
7#![deny(unused_qualifications)]
8
9extern crate alloc;
10
11pub mod error;
12pub mod header;
13pub mod magic;
14pub mod types;
15pub mod request;
16pub mod response;
17pub mod emsg;
18pub mod serializer;
19pub mod msgpack;
20pub mod config;
21pub mod shm;
22pub mod zero;
23pub mod arena;
24pub mod shandle;
25pub mod sproto;
26pub mod chunk;
27pub mod version;
28pub mod features;
29pub mod negotiation;
30
31pub use error::{ProtocolError, Result};
32pub use header::MessageHeader;
33pub use magic::*;
34pub use types::*;
35pub use emsg::ErrorMessage;
36pub use request::Request;
37pub use response::Response;
38pub use msgpack::{default_serializer, MessagePackSerializer, MSGPACK};
39pub use serializer::Serializer;
40pub use config::SerializerConfig;
41pub use shm::ShmView;
42pub use zero::{ZeroCopyRequest, ZeroCopyResponse};
43pub use arena::ArenaSlice;
44pub use shandle::{StreamHandle, StreamError};
45pub use sproto::*;
46pub use version::{ProtocolVersion, CURRENT_VERSION, MAX_VERSION, MIN_VERSION, SUPPORTED_VERSIONS, V1_0, V1_1, V1_2};
47pub use features::{has_feature, FEATURE_NONE};
48pub use negotiation::{negotiate_version, validate_version};
49
50pub mod prelude {
51 pub use crate::arena::{ArenaConfig, ArenaRef, ArenaSlice};
52 pub use crate::chunk::{Chunk, ChunkFlags, ChunkedStream};
53 pub use crate::config::SerializerConfig;
54 pub use crate::error::{ProtocolError, Result};
55 pub use crate::features::{has_feature, feature_flags, FEATURE_NONE, BATCHING, STREAMING};
56 pub use crate::header::MessageHeader;
57 pub use crate::magic::{
58 CONTROL_REGION_SIZE, HEADER_SIZE, MAX_PAYLOAD_SIZE, MEMLINK_MAGIC, MIN_PROTOCOL_VERSION,
59 PROTOCOL_VERSION,
60 };
61 pub use crate::msgpack::{default_serializer, MessagePackSerializer, MSGPACK};
62 pub use crate::negotiation::{negotiate_version, validate_version};
63 pub use crate::serializer::Serializer;
64 #[cfg(feature = "shm")]
65 pub use crate::shm::{
66 RingBuffer, ShmPriority, Platform, MmapSegment, ControlRegion,
67 Futex, PriorityRingBuffer, ShmTransport,
68 };
69 pub use crate::shm::{is_aligned, ShmView, SHM_ALIGNMENT};
70 pub use crate::shandle::{StreamHandle, StreamError};
71 pub use crate::sproto::{
72 StreamState, StreamMode, STREAM_HANDLE_SIZE, STREAM_HEADER_SIZE,
73 DEFAULT_STREAM_TIMEOUT_NS, MAX_STREAM_TIMEOUT_NS,
74 };
75 pub use crate::types::{
76 MethodHash, MessageType, ModuleId, Priority, RequestId, SpanId, StatusCode, TraceId,
77 };
78 pub use crate::version::{
79 ProtocolVersion, CURRENT_VERSION, MAX_VERSION, MIN_VERSION, SUPPORTED_VERSIONS, V1_0, V1_1,
80 V1_2,
81 };
82 pub use crate::zero::{ZeroCopyRequest, ZeroCopyResponse};
83 pub use crate::{ErrorMessage, Request, Response};
84}