Example #1
0
        private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
        {
            ListenThread.StateSection = MemoryMappedFile.CreateOrOpen("TeknoParrot_NetState", Marshal.SizeOf <TpNetStateStruct.TpNetState>());
            ListenThread.StateView    = ListenThread.StateSection.CreateViewAccessor();

            new Thread(() => ListenThread.Listen(GridLobbies, BtnRefresh, BtnJoinGame, this)).Start();
        }
Example #2
0
        /// <summary>
        /// Shutdowns this instance.
        /// </summary>
        public override void Shutdown()
        {
            base.Shutdown();

            ConsoleLogger.WriteToLog("Shutting Server down...");

            IsRunning = false;

            TcpClientConnected.Set();

            if (ListenThread != null)
            {
                ListenThread.Join();
            }

            while (NumClientThreads > 0)
            {
                Clients.Last().Value.ThisThread.Join();
            }

            Clients.Clear();

            if (Server != null)
            {
                Server.Stop();
            }

            ConsoleLogger.WriteToLog("Server successfully Shutdown.");
        }
Example #3
0
        static void Main(string[] args)
        {
            ILogger logger = new NLogger();

            // Create the threads.
            ServerThread server = new ServerThread(logger);
            ListenThread listen = new ListenThread(logger, server, 4530);
            DatabaseThread database = new DatabaseThread(logger);

            // Create the login handler.
            Login login = new Login(logger, server, database);

            // Start things up.
            server.Run();
            listen.Run();
            database.Run();

            // We could potentially make this a service so there's no infinite
            // looping.
            while (true) {
                if (server.Fatal || listen.Fatal) {
                    // TODO: Potentially attempt to restart?
                    break;
                }

                Thread.Sleep(100);
            }
        }
Example #4
0
        /// <summary>
        /// Start the server
        /// </summary>
        /// <returns></returns>
        public bool Start()
        {
            if (Logging)
            {
                Logger.Write("REGION", "Method [Start]");
            }

            if (!ListenThread.IsAlive && !Running)
            {
                if (Logging)
                {
                    Logger.Write("SUCCESS", "Starting server");
                }

                Running = true;

                ListenThread.Start();
                ManagementThread.Start();
                return(true);
            }

            if (Logging)
            {
                Logger.Write("FAILED", "Starting server");
            }

            return(false);
        }
Example #5
0
 public void Stop( )
 {
     lock (this)
     {
         if (IsRunning)
         {
             ListenThread.Abort( );
             IsRunning = false;
         }
     }
 }
Example #6
0
        public void Quit(string reason)
        {
            foreach (var channel in Channels.Values)
            {
                channel.SendQuit(this, reason);
            }

            ListenThread.Abort();
            PingThread.Abort();
            TcpClient.Close();
        }
Example #7
0
        public bool Start()
        {
            if (!ListenThread.IsAlive)
            {
                Running = true;

                ListenThread.Start();
                PingThread.Start();

                return(true);
            }

            return(false);
        }
Example #8
0
        public ServerBase(int listenPort, string dbConnectString)
        {
            // Start log thread
            LogThread log = new LogThread();

            // Start database thread
            if( dbConnectString != null )
                _db = new DatabaseThread(dbConnectString);

            // Start listen thread
            _lt = new ListenThread(listenPort);

            // Start input thread
            _inputThread = new InputThread();
        }
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            if (_isLoaded)
            {
                return;
            }
            ListenThread.StateSection =
                MemoryMappedFile.CreateOrOpen("TeknoParrot_NetState", Marshal.SizeOf <TpNetStateStruct.TpNetState>());
            ListenThread.StateView = ListenThread.StateSection.CreateViewAccessor();
            MainWindow mainWindow = Application.Current.Windows.OfType <MainWindow>().Single();

            _isLoaded = true;
            new Thread(() => ListenThread.Listen(GridLobbies, BtnRefresh, BtnJoinGame, mainWindow)).Start();
            ListenThread.SelectedGameId = (GameId)((FrameworkElement)GameListCombo.SelectedItem).Tag;
            BtnRefresh.IsEnabled        = false;
            ListenThread.RefreshList    = true;
        }
Example #10
0
 public void Stop()
 {
     try
     {
         Listener.Stop();
     }
     catch
     {
     }
     try
     {
         ListenThread.Join();
     }
     catch
     {
     }
 }
Example #11
0
        /// <summary>
        /// Stop the server
        /// </summary>
        public void Stop()
        {
            if (Logging)
            {
                Logger.Write("REGION", "Method [Stop]");
            }

            if (Logging)
            {
                Logger.Write("INFO", "Stopping server");
            }

            Running = false;

            lock (ClientsList)
                lock (ClientsDict) {
                    for (int e = ClientsList.Count - 1; e >= 0; e--)
                    {
                        TCPServerClient client = ClientsList[e];

                        RemoveClient(client, TCPDisconnectType.Disconnect, e);
                    }
                }

            try {
                Socket.Shutdown(SocketShutdown.Both);
                Socket.Close();
            } catch (Exception er) {
            }

            ManagementThread.Join();
            ListenThread.Join();

            ListenThread     = new Thread(() => Listen());
            ManagementThread = new Thread(Management);

            Socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
            Socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false);
            Socket.Bind(new IPEndPoint(Address, Port));

            if (Logging)
            {
                Logger.Write("INFO", "Stopped server");
            }
        }
Example #12
0
 public void Start()
 {
     Listener.Start();
     ListenThread.Start(this);
 }