示例#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);
            }
        }
示例#2
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);
            }
        }
示例#3
0
        public IOWorker(
            IDictionary <string, Channel> channels,
            IDictionary <string, Listener> listeners,
            WaterFlowManager incomingFlowManager,
            Options options,
            IncomingMessageDispatchCallback incomingMessageDispatchCallback,
            ConnectionEventCallback connectionEventCallback,
            LogCallback logCallback, LogEventArgs.LogLevel logLevel)
        {
            this.channels                        = channels;
            this.listeners                       = listeners;
            this.incomingFlowManager             = incomingFlowManager;
            this.options                         = options;
            this.incomingMessageDispatchCallback =
                incomingMessageDispatchCallback;
            this.connectionEventCallback = connectionEventCallback;
            this.logCallback             = logCallback;
            this.logLevel = logLevel;

            listenersForSelection = new Dictionary <Socket, Listener>();
            channelsForSelection  = new Dictionary <Socket, Channel>();

            blockingChannelsReadyForReading = new List <Channel>();
            blockingChannelsReadyForWriting = new List <Channel>();

            stopRequest = false;
        }
示例#4
0
 internal OutgoingMessage(long messageId, 
     OutgoingMessageManager messageManager, 
     WaterFlowManager outgoingFlowManager)
 {
     this.messageId = messageId;
     this.messageManager = messageManager;
     this.outgoingFlowManager = outgoingFlowManager;
 }
示例#5
0
        public IOWorker(
            IDictionary<string, Channel> channels, 
            IDictionary<string, Listener> listeners, 
            WaterFlowManager incomingFlowManager, 
            Options options, 
            IncomingMessageDispatchCallback incomingMessageDispatchCallback,
            ConnectionEventCallback connectionEventCallback, 
            LogCallback logCallback, LogEventArgs.LogLevel logLevel)
        {
            this.channels = channels;
            this.listeners = listeners;
            this.incomingFlowManager = incomingFlowManager;
            this.options = options;
            this.incomingMessageDispatchCallback =
                incomingMessageDispatchCallback;
            this.connectionEventCallback = connectionEventCallback;
            this.logCallback = logCallback;
            this.logLevel = logLevel;

            listenersForSelection = new Dictionary<Socket, Listener>();
            channelsForSelection = new Dictionary<Socket, Channel>();

            stopRequest = false;
        }