diff options
author | Jakob Odersky <jakob@odersky.com> | 2016-02-27 17:11:10 -0800 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2016-04-14 04:03:17 -0700 |
commit | dae336ee5514970fee93b0db25ce272ab83bd3c7 (patch) | |
tree | a628a7c02c6956d99510d98f2a0321be00b241bf /mavigator-uav/src/main/scala/mavigator/uav/Multiplexer.scala.disabled | |
parent | 773bc081728bf770281a22c1700d05b1def75542 (diff) | |
download | mavigator-dae336ee5514970fee93b0db25ce272ab83bd3c7.tar.gz mavigator-dae336ee5514970fee93b0db25ce272ab83bd3c7.tar.bz2 mavigator-dae336ee5514970fee93b0db25ce272ab83bd3c7.zip |
Refactor UI to a HUD-style interface
Diffstat (limited to 'mavigator-uav/src/main/scala/mavigator/uav/Multiplexer.scala.disabled')
-rw-r--r-- | mavigator-uav/src/main/scala/mavigator/uav/Multiplexer.scala.disabled | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/mavigator-uav/src/main/scala/mavigator/uav/Multiplexer.scala.disabled b/mavigator-uav/src/main/scala/mavigator/uav/Multiplexer.scala.disabled new file mode 100644 index 0000000..5e48ea1 --- /dev/null +++ b/mavigator-uav/src/main/scala/mavigator/uav/Multiplexer.scala.disabled @@ -0,0 +1,20 @@ +package mavigator +package uav + +import akka.stream.scaladsl._ +import akka.stream._ +import org.reactivestreams._ + +private[uav] class Multiplexer[In, Out](service: Flow[In, Out, _])(implicit materializer: Materializer) { + + private val endpoint: Flow[Out, In, (Publisher[Out], Subscriber[In])] = Flow.fromSinkAndSourceMat( + Sink.asPublisher[Out](fanout = true), + Source.asSubscriber[In])((pub, sub) => (pub, sub)) + + private lazy val (publisher, subscriber) = (service.joinMat(endpoint)(Keep.right)).run() + + def connect(client: Flow[Out, In, _]) = { + Source.fromPublisher(publisher).via(client).to(Sink.ignore).run() + } + +} |