gun/
types.rs

1use serde_json::Value;
2use std::sync::Arc;
3
4/// Message predicate function type
5/// 
6/// Receives the entire message object (as `serde_json::Value`) and returns:
7/// - `true` to accept the message (continue processing)
8/// - `false` to reject the message (drop silently)
9/// 
10/// The predicate is called after signature verification but before message processing.
11/// This allows the application layer to implement custom message filtering logic,
12/// such as:
13/// - Filtering messages based on content
14/// - Implementing rate limiting
15/// - Enforcing access control policies
16/// - Blocking specific message types
17/// 
18/// # Example
19/// ```rust,no_run
20/// use gun::MessagePredicate;
21/// use std::sync::Arc;
22/// 
23/// // Only accept "put" messages
24/// let predicate: MessagePredicate = Arc::new(|msg| {
25///     msg.get("put").is_some()
26/// });
27/// ```
28pub type MessagePredicate = Arc<dyn Fn(&Value) -> bool + Send + Sync>;
29