Skip to main content

bp7/
lib.rs

1//! Rust implementation of dtn Bundle Protocol Version 7 ([RFC 9171](https://datatracker.ietf.org/doc/rfc9171/))
2
3//!
4//! # Examples
5//!
6//! ```
7//! use bp7::{bundle, canonical, crc, dtntime, eid, primary, flags::BundleControlFlags, flags::BlockControlFlags};
8//! use std::time::Duration;
9//!
10//! let dst = eid::EndpointID::with_dtn("node2/inbox").unwrap();
11//! let src = eid::EndpointID::with_dtn("node1/123456").unwrap();
12//! //let now = dtntime::CreationTimestamp::now();
13//! let day0 = dtntime::CreationTimestamp::with_time_and_seq(dtntime::DTN_TIME_EPOCH, 0);
14//! let pblock = primary::PrimaryBlockBuilder::default()
15//!     .bundle_control_flags(
16//!         (BundleControlFlags::BUNDLE_MUST_NOT_FRAGMENTED | BundleControlFlags::BUNDLE_STATUS_REQUEST_DELIVERY).bits(),
17//!     )
18//!     .destination(dst)
19//!     .source(src.clone())
20//!     .report_to(src)
21//!     .creation_timestamp(day0)
22//!     .lifetime(Duration::from_secs(60 * 60))
23//!     .build()
24//!     .unwrap();
25//! let mut b = bundle::BundleBuilder::default()
26//!     .primary(pblock)
27//!     .canonicals(vec![canonical::new_payload_block(BlockControlFlags::empty(), b"ABC".to_vec())])
28//!     .build()
29//!     .unwrap();
30//! b.set_crc(crc::CRC_16);
31//! let serialized = b.to_cbor();
32//! let binary_bundle = [159, 137, 7, 26, 0, 2, 0, 4, 1, 130, 1, 109, 47, 47, 110, 111, 100, 101, 50,
33//!     47, 105, 110, 98, 111, 120, 130, 1, 110, 47, 47, 110, 111, 100, 101, 49, 47, 49, 50, 51, 52,
34//!     53, 54, 130, 1, 110, 47, 47, 110, 111, 100, 101, 49, 47, 49, 50, 51, 52, 53, 54, 130, 0, 0,
35//!     26, 0, 54, 238, 128, 66, 188, 152, 134, 1, 1, 0, 1, 67, 65, 66, 67, 66, 15, 86, 255];
36//! assert_eq!(&binary_bundle[..], &serialized[..]);
37//! ```
38//!
39//!
40
41pub mod administrative_record;
42pub mod bundle;
43pub mod canonical;
44pub mod crc;
45pub mod dtntime;
46pub mod eid;
47pub mod error;
48pub mod ffi;
49pub mod flags;
50pub mod helpers;
51pub mod primary;
52#[cfg(feature = "bpsec")]
53pub mod security;
54
55#[cfg(target_arch = "wasm32")]
56pub mod wasm;
57
58pub use bundle::{Bundle, ByteBuffer};
59pub use canonical::*;
60pub use dtntime::{dtn_time_now, CreationTimestamp, DtnTime};
61pub use eid::EndpointID;
62pub use helpers::hexify;
63
64#[cfg(target_arch = "wasm32")]
65pub use wasm::*;