From e4ad766315879e1ff05bb111229f073f8f0ed68e Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Mon, 10 Oct 2022 21:30:02 +0200 Subject: PassFish: Initial Commit Well, that's a lie. But nobody needs to see all the iterations I decided to sweep under the rug. That said, I think the repo is, while not clean, clean enough now, to not be embarrassed by uploading it to github. --- rust/src/implementation/passwordmaker/emittingsender.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 rust/src/implementation/passwordmaker/emittingsender.rs (limited to 'rust/src/implementation/passwordmaker/emittingsender.rs') diff --git a/rust/src/implementation/passwordmaker/emittingsender.rs b/rust/src/implementation/passwordmaker/emittingsender.rs new file mode 100644 index 0000000..1cf58fc --- /dev/null +++ b/rust/src/implementation/passwordmaker/emittingsender.rs @@ -0,0 +1,17 @@ +use std::sync::mpsc::{channel,Sender,Receiver,SendError}; +#[derive(Clone)] +pub(crate) struct EmittingSender { + sender : Sender, + emit : E, +} + +impl EmittingSender{ + pub(crate) fn emitting_channel(emit : E) -> (Self, Receiver) { + let (sender,r) = channel(); + (EmittingSender { sender, emit }, r) + } + pub(crate) fn send(&self, t: MT) -> Result<(), SendError> { + //first send, then notify. + self.sender.send(t).map(|_| (self.emit)()) + } +} -- cgit v1.2.3