private async void OnTimedEvent(object sender,
ElapsedEventArgs e)
{
if (JobQueueItemEntity == null)
{
return;
}
// All job progresses must have been sent to manager.
if (!_sendJobDetailToManagerTimer.HasAllProgressesBeenSent(JobQueueItemEntity.JobId))
{
return;
}
Stop();
try
{
var httpResponseMessage = await TrySendStatus(new JobQueueItemEntity
{
JobId = JobQueueItemEntity.JobId
}, _cancellationTokenSource.Token);
if (httpResponseMessage.IsSuccessStatusCode)
{
var msg = string.Format("{0} : Sent job status to manager ({3}) for job ( jobId, jobName ) : ( {1}, {2} )",
_whoAmI,
JobQueueItemEntity.JobId,
JobQueueItemEntity.Name,
httpResponseMessage.RequestMessage.RequestUri);
Logger.DebugWithLineNumber(msg);
InvokeTriggerTrySendStatusSucceded();
}
else
{
Start();
var msg =
string.Format("{0} : Send status to manager failed for job ( jobId, jobName ) : ( {1}, {2} ). Reason : {3}",
_whoAmI,
JobQueueItemEntity.JobId,
JobQueueItemEntity.Name,
httpResponseMessage.ReasonPhrase);
Logger.InfoWithLineNumber(msg);
}
}
catch (Exception exp)
{
Start();
var msg =
string.Format("{0} : Send status to manager failed for job ( jobId, jobName ) : ( {1}, {2} )",
_whoAmI,
JobQueueItemEntity.JobId,
JobQueueItemEntity.Name);
Logger.ErrorWithLineNumber(msg, exp);
}
}
}