Esempio n. 1
0
 static Action <ChatClient, string> CreateMessageRoute(ChatClient To, string FileName)
 {
     return((This, Msg) => {
         File.AppendAllText(FileName, Print("{0} to {1}: {2}", This, To, Msg));
         ChatServer.SendMessage(Msg, MessageType.ChatMessage, To);
     });
 }
Esempio n. 2
0
 public static void Enqueue(ChatClient C)
 {
     lock (Clients) {
         Remove(C);
         Clients.AddLast(C);
         ChatServer.SendMessage("Queueing for partner", MessageType.ServerInfo, C);
     }
 }
Esempio n. 3
0
 static Action <ChatClient> CreateClosedRoute(ChatClient To)
 {
     return((This) => {
         To.OnMessageEvent = This.OnMessageEvent = null;
         To.OnClosedEvent = This.OnClosedEvent = null;
         Print("{0} and {1} unlinked", This, To);
         ChatServer.SendMessage("Other party disconnected", MessageType.ServerInfo, To);
         Lobby.Enqueue(To);
     });
 }
Esempio n. 4
0
        static void Main(string[] args)
        {
            Console.Title = "BlackCarp";
            ChatServer.Init();
            int LogFile = 0;

            StartThread(() => {
                while (true)
                {
                    while (Lobby.GetCount() < 2)
                    {
                        Thread.Sleep(100);
                    }

                    ChatClient A = Lobby.Dequeue();
                    ChatClient B = Lobby.Dequeue();

                    string LogFileName = "log_" + LogFile + ".txt";
                    LogFile++;

                    A.OnMessageEvent = CreateMessageRoute(B, LogFileName);
                    A.OnClosedEvent  = CreateClosedRoute(B);
                    B.OnMessageEvent = CreateMessageRoute(A, LogFileName);
                    B.OnClosedEvent  = CreateClosedRoute(A);

                    Print("{0} and {1} linked", A, B);
                    ChatServer.SendMessage("Found partner", MessageType.ServerInfo, new[] { A, B });
                }
            });

            StartThread(() => {
                while (true)
                {
                    Thread.Sleep(10000);
                    ChatServer.Purge();
                }
            });

            Print("Server started");
            while (true)
            {
                Thread.Sleep(1000);
            }
        }