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 }