/// <summary> /// Perform acknowledgement message from the sender. /// </summary> /// <param name="message"></param> private void HandleAcknowldgement(AcknowledgementMessage message) { if (message.Receipt == AcknowledgementReceipt.CANCELED) { throw new JobCanceledException(); } else if (message.Receipt == AcknowledgementReceipt.INVALID_TASK) { Context.Parent.Tell(new JobFailedMessage(message.Description, message.ID, JobStatus.Failed)); ColorConsole.WriteLineRed($"Task {message.ID}. {message.Description} is invalid."); } else if (message.Receipt == AcknowledgementReceipt.FAILED) { Context.Parent.Tell(new JobFailedMessage(message.Description, message.ID, JobStatus.Failed)); ColorConsole.WriteLineRed($"Task {message.ID}. { message.Description} is failed due to unhandled exeption."); } else if (message.Receipt == AcknowledgementReceipt.TIMEOUT) { Context.Parent.Tell(new JobFailedMessage(message.Description, message.ID, JobStatus.Timeout)); ColorConsole.WriteLineRed("Task ID: {0} is cancelled due to time out error.", message.ID); } else { if (message.CompletionTime == 0) { ColorConsole.WriteLineCyan($"Task ID: {message.ID} failed to execute by external application."); Context.Parent.Tell(new JobFailedMessage(message.Description, message.ID, JobStatus.Cancelled)); } else { ColorConsole.WriteLineCyan("Task ID: {0} completed successfully by worker.", message.ID); Context.Parent.Tell(new JobCompletedMessage(message.Description, message.ID, message.CompletionTime)); } } }
private void HandleAcknowledgement(AcknowledgementMessage ack) { Interlocked.Add(ref IOPipeline.ChunkStreamContext.WriteUnAcknowledgedSize, ack.BytesReceived * -1); }