Пример #1
0
        private static void ServerConnectors_OnDebugLog(ServerConnectorContext connectorContext, DebugLogType logType, string info)
        {
            var remoteEndPoint = "NA";
            try { remoteEndPoint = connectorContext.Socket.RemoteEndPoint.ToString(); } catch { }

            Console.WriteLine($"ServerConnectors_OnDebugLog RemoteEndPoint:{remoteEndPoint} logType:{logType} info:{info}");
        }
Пример #2
0
 internal void Logout(string username, ServerConnectorContext serverConnectorContext)
 {
     if (Users.TryGetValue(username, out var connectorsIds))
     {
         connectorsIds.Remove(serverConnectorContext.Id);
     }
 }
Пример #3
0
        private static void ServerConnectors_OnRequestMultiResponses(
            ServerConnectorContext serverConnectorContext, int module, int command, int requestId, object packet,
            RequestMultiResponsesServerCallback callback)
        {
            Console.WriteLine("ServerConnectors_OnRequestMultiResponses");

            var list = new List<string>();

            for (int i = 0; i < 3500; i++)
            {
                list.Add(i.ToString());
                if (i % 1000000 == 0) Console.WriteLine(i);
            }

            //callback(
            //    serverConnectorContext, module, command, requestId,
            //    new GetListResponsePacket() { Records = list },
            //    false, 1, 3, null);

            ////throw new Exception("ServerConnectors_OnRequestMultiResponses");


            //callback(
            //    serverConnectorContext, module, command, requestId,
            //    new GetListResponsePacket() { Records = list },
            //    false, 2, 3, null);

            //callback(
            //    serverConnectorContext, module, command, requestId,
            //    new GetListResponsePacket() { Records = list },
            //    true, 3, 3, null);


            serverConnectorContext.SendMultiResponse(module, command, requestId, callback, new GetListResponsePacket(), list, 100);
        }
Пример #4
0
        private static void ServerConnectors_OnDisconnect(ServerConnectorContext serverConnectorContext)
        {
            var remoteEndPoint = "NA";
            try { remoteEndPoint = serverConnectorContext.Socket.RemoteEndPoint.ToString(); } catch { }

            Console.WriteLine($"ServerConnectors_OnDisconnect RemoteEndPoint:{remoteEndPoint}");
        }
Пример #5
0
        //private object ServerConnectors_OnRequestPacket(ServerConnectorContext serverConnectorContext, int module, int command, object packet)
        //{

        //}

        private static void ServerConnectors_OnPacket(ServerConnectorContext serverConnectorContext, int module, int command, object packet)
        {
            Console.WriteLine($"ServerConnectors_OnPacket RemoteEndPoint:{serverConnectorContext.Socket.RemoteEndPoint.ToString()} \r\n module:{module}  command:{command} \r\n packet:{packet.GetType().Name + ": " + JsonConvert.SerializeObject(packet)}");

            //sends echo
            _serverConnectors.Send(serverConnectorContext.Id, 1, 1, "echo: " + packet.ToString());
        }
Пример #6
0
        private object ServerConnectors_OnRequestPacket(ServerConnectorContext connectorContext, int module, int command, object packet)
        {
            var remoteEndPoint = "NA";

            try { remoteEndPoint = connectorContext.Socket.RemoteEndPoint.ToString(); } catch { }
            if (packet is LoginRequestPacket)
            {
                Console.WriteLine($"ServerConnectors_OnRequestPacket RemoteEndPoint:{remoteEndPoint} LoginRequestPacket:{JsonConvert.SerializeObject(packet)}");
                return(new LoginResponsePacket()
                {
                    RetCode = true, Message = "OK"
                });
            }
            if (packet is ReportRequestPacket)
            {
                Console.WriteLine($"ServerConnectors_OnRequestPacket RemoteEndPoint:{remoteEndPoint} ReportRequestPacket:{JsonConvert.SerializeObject(packet)}");
                var records = new List <string>(100);
                for (int i = 0; i < 100; i++)
                {
                    records.Add("this is record" + i);
                }



                return(new ReportResponsePacket()
                {
                    Records = records
                });
            }
            return(null);
        }
Пример #7
0
        private static void ServerConnectors_OnException(ServerConnectorContext connectorContext, Exception exp)
        {
            var remoteEndPoint = "NA";
            try { remoteEndPoint = connectorContext.Socket.RemoteEndPoint.ToString(); } catch { }

            Console.WriteLine($"ServerConnectors_OnException RemoteEndPoint:{remoteEndPoint} ex:{exp.ToString()}");
        }
Пример #8
0
        private object ServerConnectors_OnRequestPacket(ServerConnectorContext serverConnectorContext, int module, int command, object packet)
        {
            Console.WriteLine($"ServerConnectors_OnRequestPacket RemoteEndPoint:{serverConnectorContext.Socket.RemoteEndPoint.ToString()} \r\n module:{module}  command:{command} \r\n packet:{packet.GetType().Name + ": " + JsonConvert.SerializeObject(packet)}");
            var resPacket = HandleRequestPacket(serverConnectorContext, module, command, (dynamic)packet);

            Console.WriteLine($"===> res packet:{resPacket.GetType().Name + ": " + JsonConvert.SerializeObject(resPacket)}");
            return(resPacket);
        }
Пример #9
0
        internal void HandlePacket(ServerConnectorContext serverConnectorContext, int module, int command, SendPrivateMessagePacket packet)
        {
            var msgPacket = new OnMessagePacket()
            {
                Message = packet.Message,
            };

            _serverConnectors.Send(x => x.Data?.ToString() == packet.Username, module, command, msgPacket);
        }
Пример #10
0
        internal object HandleRequestPacket(ServerConnectorContext serverConnectorContext, int module, int command, GetGroupsRequestPacket packet)
        {
            var resPacket = new GetGroupsResponsePacket()
            {
                GroupNames = Program.ChatServerModel.Groups.Values.Select(x => x.GroupName).ToList()
            };

            return(resPacket);
        }
Пример #11
0
        internal object HandleRequestPacket(ServerConnectorContext serverConnectorContext, int module, int command, LeaveGroupRequestPacket packet)
        {
            string errMsg = Program.ChatServerModel.LeaveGroup(packet.GroupName, serverConnectorContext.Id.ToString());

            var resPacket = new LeaveGroupResponsePacket()
            {
                RetCode = errMsg == null,
                Message = errMsg ?? $"Left {packet.GroupName} OK",
            };

            return(resPacket);
        }
Пример #12
0
        private void ServerConnectors_OnDisconnect(ServerConnectorContext serverConnectorContext)
        {
            var remoteEndPoint = "NA";

            try { remoteEndPoint = serverConnectorContext.Socket.RemoteEndPoint.ToString(); } catch { }

            Console.WriteLine($"ServerConnectors_OnDisconnect RemoteEndPoint:{remoteEndPoint}");

            if (serverConnectorContext.Data != null)
            {
                Program.ChatServerModel.Logout(serverConnectorContext.Data.ToString(), serverConnectorContext);
            }
        }
Пример #13
0
        internal void HandlePacket(ServerConnectorContext serverConnectorContext, int module, int command, SendGroupMessagePacket packet)
        {
            var msgPacket = new OnMessagePacket()
            {
                Message = packet.Message,
            };

            if (Program.ChatServerModel.Groups.TryGetValue(packet.GroupName, out var chatGroup) == false)
            {
                return;
            }

            _serverConnectors.Send(x => chatGroup.Members.Contains(x.Id.ToString()), module, command, msgPacket);
        }
Пример #14
0
        internal object HandleRequestPacket(ServerConnectorContext serverConnectorContext, int module, int command, GetGroupInfoRequestPacket packet)
        {
            Program.ChatServerModel.Groups.TryGetValue(packet.GroupName, out var group);

            var resPacket = new GetGroupInfoResponsePacket()
            {
                RetCode = group != null,

                Admin     = group?.Admin,
                GroupName = group?.GroupName,
                Members   = group?.Members,
            };

            return(resPacket);
        }
Пример #15
0
        private static object ServerConnectors_OnRequestPacket(ServerConnectorContext connectorContext, int module, int command, object packet)
        {
            var list = new List<string>();
            //var n = 35_000_000;
            var n = 3_500_000;

            //throw new Exception("ServerConnectors_OnRequestPacket");

            for (int i = 0; i < n ; i++)
            {
                list.Add(i.ToString());
                if (i % 1000000 == 0) Console.WriteLine(i);
            }

            return new GetListResponsePacket() { Records = list };
        }
Пример #16
0
        internal string Login(string username, ServerConnectorContext serverConnectorContext)
        {
            if (string.IsNullOrWhiteSpace(username))
            {
                return("username is empty");
            }

            if (Users.TryGetValue(username, out var connectorsIds) == false)
            {
                connectorsIds   = new HashSet <int>();
                Users[username] = connectorsIds;
            }
            connectorsIds.Add(serverConnectorContext.Id); //user can be connected multiple times
            serverConnectorContext.Data = username;

            return(null);
        }
Пример #17
0
        internal object HandleRequestPacket(ServerConnectorContext serverConnectorContext, int module, int command, LoginRequestPacket packet)
        {
            string errMsg  = Program.ChatServerModel.Login(packet.Username, serverConnectorContext);
            bool   retcode = errMsg == null;

            if (retcode == true)
            {
                Program.ChatServerModel.JoinGroup("Lobby", serverConnectorContext.Id.ToString());
            }

            var resPacket = new LoginResponsePacket()
            {
                RetCode = retcode,
                Message = retcode ? "Login OK" : errMsg
            };

            return(resPacket);
        }
Пример #18
0
 private static object ServerConnectors_OnRequestPacket(ServerConnectorContext arg1, int arg2, int arg3, object arg4)
 {
     throw new NotImplementedException();
 }
Пример #19
0
 internal object HandleRequestPacket(ServerConnectorContext serverConnectorContext, int module, int command, dynamic packet)
 {
     Console.WriteLine("Warning HandlePacket - type object");
     return(null);
 }
Пример #20
0
        private void ServerConnectors_OnPacket(ServerConnectorContext serverConnectorContext, int module, int command, object packet)
        {
            Console.WriteLine($"ServerConnectors_OnPacket RemoteEndPoint:{serverConnectorContext.Socket.RemoteEndPoint.ToString()} \r\n module:{module}  command:{command} \r\n packet:{packet.GetType().Name + ": " + JsonConvert.SerializeObject(packet)}");

            HandlePacket(serverConnectorContext, module, command, (dynamic)packet);
        }
Пример #21
0
 private void ServerConnectors_OnNewConnector(ServerConnectorContext serverConnectorContext)
 {
     Console.WriteLine($"ServerConnectors_OnNewConnector RemoteEndPoint:{serverConnectorContext.Socket.RemoteEndPoint.ToString()}");
 }
Пример #22
0
 internal void HandlePacket(ServerConnectorContext serverConnectorContext, int module, int command, dynamic packet)
 {
     Console.WriteLine("Warning HandlePacket - type object");
 }