Advertisement
Guest User

Untitled

a guest
Feb 15th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.05 KB | None | 0 0
  1.  
  2. //Reliable Broadcast
  3.  
  4. case class OriginatedData(src: Address, payload: KompicsEvent) extends KompicsEvent;
  5.  
  6. class EagerReliableBroadcast(init: Init[EagerReliableBroadcast]) extends ComponentDefinition {
  7.  
  8.   //EagerReliableBroadcast Subscriptions
  9.   val beb = requires[BestEffortBroadcast];
  10.   val rb = provides[ReliableBroadcast];
  11.  
  12.   //EagerReliableBroadcast Component State and Initialization
  13.   val self = init match {
  14.     case Init(s: Address) => s
  15.   };
  16.   val delivered = collection.mutable.Set[KompicsEvent]();
  17.  
  18.   //EagerReliableBroadcast Event Handlers
  19.   rb uponEvent {
  20.     case x@RB_Broadcast(payload) => handle {
  21.             /* WRITE YOUR CODE HERE  */
  22.         trigger(BEB_Broadcast(payload) -> beb);
  23.     }
  24.   }
  25.  
  26.   beb uponEvent {
  27.     case BEB_Deliver(_, data@OriginatedData(origin, payload)) => handle {
  28.      if(!delivered.contains(payload)) {
  29.          delivered.add(payload);
  30.          trigger(RB_Deliver(origin, payload) -> rb);
  31.          trigger(BEB_Broadcast(payload) -> beb);
  32.      }
  33.      /* WRITE YOUR CODE HERE  */
  34.     }
  35.   }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement