/// <summary> /// Entity execution has finished. /// </summary> public override void EntityExecutionFinished(ExecutionEntity entity) { ExecutionEntityWithReply entityWithReply = (ExecutionEntityWithReply)entity; if (entityWithReply.ReplyMessage != null) {// The other side replied. ArbiterClientId messageReceiver = ReceiverID; if (_receiverID.Equals(entity.ReceiverID)) {// Swap direction, receiver must now send. messageReceiver = SenderID; } ExecutionEntityWithReply replyEntity = new ExecutionEntityWithReply(this, messageReceiver, entityWithReply.TimeOut, MessageContainer.DuplicateMessage(entityWithReply.ReplyMessage, false)); ExecutionManager.AddExecutionEntity(replyEntity); } else {// We received a nothing, conversation done, die. this.Die(); } }