Example #1
0
        /// <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));
            }
        }
Example #2
0
        /// <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);
            }
        }