use super::types::NodeSubscription;
use std::collections::HashMap;
pub struct SubscriptionManager {
subscriptions: HashMap<String, NodeSubscription>,
monitored_items: HashMap<u32, String>, }
impl SubscriptionManager {
pub fn new() -> Self {
Self {
subscriptions: HashMap::new(),
monitored_items: HashMap::new(),
}
}
pub fn add_subscription(&mut self, node_id: String, subscription: NodeSubscription) {
self.subscriptions.insert(node_id, subscription);
}
pub fn get_subscription(&self, node_id: &str) -> Option<&NodeSubscription> {
self.subscriptions.get(node_id)
}
pub fn remove_subscription(&mut self, node_id: &str) -> Option<NodeSubscription> {
self.subscriptions.remove(node_id)
}
pub fn all_subscriptions(&self) -> Vec<&NodeSubscription> {
self.subscriptions.values().collect()
}
pub fn register_monitored_item(&mut self, item_id: u32, node_id: String) {
self.monitored_items.insert(item_id, node_id);
}
}
impl Default for SubscriptionManager {
fn default() -> Self {
Self::new()
}
}