@@ -2,13 +2,12 @@ package com.distcomp.common
22
33import akka .actor .typed .{ActorRef , Behavior }
44import akka .actor .typed .scaladsl .{ActorContext , Behaviors }
5- import com .distcomp .common .BrachaMessages .EnableBrachaBehaviour
5+ import com .distcomp .common .BrachaMessages .{ ActivateNode , StartProcessing }
66import com .distcomp .common .SimulatorProtocol ._
77import com .distcomp .common .SpanningTreeProtocol .InitiateSpanningTree
88import com .distcomp .common .MutexProtocol ._
99import com .distcomp .common .ElectionProtocol ._
1010import com .distcomp .common .FranklinProtocol .SetRandomNodeId
11-
1211import com .distcomp .common .TreeElectionProtocol ._
1312// import com.distcomp.common.TreeProtocol.WakeUpPhase
1413import com .distcomp .common .TreeProtocol ._
@@ -51,16 +50,16 @@ object SimulatorActor {
5150
5251 // Function to handle algorithm execution logic for each distributed algorithm
5352 private def executeAlgorithm (
54- step : SimulationStep ,
55- nodes : Set [ActorRef [Message ]],
56- numInitiators : Int ,
57- additional : Int ,
58- context : ActorContext [SimulatorMessage ],
59- readyNodes : Set [String ],
60- simulationSteps : List [SimulationStep ],
61- intialiser : ActorRef [Message ],
62- numNodes : Option [Int ] = None
63- ): Behavior [SimulatorMessage ] = {
53+ step : SimulationStep ,
54+ nodes : Set [ActorRef [Message ]],
55+ numInitiators : Int ,
56+ additional : Int ,
57+ context : ActorContext [SimulatorMessage ],
58+ readyNodes : Set [String ],
59+ simulationSteps : List [SimulationStep ],
60+ intialiser : ActorRef [Message ],
61+ numNodes : Option [Int ] = None
62+ ): Behavior [SimulatorMessage ] = {
6463 step.algorithm match {
6564 case " ricart-agarwala" =>
6665 Thread .sleep(1000 )
@@ -269,7 +268,7 @@ object SimulatorActor {
269268
270269 Thread .sleep(2000 )
271270 // randomly take x initiators and send initate message to start election
272- nodes.take(numInitiators).foreach(node => node ! wakeUpPhase )
271+ nodes.take(numInitiators).foreach(node => node ! wakeUpPhase)
273272
274273 behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, 1 )
275274
@@ -300,7 +299,11 @@ object SimulatorActor {
300299 }
301300
302301 for (no <- nodes) {
303- no ! EnableBrachaBehaviour (dependencies(no))
302+ no ! ActivateNode (dependencies(no))
303+ }
304+
305+ for (no <- nodes) {
306+ no ! StartProcessing ()
304307 }
305308
306309 behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, 1 )
@@ -311,28 +314,28 @@ object SimulatorActor {
311314 // randomly take x initiators and send initate message to start election
312315 nodes.take(numInitiators).foreach(node => node ! WakeUpPhase )
313316
314- behaviorAfterInit(nodes,readyNodes,simulationSteps,intialiser,1 )
317+ behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, 1 )
315318
316319 case " tree" =>
317320 context.log.info(" Executing Tree Algorithm" )
318321 Thread .sleep(1000 )
319322 // shuffle the nodes
320323
321- nodes.foreach(node => node ! Initiate )
324+ nodes.foreach(node => node ! Initiate )
322325
323- behaviorAfterInit(nodes,readyNodes,simulationSteps,intialiser,1 )
326+ behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, 1 )
324327
325328 case " chandy-misra" =>
326329 Thread .sleep(1000 )
327330 context.log.info(" Executing Chandy-Misra Algorithm" )
328331 nodes.take(1 ).foreach(node => node ! StartRouting (node.path.name))
329- behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser,1 )
332+ behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, 1 )
330333
331334 case " merlin-segall" =>
332335
333336 context.log.info(" Waiting for spanning tree to complete." )
334337 nodes.take(1 ).foreach(node => node ! InitiateSpanningTree )
335- behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser,1 , Some (readyNodes.size))
338+ behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, 1 , Some (readyNodes.size))
336339
337340 case " toueg" =>
338341 context.log.info(" Executing Toueg Algorithm" )
@@ -343,20 +346,20 @@ object SimulatorActor {
343346 val pivots = shuffledNodes.zipWithIndex.map { case (node, index) => index -> node }.toMap
344347
345348 nodes.foreach(node => node ! SetAllNodes (nodes))
346- Thread .sleep(1000 )
349+ Thread .sleep(1000 )
347350
348351 nodes.foreach(node => node ! StartRoutingT (nodes, pivots))
349352
350353
351- behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser,nodes.size)
354+ behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, nodes.size)
352355
353356 case " frederickson" =>
354357 Thread .sleep(1000 )
355358 context.log.info(" Executing Frederickson Algorithm" )
356359 nodes.take(1 ).foreach(node => node ! StartRouting (node.path.name))
357360
358- behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser,1 )
359- //
361+ behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, 1 )
362+ //
360363
361364 case _ =>
362365 context.log.info(" Algorithm not recognized in Simulator ." )
@@ -404,13 +407,13 @@ object SimulatorActor {
404407
405408 // Behavior after all nodes are registered and ready to start simulation
406409 private def behaviorAfterInit (
407- nodes : Set [ActorRef [Message ]],
408- readyNodes : Set [String ],
409- simulationSteps : List [SimulationStep ],
410- intialiser : ActorRef [Message ],
411- repliesToWait : Int = 0 ,
412- numNodes : Option [Int ] = None
413- ): Behavior [SimulatorMessage ] =
410+ nodes : Set [ActorRef [Message ]],
411+ readyNodes : Set [String ],
412+ simulationSteps : List [SimulationStep ],
413+ intialiser : ActorRef [Message ],
414+ repliesToWait : Int = 0 ,
415+ numNodes : Option [Int ] = None
416+ ): Behavior [SimulatorMessage ] =
414417 Behaviors .receive { (context, message) =>
415418 message match {
416419 case RegisterNode (node, nodeId) =>
@@ -428,7 +431,7 @@ object SimulatorActor {
428431 val numInitiators = step.additionalParameters.getOrElse(" initiators" , 1 )
429432 val additional = step.additionalParameters.getOrElse(" additional" , 0 )
430433 executeAlgorithm(step, nodes, numInitiators, additional, context, updatedReadyNodes, simulationSteps, intialiser, numNodes)
431- }else {
434+ } else {
432435 behaviorAfterInit(nodes, updatedReadyNodes, simulationSteps, intialiser, repliesToWait)
433436 }
434437
@@ -498,7 +501,7 @@ object SimulatorActor {
498501 val step = remainingSteps.head
499502 context.log.info(s " Initialising network for step: $step" )
500503 Thread .sleep(500 )
501- intialiser ! SetupNetwork (step.dotFilePath, step.isDirected, step.createRing, step.createClique,step.createBinTree, step.enableFailureDetector , context.self)
504+ intialiser ! SetupNetwork (step.dotFilePath, step.isDirected, step.createRing, step.createClique, step.createBinTree, step.enableFailureDetector, context.self)
502505
503506 behaviorAfterInit(Set .empty, Set .empty, remainingSteps, intialiser, 1 )
504507 }
@@ -520,7 +523,7 @@ object SimulatorActor {
520523 simulationSteps.headOption.foreach { step =>
521524 intialiser ! SetupNetwork (step.dotFilePath, step.isDirected, step.createRing, step.createClique, step.createBinTree, step.enableFailureDetector, context.self)
522525 }
523- behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser,1 )
526+ behaviorAfterInit(nodes, readyNodes, simulationSteps, intialiser, 1 )
524527
525528 case RegisterNode (node, nodeId) =>
526529 behavior(nodes + node, readyNodes, simulationSteps)
0 commit comments