diff options
Diffstat (limited to 'vfd-uav/src/main/scala/vfd/uav/Connection.scala')
-rw-r--r-- | vfd-uav/src/main/scala/vfd/uav/Connection.scala | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/vfd-uav/src/main/scala/vfd/uav/Connection.scala b/vfd-uav/src/main/scala/vfd/uav/Connection.scala deleted file mode 100644 index 223a787..0000000 --- a/vfd-uav/src/main/scala/vfd/uav/Connection.scala +++ /dev/null @@ -1,59 +0,0 @@ -package vfd.uav - -import scala.collection.mutable.ArrayBuffer - -import akka.actor.Actor -import akka.actor.ActorRef -import akka.actor.Terminated -import akka.actor.actorRef2Scala -import akka.util.ByteString - -/** Protocol definition. */ -object Connection { - trait Event - trait Command - - /** Received data from the uav (or any other systems on the link) */ - case class Received(bstr: ByteString) extends Event - - /** The connection closed or could not be opened */ - case class Closed(message: String) extends Event - - /** Register the sender to be notified on events */ - case object Register extends Command - - /** Send given bytes out to the uav (or any other systems on the link) */ - case class Send(bstr: ByteString) extends Command -} - -/** Common behavior of connection actors. */ -trait Connection { myself: Actor => - - /** Current clients that should be notified on incoming messages. */ - private val _clients = new ArrayBuffer[ActorRef] - def clients = _clients.toSeq - - /** Adds a client to the client list and acquires a deathwatch. */ - protected def register(client: ActorRef) = { - _clients += client - myself.context.watch(client) - } - - /** Remove client and release deathwatch. */ - protected def unregister(client: ActorRef) = { - _clients -= client - myself.context.unwatch(client) - } - - /** Sends a message to all registered clients. */ - protected def sendAll(msg: Any) = clients foreach (_ ! msg) - - /** - * Common registration behavior. Manages the events `Register` and `Terminated` by - * registering and unregistering clients. - */ - protected def registration: Receive = { - case Connection.Register => register(sender) - case Terminated(client) if clients contains client => unregister(client) - } -}
\ No newline at end of file |