package com.scoopit.weedfs.benchmark; import java.util.Random; import akka.actor.ActorRef; import akka.actor.Props; import akka.actor.UntypedActor; public class Maestro extends UntypedActor { Random random = new Random(); final ActorRef uploadActor; final ActorRef readActor; public static Props mkProps(ActorRef uploadActor, ActorRef readActor) { return Props.create(Maestro.class, uploadActor, readActor); } public Maestro(ActorRef uploadActor, ActorRef readActor) { this.uploadActor = uploadActor; this.readActor = readActor; } @Override public void onReceive(Object arg0) throws Exception { // write or read ? boolean write = LoadTest.fsDb.size() == 0 || random.nextInt(100) > 85; if (write) { uploadActor.tell(new Object(), getSelf()); } else { // find a file on the db... int n = random.nextInt(LoadTest.fsDb.size()), i = 0; for (String fid : LoadTest.fsDb.keySet()) { if (++i == n) { readActor.tell(fid, getSelf()); } } } } }