/// <summary> /// Converts the result to the generic result object and calls the abstract method /// to process the data /// </summary> public void ProcessResult(IJobInput jobInput, string jobResultString) { var output = JobObjectSerializer.Deserialize <TOut>(jobResultString); ProcessResult((TIn)jobInput, output); Interlocked.Decrement(ref _jobCount); }
/// <summary> /// Handler when the enqueue job is fired /// </summary> private void OnEnqueueJob(IJobInput jobInput, object additionalData) { var handler = _enqueueJobEventHandler; if (handler != null) { handler(jobInput, additionalData); } }
/// <summary> /// Converts the result to the generic result object and calls the abstract method /// to process the data /// </summary> public void ProcessResult(IJobInput jobInput, string jobResultString, object additionalData) { var output = JobObjectSerializer.Deserialize <TOut>(jobResultString); ProcessResult((TIn)jobInput, output, additionalData); Interlocked.Decrement(ref _jobCount); // Finish if no more jobs are pending if (Interlocked.Read(ref _jobCount) == 0) { IsFinished = true; } }
/// <summary> /// Enqueues the given job /// </summary> private void EnqueueJob(IJobInput jobInput, object additionalData = null) { var jobWrapper = new JobWrapper { Id = Guid.NewGuid(), HandlerId = Id, JobInput = jobInput, EnqueueTime = DateTime.Now, AdditionalData = additionalData }; _availableJobs.Enqueue(jobWrapper); }