internal void CallHandler(Message msg) { if (HandlerDelegate != null) { HandlerDelegate(msg); } }
public bool PerformIfMessageFromObservedObject(Message msg, Block Do) { DoOnceBlock DoOnce = new DoOnceBlock(Do); bool result = false; msg.HasInstance.IfTrue(() => { result = _ObservedSet.Has(msg.SenderInstance, DoOnce); }); msg.HasInstance.IfTrue(() => { result = result || _ObservedSet.Has(msg.ActualSender, DoOnce); }); if (result) { Do(); } return result; }
public static void DebugSend( MessageBus msgBus, Message message, StringBuilder textExplanation ) { int count_PtToPt = 0, count_Observer = 0, count_RoleEvent = 0; Action<HandlerInfo, Message> Msg_PtToPt = (HandlerInfo handler, Message msg) => { textExplanation.AppendFormat( "Point-to-Point Basis: Message match # {0}\r\n" + "Message processed by handler: {1}\r\n", count_PtToPt, handler ); count_PtToPt++; }; Action<SubscriberInfo, HandlerInfo, string> Almost_PointToPoint = (SubscriberInfo sub, HandlerInfo h, string s) => { textExplanation.AppendFormat("Point to Point near match: {0}\r\n",s); }; Action<HandlerInfo, Message> Msg_Observer = (HandlerInfo handler, Message msg) => { textExplanation.AppendFormat( "Role and Observer Basis: Message match # {0}\r\n" +"Message processed by handler: {1}\r\n", count_Observer, handler ); count_Observer++; }; Action<SubscriberInfo, HandlerInfo, string> Almost_Observer = (SubscriberInfo sub, HandlerInfo h, string s) => { textExplanation.AppendFormat("Observer near match: {0}\r\n",s); }; Action<HandlerInfo, Message> Msg_RoleEvent = (HandlerInfo handler, Message msg) => { textExplanation.AppendFormat( "Role and Event Code Basis: Message match # {0}\r\n" + "Message processed by handler: {1}\r\n", count_RoleEvent, handler ); count_RoleEvent++; }; Action<SubscriberInfo, HandlerInfo, string> Almost_RoleEvent = (SubscriberInfo sub, HandlerInfo h, string s) => { textExplanation.AppendFormat("Role and Event Code near match: {0}\r\n",s); }; Action Msg_Unhandled = () => { textExplanation.Append("No matches found.\r\n"); }; textExplanation.AppendFormat( "Performing match testing for message on the message bus:\r\n" + "Message : {0}\r\n", message ); msgBus.MatchHandlers(message, Msg_PtToPt, Almost_PointToPoint, Msg_Observer, Almost_Observer, Msg_RoleEvent, Almost_RoleEvent, Msg_Unhandled ); textExplanation.Append( "-----\r\nMatch Ended." ); }
protected void Send(Message msg) { MessageSubscriber.SendVia(msg, _Bus, this); }
public virtual void ReceiveUnhandled(Message msg) { }
public static void SendVia(Message msg, MessageBus MsgBus, IMessageSubscriber Caller) { msg.ActualSender = Caller; MsgBus.Send(msg); }