holochain_conductor_api/
signal_subscription.rs1use holochain_serialized_bytes::prelude::*;
2use holochain_types::app::InstalledAppId;
3use holochain_zome_types::cell::CellId;
4use serde::{Deserialize, Serialize};
5use std::collections::HashMap;
6
7#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, SerializedBytes)]
10pub struct SignalSubscription {
11 installed_app_id: InstalledAppId,
13 filters: SignalFilterSet,
15}
16
17#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, SerializedBytes)]
24pub enum SignalFilterSet {
25 Include(HashMap<CellId, SignalFilter>),
28 Exclude(HashMap<CellId, SignalFilter>),
31}
32
33impl Default for SignalFilterSet {
34 fn default() -> Self {
35 Self::allow_all()
37 }
38}
39
40impl SignalFilterSet {
41 pub fn allow_all() -> Self {
43 SignalFilterSet::Exclude(HashMap::new())
44 }
45
46 pub fn block_all() -> Self {
48 SignalFilterSet::Include(HashMap::new())
49 }
50}
51
52#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, SerializedBytes)]
54pub struct SignalFilter;
55
56impl Default for SignalFilter {
57 fn default() -> Self {
58 Self::empty()
60 }
61}
62
63impl SignalFilter {
64 pub fn empty() -> Self {
66 SignalFilter
67 }
68}