/ core / src / message / mod.rs
mod.rs
 1  //! Message module for multi-transport messaging.
 2  //!
 3  //! This module extends the existing message functionality with support for
 4  //! multi-transport routing. It re-exports types from `protocol::messages`
 5  //! and adds new types for transport-agnostic messaging.
 6  //!
 7  //! # Types
 8  //!
 9  //! - **From `protocol::messages`**: Core message types (PlaintextMessage, EncryptedMessage, etc.)
10  //! - **MessageEnvelope**: Wrapper for routing messages across transports
11  //! - **Routing**: Types for address resolution and delivery tracking
12  //!
13  //! # Usage
14  //!
15  //! ```ignore
16  //! use dead_drop_core::message::{
17  //!     // Core message types
18  //!     PlaintextMessage, EncryptedMessage, encrypt_message,
19  //!     // Multi-transport support
20  //!     MessageEnvelope, ContactRoutes, DeliveryStatus,
21  //! };
22  //! ```
23  
24  pub mod envelope;
25  pub mod routing;
26  
27  // Re-export core message types from protocol module
28  pub use crate::protocol::messages::{
29      // Types
30      PlaintextMessage,
31      EncryptedMessage,
32      OutboundMessage,
33      InboundMessage,
34      ContentType,
35      OutboundState,
36      InboundState,
37      MessageId,
38      ContactId,
39      // Constants
40      MAX_PLAINTEXT_SIZE,
41      DEFAULT_MESSAGE_EXPIRY_DAYS,
42      DEFAULT_AUTO_DELETE_DAYS,
43      MESSAGE_ID_SIZE,
44      CONTACT_ID_SIZE,
45      // Functions
46      encrypt_message,
47      decrypt_message,
48      verify_message_signature,
49      generate_message_id,
50      generate_contact_id,
51  };
52  
53  // Export envelope types
54  pub use envelope::{MessageEnvelope, ENVELOPE_VERSION};
55  
56  // Export routing types
57  pub use routing::{
58      ContactRoutes,
59      DeliveryAttempt,
60      DeliveryStatus,
61      MessageRouter,
62  };
63  
64  #[cfg(test)]
65  mod tests {
66      use super::*;
67  
68      #[test]
69      fn test_reexports() {
70          // Verify core types are accessible
71          let msg = PlaintextMessage::text("Hello");
72          assert_eq!(msg.content_type, ContentType::Text);
73  
74          // Verify envelope is accessible
75          assert_eq!(ENVELOPE_VERSION, 1);
76  
77          // Verify routing types are accessible
78          let routes = ContactRoutes::new();
79          assert!(!routes.has_routes());
80      }
81  }