mithril_dmq/
lib.rs

1#![warn(missing_docs)]
2//! This crate provides mechanisms to publish and consume messages of a Decentralized Message Queue network through a DMQ node.
3
4mod consumer;
5mod model;
6mod publisher;
7pub mod test;
8
9#[cfg(unix)]
10pub use consumer::DmqConsumerServerPallas;
11pub use consumer::{
12    DMQ_MESSAGE_DEDUPLICATOR_TTL, DmqConsumerClient, DmqConsumerClientDeduplicator,
13    DmqConsumerClientPallas, DmqConsumerServer,
14};
15pub use model::{DmqMessage, DmqMessageBuilder, DmqNetwork, SystemUnixTimestampProvider};
16#[cfg(unix)]
17pub use publisher::DmqPublisherServerPallas;
18pub use publisher::{DmqPublisherClient, DmqPublisherClientPallas, DmqPublisherServer};
19
20#[cfg(test)]
21pub(crate) mod test_tools {
22    use std::io;
23    use std::sync::Arc;
24
25    use slog::{Drain, Logger};
26    use slog_async::Async;
27    use slog_term::{CompactFormat, PlainDecorator};
28
29    pub struct TestLogger;
30
31    impl TestLogger {
32        fn from_writer<W: io::Write + Send + 'static>(writer: W) -> Logger {
33            let decorator = PlainDecorator::new(writer);
34            let drain = CompactFormat::new(decorator).build().fuse();
35            let drain = Async::new(drain).build().fuse();
36            Logger::root(Arc::new(drain), slog::o!())
37        }
38
39        pub fn stdout() -> Logger {
40            Self::from_writer(slog_term::TestStdoutWriter)
41        }
42    }
43}