public virtual void AddEvent(ISyncEvent newEvent) {
if (this.alreadyDisposed) {
Logger.Info(string.Format("Queue was already Disposed. Dropping Event: {0}", newEvent.ToString()));
return;
}
if (this.IsStopped) {
Logger.Info(string.Format("Queue was already Stopped. Dropping Event: {0}", newEvent.ToString()));
return;
}
try {
if (newEvent is ICountableEvent) {
var category = (newEvent as ICountableEvent).Category;
if (category != EventCategory.NoCategory) {
lock (this.subscriberLock) {
this.categoryCounter.Increase(newEvent as ICountableEvent);
this.fullCounter.Increase(newEvent as ICountableEvent);
}
}
}
this.queue.Add(newEvent);
if (!(newEvent is IRemoveFromLoggingEvent)) {
Logger.Debug(string.Format("Added Event: {0}", newEvent.ToString()));
}
} catch(InvalidOperationException) {
Logger.Info(string.Format("Queue was already Stopped. Dropping Event: {0}", newEvent.ToString()));
}
}