public WorkerHandle ConnectWorkerFabric(string typeID, int count, RequestUpdateHandler updateHandler, RequestCompleteHandler completeHandler) { // ### the count is just an estimate of the clients expected workload // the returned object contains the offset for the queue this client will use // if there's an existing queue that meets this requirement, return that detail // if not, create and bind it, then return that detail ComputeFarm.ComputeRequest req = new ComputeFarm.ComputeRequest("WorkerRequest", typeID, count); openRequests.Add(req); controlQueue.PostMessage(req.commandString, thisClientID + ".farmRequest.proxy"); if (WaitForAck(req)) { SetupWorkerQueue(typeID); Queue workerQueue = workerQueues[FindWorkerQueue(typeID)]; workerQueue.SetListenerCallback(WorkerCallback); RequestUpdateEvent += updateHandler; RequestCompleteEvent += completeHandler; return(new WorkerHandle(workerQueue, typeID)); } return(null); }
public void SetupHandlers(RequestUpdateHandler updateHandler, RequestCompleteHandler completeHandler) { if (completeHandler != null) { RequestCompleteEvent += completeHandler; } if (updateHandler != null) { RequestUpdateEvent += updateHandler; } }