public IvxrPluginContext()
        {
            var seLog = new SeLog(alwaysFlush: true);

            seLog.Init("ivxr-plugin.log");
            Log = seLog;

            var sessionController = new SessionController()
            {
                Log = Log
            };

            m_sessionDispatcher = new SessionDispatcher(sessionController)
            {
                Log = Log
            };

            m_server = new PluginServer(Log, m_sessionDispatcher, m_requestQueue);
            var observer   = new Observer(m_gameSession);
            var controller = new CharacterController(m_gameSession);

            Dispatcher = new Dispatcher(m_requestQueue, observer, controller)
            {
                Log = Log
            };
        }
示例#2
0
        public static void Create(string pRbrProcessFilePath, SessionDispatcher pSessionDispatcher)
        {
            try {
                if (channelListenerList != null)
                {
                    throw new Exception("ChannelListenerFactory.Create was already called!");
                }

                var _rbrBin      = Path.Combine(pRbrProcessFilePath, "bin");
                var _ivrDllPath  = Path.Combine(_rbrBin, "Timok.Ivr.dll");
                var _ivrAssembly = Utils.TryLoadIvrAssembly(_ivrDllPath);
                ivr = (IIVRPlugin)Activator.CreateInstance(_ivrAssembly.GetType("Timok_IVR.IVR"));
                ivr.Start(Configuration.Instance.IVR as IVRConfiguration);

                var _numberOfChannels = 0;
                channelListenerList = new ChannelListener[Configuration.Instance.IVR.MaxNumberOfCallsPerModule * Configuration.Instance.IVR.NumberOfModules];
                for (var _countModules = 0; _countModules < Configuration.Instance.IVR.NumberOfModules; _countModules++)
                {
                    for (var _countChannels = 0; _countChannels < Configuration.Instance.IVR.MaxNumberOfCallsPerModule; _countChannels++)
                    {
                        channelListenerList[_numberOfChannels] = new ChannelListener(ivr, _countModules, _numberOfChannels, pSessionDispatcher);
                        _numberOfChannels++;
                    }
                }
                Thread.Sleep(3000);
            }
            catch (Exception _ex) {
                throw new Exception(string.Format("ChannelListenerFactory.Start, exception: {0}", _ex));
            }
        }
示例#3
0
 public Manager(Platform platform)
 {
     try
     {
         this.session = SessionDispatcher.NewSession(platform.ConnectionString);
         this.rx      = new Repository(this.session);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#4
0
        public static void Main(string[] args)
        {
            var log = new ConsoleLog();
            var sessionController = new MockSessionController()
            {
                Log = log
            };
            var sessionDispatcher = new SessionDispatcher(sessionController)
            {
                Log = log
            };

            using (var requestQueue = new RequestQueue())
            {
                var server = new PluginServer(log, sessionDispatcher, requestQueue);
                server.Start();

                var observer   = new MockObserver();
                var controller = new MockCharacterController()
                {
                    Log = log
                };

                var dispatcher = new Dispatcher(requestQueue, observer, controller);
                dispatcher.Log = log;

                while (true)
                {
                    dispatcher.ProcessRequests();

                    /*
                     * while (requestQueue.Requests.TryDequeue(out Request request))
                     * {
                     * log.WriteLine("dequeued: " + request.Message);
                     *
                     * requestQueue.Replies.Add(
                     * new Request(request.ClientStream, $"Got {request.Message.Length} bytes, thanks!"));
                     * }
                     */

                    Thread.Sleep(5);
                }

                // server.Start(waitForFinish: true);
            }
        }