Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Reliable Broadcast
- case class OriginatedData(src: Address, payload: KompicsEvent) extends KompicsEvent;
- class EagerReliableBroadcast(init: Init[EagerReliableBroadcast]) extends ComponentDefinition {
- //EagerReliableBroadcast Subscriptions
- val beb = requires[BestEffortBroadcast];
- val rb = provides[ReliableBroadcast];
- //EagerReliableBroadcast Component State and Initialization
- val self = init match {
- case Init(s: Address) => s
- };
- val delivered = collection.mutable.Set[KompicsEvent]();
- //EagerReliableBroadcast Event Handlers
- rb uponEvent {
- case x@RB_Broadcast(payload) => handle {
- /* WRITE YOUR CODE HERE */
- trigger(BEB_Broadcast(payload) -> beb);
- }
- }
- beb uponEvent {
- case BEB_Deliver(_, data@OriginatedData(origin, payload)) => handle {
- if(!delivered.contains(payload)) {
- delivered.add(payload);
- trigger(RB_Deliver(origin, payload) -> rb);
- trigger(BEB_Broadcast(payload) -> beb);
- }
- /* WRITE YOUR CODE HERE */
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement