Example #1
0
        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);
        }
Example #2
0
 public void SetupHandlers(RequestUpdateHandler updateHandler, RequestCompleteHandler completeHandler)
 {
     if (completeHandler != null)
     {
         RequestCompleteEvent += completeHandler;
     }
     if (updateHandler != null)
     {
         RequestUpdateEvent += updateHandler;
     }
 }