Exemplo n.º 1
0
        public DispatchManager(
            object sender, // Agent reference for callbacks
            Options options, WaterFlowManager incomingFlowManager, 
            IOWorker ioWorker, 
            LogCallback logCallback, LogEventArgs.LogLevel logLevel)
        {
            this.sender = sender;
            this.incomingFlowManager = incomingFlowManager;
            this.ioWorker = ioWorker;

            this.logCallback = logCallback;
            this.logLevel = logLevel;

            messageQueue = new LinkedList<IncomingMessage>();

            objectMap = new Dictionary<string, IncomingMessageHandler>();
            anyObjectCallback = null;

            int numOfThreads = options.dispatcherThreads;

            dispatchers = new List<Thread>();
            for (int i = 0; i != numOfThreads; ++i)
            {

                Thread th = new Thread((new Dispatcher(this)).run);
                th.Name = "YAMI4 message dispatcher";
                th.IsBackground = true;
                th.Start();
                dispatchers.Add(th);
            }
        }
Exemplo n.º 2
0
            private void call(IncomingMessageHandler callback, 
                IncomingMessage message, string objectName)
            {
                callback(outer.sender,
                    new IncomingMessageArgs(objectName, message));

                outer.logCallback.Log(LogEventArgs.LogLevel.MEDIUM,
                    "Dispatched:" + " object: " + message.ObjectName
                    + " message: " + message.MessageName);
            }
Exemplo n.º 3
0
 public void registerObject(string objectName, 
     IncomingMessageHandler callback)
 {
     lock (objectMap)
     {
         if (objectName.Equals("*"))
         {
             anyObjectCallback = callback;
         }
         else
         {
             if(objectMap.ContainsKey(objectName))
                 objectMap[objectName] = callback;
             else
                 objectMap.Add(objectName, callback);
         }
     }
 }
Exemplo n.º 4
0
 public void unregisterObject(string objectName)
 {
     lock (objectMap)
     {
         if (objectName.Equals("*"))
         {
             anyObjectCallback = null;
         }
         else
         {
             objectMap.Remove(objectName);
         }
     }
 }
Exemplo n.º 5
0
 /// <summary> 
 /// Initializes a new instance of <see cref="ValuePublisher"/>
 /// </summary>
 /// <remarks>
 /// <para>
 /// Creates the subscription publisher
 /// that is not registered at any agent and that
 /// delegates arbitrary remote commands to the given callback.
 /// </para>
 /// <para>
 /// <b>Note:</b>
 /// The "subscribe" and "unsubscribe" messages are also forwarded
 /// to the user-provided callback, but these two messages are already
 /// "replied-to" by the published value's implementation.
 /// </para>
 /// </remarks>
 /// 
 /// <param name="callback"> the callback implementation for unknown 
 /// commands </param>
 public ValuePublisher(IncomingMessageHandler callback)
 {
     controllingAgent = null;
     subscriptions = new Dictionary<string, SubscriptionState>();
     userCommandCallback = callback;
 }
Exemplo n.º 6
0
 public PacketHandler(short opCode, IncomingMessageHandler handler)
 {
     this.opCode  = opCode;
     this.handler = handler;
 }
Exemplo n.º 7
0
 private void ConfigureConnectionChange(IncomingMessageHandler messageHandler)
 {
     messageHandler
     .OnConnectionChange(NetConnectionStatus.Connected, im =>
                         Console.WriteLine($"Connected to {im.SenderEndPoint}"));
 }
Exemplo n.º 8
0
 /// <summary>
 ///     Register a method handler
 /// </summary>
 /// <param name="opCode"></param>
 /// <param name="handlerMethod"></param>
 /// <returns></returns>
 public PacketHandler RegisterHandler(short opCode, IncomingMessageHandler handlerMethod)
 {
     return(RegisterHandler(new PacketHandler(opCode, handlerMethod)));
 }
Exemplo n.º 9
0
 public void ProcessMessagesInBackground()
 {
     asyncMessageProcessor = new ParallelTaskStarter(TimeSpan.Zero);
     asyncMessageProcessor.Start(async() => await IncomingMessageHandler.ProcessNetworkMessages(Host));
 }
Exemplo n.º 10
0
 public async Task ProcessMessages()
 {
     await IncomingMessageHandler.ProcessNetworkMessages(Host);
 }
Exemplo n.º 11
0
 public IncomingMessageHandlerBuilder()
 {
     IncomingMessageHandler = new IncomingMessageHandler(BuildServiceProvider(), MockBuilder.BuildFakeLogger <IncomingMessageHandler>());
 }