IDisposable SubscribeLocal(SecsEventSubscription subscription)
{
var handler = new Action <SecsMessage>(msg =>
{
#region event action
var filter = subscription.Filter;
try
{
if (msg.IsMatch(filter))
{
EapLogger.Info("event[" + filter.Name + "] >> EAP");
msg.Name = filter.Name;
subscription.Handle(msg);
}
}
catch (Exception ex)
{
EapLogger.Error("event[" + filter.Name + "] EAP process Error!", ex);
}
#endregion
});
_eventHandlers.AddHandler(subscription.GetKey(), handler);
EapLogger.Notice("EAP subscribe event " + subscription.Filter.Name);
return(new LocalDisposable(() =>
{
_eventHandlers.RemoveHandler(subscription.GetKey(), handler);
EapLogger.Notice("EAP unsubscribe event " + subscription.Filter.Name);
}));
}