예제 #1
0
        /// <summary>
        ///     Initialize all MessagesSent before stepNumber
        /// </summary>
        /// <param name="stepNumber"></param>
        public void ClearMessagesSent(ushort stepNumber)
        {
            if (NumberOfSteps == -1)
            {
                return;
            }

            LastSentMessages.ClearSteps(stepNumber - NumberOfSteps);
        }
예제 #2
0
 /// <summary>
 ///     Initialize All MessagesSent
 /// </summary>
 public void Clear()
 {
     LastSentMessages.Clear();
     DelayedMessages.Clear();
     _waitingMessagesCount = 0;
     Result.Clear();
     LostMessages.Clear();
     WaitingMessages.Clear();
     Result.Clear();
 }
예제 #3
0
        /// <summary>
        ///     Track all messages that are posting
        ///     Must be call before Mailbox.Post()
        /// </summary>
        /// <param name="message"></param>
        /// <param name="step"></param>
        public void EnQueueWaitingMessage(Message message, ushort step)
        {
            if (message is null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            if (Debug)
            {
                lock (WaitingMessages)
                {
                    WaitingMessages.Add(message);
                    LastSentMessages.Enqueue(message, step);
                }
            }

            _waitingMessagesCount++;
            message.State = MessageState.Sent;
        }
예제 #4
0
 public List <Message> MessagesSentByAgent(ushort step, IAgentId agentId)
 {
     return(LastSentMessages.SentByAgent(step, agentId));
 }
예제 #5
0
 public List <Message> MessagesReceivedByAgent(ushort step, IAgentId agentId)
 {
     return(LastSentMessages.ReceivedByAgent(step, agentId));
 }