Ejemplo n.º 1
0
        public void StartServer(string persistentFilename, INetworkAcceptor acceptor)
        {
            lock (m_userMutex)
            {
                if (m_active)
                {
                    return;
                }
                m_active = true;
            }
            m_server          = true;
            m_persistFilename = persistentFilename;
            m_serverAccepter  = acceptor;

            //Load persistent file, and ignore erros but pass along warnings.
            if (!string.IsNullOrEmpty(persistentFilename))
            {
                bool first = true;
                m_storage.LoadPersistent(persistentFilename, (line, msg) =>
                {
                    if (first)
                    {
                        first = false;
                        Warning($"When reading initial persistent values from \" {persistentFilename} \":");
                    }
                    Warning($"{persistentFilename} : {line} : {msg}");
                });
            }

            //Bind SetOutgoing
            m_storage.SetOutgoing(QueueOutgoing, m_server);

            //Start our tasks
            m_dispatchThread     = Task.Factory.StartNew(DispatchThreadMain, TaskCreationOptions.LongRunning);
            m_clientServerThread = Task.Factory.StartNew(ServerThreadMain, TaskCreationOptions.LongRunning);
        }
 public void RegisterAcceptor(INetworkAcceptor acceptor)
 {
     _acceptors.Add(acceptor);
 }
 public void Execute(Action <INetworkAcceptor> action, INetworkAcceptor acceptor)
 {
     ThreadPool.QueueUserWorkItem(action, acceptor, false);
 }