Je suis nouveau sur scala et j'essaye d'écrire un programme en scala qui crée plusieurs acteurs (disons 30) et passe des messages entre eux.Créer plusieurs acteurs dans scala
Voici ce que j'ai réussi jusqu'à présent:
import scala.actors.Actor
import scala.util.Random
class MyActor(val id:Int, val N:Int) extends Actor {
def act() {
println ("Starting actor: " + id)
/**
react{
case str : String =>
println("Received Msg: " + str)
val randNo : Int = Random.nextInt(N)
println("Actor " + id + " Picking a random actor: " + randNo)
// Here, I should forward the message received to the ALREADY created and started actors
// val objActor = new MyActor(randNo : Int, N : Int)
// objActor.start
// objActor ! str
}
*/
}
}
object Main {
def main(args:Array[String]) {
if(args.length == 0)
{
println("Usage scala Main <numNodes>")
sys.exit()
}
val N : Int = (args(0)).toInt
// Starting all actors
for (i: Int <- 0 to N-1) {
val a = new MyActor(i : Int, N : Int)
println ("About to start actor " + a.id)
a.start
// a!"Broadcast this msg to all actors"
}
}
}
L'objectif du programme est de créer plusieurs acteurs et transmettre une chaîne d'un acteur à l'autre.
Le code ci-dessus crée le nombre «N» d'acteurs donné comme argument de ligne de commande. Ces acteurs sont créés et démarrés par l'objet Principal. Main devrait envoyer un message à SEULEMENT UN des acteurs créés ci-dessus. L'acteur qui reçoit le message du Main doit transmettre le même message à un autre acteur déjà créé/démarré.
Est-ce possible? Si oui, pouvez-vous me guider dans la bonne direction?
Merci à l'avance, MS