public WorkerService(IWorker worker) { this.worker = worker; this.id = worker.GetId(); manager = new WorkersManager(); manager.AddOverseenWorker(new OverseenWorker(this, null)); // Adds himself as an available worker logger = new LoggerWrapper("WS" + id); logger.Log("Created a new WorkerService"); }
public WorkerService(IWorker worker) { this.worker = worker; this.id = worker.GetId(); manager = new WorkersManager(); manager.AddOverseenWorker(new OverseenWorker(this, null)); // Adds himself as an available worker logger = new LoggerWrapper("WS" + id); logger.Log("Created a new WorkerService"); }
/// <summary> /// This method is called by the workers when they are created /// so that the tracker can keep track them. /// </summary> /// <param name="newWorker"></param> public void AddWorker(WorkerService newWorker, bool isPropagate = false) { worker.PropagateWorker(newWorker); // check if it already contains this worker if (manager.Exists(newWorker.Id)) { return; } if (!isPropagate) { newWorker.SetMasterTracker(this); newWorker.SetMasterTrackerFather(GetMasterTracker()); System.Timers.Timer newTimer = createCheckFaultyWorkerTimer(newWorker); // Finally, add the new worker to the list manager.AddOverseenWorker(new OverseenWorker(newWorker, newTimer)); } else { manager.AddOverseenWorker(new OverseenWorker(newWorker, null)); } logger.Log("Received new worker notification from W" + newWorker.Id); // Let the other workers know about this new worker foreach (OverseenWorker otherWorker in manager.ListWorkers) { if (otherWorker.WorkerId != id) { WorkerService otherWorkerService = otherWorker.Service; otherWorkerService.ReceiveNewWorkerUpdate(otherWorker); } } // Update the new worker with the list of workers in the network newWorker.ReceiveCurrentWorkerList(manager.ListWorkers); }