public void SubscribeToStatus(Guid jobId)
{
Job job = Jobber.GetJob(jobId);
IContextChannel contextChannel = OperationContext.Current.Channel;
string sessionId = contextChannel.SessionId;
var subscriptionId = Guid.NewGuid();
IDataOutputCallback callback = OperationContext.Current.GetCallbackChannel<IDataOutputCallback>();
EventHandler<JobStatusEventArgs> statusOnMessageSent = (s, e) =>
{
try
{
callback.SendDataPacket(e.Message);
}
catch (Exception e2)
{
Console.WriteLine("Client disconnected.." + e2.Message);
UnsubscribeToStatus(jobId, subscriptionId);
}
};
job.Status.MessageSent += statusOnMessageSent;
if (!_callbacks.ContainsKey(jobId))
_callbacks[jobId] = new List<JobEventSubscription>();
_callbacks[jobId].Add(new JobEventSubscription { Event = statusOnMessageSent, Callback = callback, SubId = subscriptionId});
}