/// <summary> /// Pushes the message into conveyor queue. /// </summary> /// <param name="message">The message to push.</param> public void PushMessage([NotNull] Message message) { Assert.ArgumentNotNull(message, "message"); try { if (ConveyorUnitsByMessageType.ContainsKey(message.MessageType)) { foreach (var conveyorUnit in ConveyorUnitsByMessageType[message.MessageType]) { conveyorUnit.HandleMessage(message); if (message.Handled) { break; } } } if (message.Handled) { return; } if (MessageReceived != null) { MessageReceived(this, new MessageReceivedEventArgs(message)); } } catch (Exception ex) { ErrorLogger.Instance.Write(string.Format("Error push message: {0}\r\n{1}", ex.Message, ex.StackTrace)); } }
/// <summary> /// Adds the conveyor unit. /// </summary> public void AddConveyorUnit([NotNull] ConveyorUnit conveyorUnit, bool addToTop = false) { Assert.ArgumentNotNull(conveyorUnit, "conveyorUnit"); foreach (var handledMessageType in conveyorUnit.HandledMessageTypes) { if (!ConveyorUnitsByMessageType.ContainsKey(handledMessageType)) { ConveyorUnitsByMessageType[handledMessageType] = new List <ConveyorUnit>(); } if (addToTop) { ConveyorUnitsByMessageType[handledMessageType].Insert(0, conveyorUnit); } else { ConveyorUnitsByMessageType[handledMessageType].Add(conveyorUnit); } } foreach (var handledCommandType in conveyorUnit.HandledCommandTypes) { if (!ConveyorUnitsByCommandType.ContainsKey(handledCommandType)) { ConveyorUnitsByCommandType[handledCommandType] = new List <ConveyorUnit>(); } if (addToTop) { ConveyorUnitsByCommandType[handledCommandType].Insert(0, conveyorUnit); } else { ConveyorUnitsByCommandType[handledCommandType].Add(conveyorUnit); } } if (addToTop) { _allConveyorUnits.Insert(0, conveyorUnit); } else { _allConveyorUnits.Add(conveyorUnit); } }