Struct holochain::conductor::interface::SignalBroadcaster
source · pub struct SignalBroadcaster { /* private fields */ }
Expand description
A collection of Senders to be used for emitting Signals from a Cell. There is one Sender per attached Interface
Implementations§
source§impl SignalBroadcaster
impl SignalBroadcaster
sourcepub fn subscribe_separately(&self) -> Vec<Receiver<Signal>> ⓘ
pub fn subscribe_separately(&self) -> Vec<Receiver<Signal>> ⓘ
Get a list of Signal receivers, one per sender (per interface)
sourcepub fn subscribe_merged(&self) -> impl Stream<Item = Signal>
pub fn subscribe_merged(&self) -> impl Stream<Item = Signal>
Get a single merged stream of all Signals from all broadcasters
Examples found in repository?
More examples
src/sweettest/sweet_conductor.rs (line 89)
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
pub async fn new(
handle: ConductorHandle,
env_dir: TestDir,
config: ConductorConfig,
) -> SweetConductor {
// Automatically add a test app interface
handle
.add_test_app_interface(AppInterfaceId::default())
.await
.expect("Couldn't set up test app interface");
// Get a stream of all signals since conductor startup
let signal_stream = handle.signal_broadcaster().subscribe_merged();
// XXX: this is a bit wonky.
// We create a Spaces instance here purely because it's easier to initialize
// the per-space databases this way. However, we actually use the TestEnvs
// to actually access those databases.
// As a TODO, we can remove the need for TestEnvs in sweettest or have
// some other better integration between the two.
let spaces = Spaces::new(&ConductorConfig {
environment_path: env_dir.to_path_buf().into(),
..Default::default()
})
.unwrap();
let keystore = handle.keystore().clone();
Self {
handle: Some(SweetConductorHandle(handle)),
db_dir: env_dir,
keystore,
spaces,
config,
dnas: Vec::new(),
signal_stream: Some(Box::new(signal_stream)),
}
}
Trait Implementations§
source§impl Clone for SignalBroadcaster
impl Clone for SignalBroadcaster
source§fn clone(&self) -> SignalBroadcaster
fn clone(&self) -> SignalBroadcaster
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for SignalBroadcaster
impl Send for SignalBroadcaster
impl Sync for SignalBroadcaster
impl Unpin for SignalBroadcaster
impl !UnwindSafe for SignalBroadcaster
Blanket Implementations§
§impl<T> Any for Twhere
T: Any + ?Sized,
impl<T> Any for Twhere
T: Any + ?Sized,
§fn type_id_compat(&self) -> TypeId
fn type_id_compat(&self) -> TypeId
TODO: once 1.33.0 is the minimum supported compiler version, remove
Any::type_id_compat and use StdAny::type_id instead.
https://github.com/rust-lang/rust/issues/27745
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
§impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
W: DeserializeWith<F, T, D>,
D: Fallible + ?Sized,
F: ?Sized,
§fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
Deserializes using the given deserializer
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.§impl<T> Upcastable for Twhere
T: 'static + Any + Send + Sync,
impl<T> Upcastable for Twhere
T: 'static + Any + Send + Sync,
§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref