Esempio n. 1
0
        public void NotifyInDisConnectClient(EFBinaryRequestInfo requestData)
        {
            var sessionID = requestData.SessionID;
            var user      = UserMgr.GetUser(sessionID);

            if (user != null)
            {
                var roomNum = user.RoomNumber;

                if (roomNum != PacketDef.INVALID_ROOM_NUMBER)
                {
                    var packet = new PKTInternalNtfRoomLeave()
                    {
                        RoomNumber = roomNum,
                        UserID     = user.ID(),
                    };

                    var packetBodyData = MessagePackSerializer.Serialize(packet);
                    var internalPacket = new ServerPacketData();
                    internalPacket.Assign(sessionID, (Int16)PACKETID.NTF_IN_ROOM_LEAVE, packetBodyData);

                    DistributePacket(internalPacket);
                }

                UserMgr.RemoveUser(sessionID);
            }
        }
        public static EFBinaryRequestInfo MakeNTFInConnectOrDisConnectClientPacket(bool isConnect, string sessionID)
        {
            var packet = new EFBinaryRequestInfo(null);

            packet.Data = new byte[MsgPackPacketHeadInfo.HeadSize];

            if (isConnect)
            {
                MsgPackPacketHeadInfo.WritePacketId(packet.Data, (UInt16)PACKETID.NTF_IN_CONNECT_CLIENT);
            }
            else
            {
                MsgPackPacketHeadInfo.WritePacketId(packet.Data, (UInt16)PACKETID.NTF_IN_DISCONNECT_CLIENT);
            }

            packet.SessionID = sessionID;
            return(packet);
        }
Esempio n. 3
0
        public void RequestLogin(EFBinaryRequestInfo packetData)
        {
            var sessionID = packetData.SessionID;

            MainServer.MainLogger.Debug("로그인 요청 받음");

            try
            {
                if (UserMgr.GetUser(sessionID) != null)
                {
                    ResponseLoginToClient(ERROR_CODE.LOGIN_ALREADY_WORKING, packetData.SessionID);
                    return;
                }

                var reqData   = MessagePackSerializer.Deserialize <PKTReqLogin>(packetData.Data);
                var errorCode = UserMgr.AddUser(reqData.UserID, sessionID);
                if (errorCode != ERROR_CODE.NONE)
                {
                    ResponseLoginToClient(errorCode, packetData.SessionID);

                    if (errorCode == ERROR_CODE.LOGIN_FULL_USER_COUNT)
                    {
                        NotifyMustCloseToClient(ERROR_CODE.LOGIN_FULL_USER_COUNT, packetData.SessionID);
                    }

                    return;
                }

                ResponseLoginToClient(errorCode, packetData.SessionID);

                MainServer.MainLogger.Debug($"로그인 결과. UserID:{reqData.UserID}, {errorCode}");
            }
            catch (Exception ex)
            {
                // 패킷 해제에 의해서 로그가 남지 않도록 로그 수준을 Debug로 한다.
                MainServer.MainLogger.Error(ex.ToString());
            }
        }
 public void InsertPacket(EFBinaryRequestInfo data)
 {
     MsgBuffer.Post(data);
 }
Esempio n. 5
0
 public void NotifyInConnectClient(EFBinaryRequestInfo requestData)
 {
 }