Inheritance: global::ProtoBuf.IExtensible
 private void HandleQueryUserStateResult(Msg_BL_QueryUserStateResult msg_, PBChannel channel, int src, uint session)
 {
     UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler;
     UserInfo user = dataProcess.GetUserInfo(msg_.Guid);
     if (user != null && user.CurrentState == UserState.Room) {
         user.CurrentState = UserState.Online;
     }
 }
        private void HandleQueryUserState(Msg_LB_QueryUserState msg_, PBChannel channel, int src, uint session)
        {
            Msg_BL_QueryUserStateResult builder = new Msg_BL_QueryUserStateResult();
            builder.Guid = msg_.Guid;

            UserInfo info = m_UserProcessScheduler.GetUserInfo(msg_.Guid);
            if (null == info) {
                builder.State = (int)UserState.DropOrOffline;
            } else {
                builder.State = (int)info.CurrentState;
            }

            m_UserChannel.Send(src, builder);
        }
        internal void UserRelogin(ulong guid, int srcHandle)
        {
            UserInfo user = LobbyServer.Instance.UserProcessScheduler.GetUserInfo(guid);
            if (user != null) {
                if (user.CurrentState == UserState.Room) {
                    RoomInfo room = m_LobbyInfo.GetRoomByID(user.CurrentRoomID);
                    if (room != null) {
                        //向RoomServer发送消息,重新进入房间
                        Msg_LR_ReconnectUser urBuilder = new Msg_LR_ReconnectUser();
                        urBuilder.UserGuid = guid;
                        urBuilder.RoomID = user.CurrentRoomID;
                        LobbyServer.Instance.RoomSvrChannel.Send(room.RoomServerName, urBuilder);

                        LogSys.Log(LOG_TYPE.INFO, "User Restart GameClient , guid:{0}", guid);
                    } else {
                        //房间已经关闭
                        user.ResetRoomInfo();
                        user.CurrentState = UserState.Online;

                        Msg_BL_QueryUserStateResult builder = new Msg_BL_QueryUserStateResult();
                        builder.Guid = guid;
                        builder.State = (int)UserState.Online;
                        LobbyServer.Instance.UserChannel.Send(srcHandle, builder);
                    }
                }
            } else {
                Msg_BL_QueryUserStateResult builder = new Msg_BL_QueryUserStateResult();
                builder.Guid = guid;
                builder.State = (int)UserState.DropOrOffline;
                LobbyServer.Instance.UserChannel.Send(srcHandle, builder);
            }
        }
 internal void QuitRoom(ulong guid, bool is_quit_room, int srcHandle)
 {
     UserInfo user = LobbyServer.Instance.UserProcessScheduler.GetUserInfo(guid);
     if (user != null) {
         if (user.CurrentState == UserState.Room) {
             RoomInfo room = user.Room;
             if (null != room) {
                 Msg_LR_UserQuit msg = new Msg_LR_UserQuit();
                 msg.UserGuid = guid;
                 msg.RoomID = room.RoomId;
                 LobbyServer.Instance.RoomSvrChannel.Send(room.RoomServerName, msg);
             }
         } else if (null != user.Room) {
             user.Room.DelUsers(guid);
             user.ResetRoomInfo();
             user.CurrentState = UserState.Online;
             user.LeftLife = UserInfo.c_LifeTimeWaitOffline;
         }
         LogSys.Log(LOG_TYPE.INFO, "QuitRoom Guid {0} state {1}", guid, user.CurrentState);
     } else {
         Msg_BL_QueryUserStateResult builder = new Msg_BL_QueryUserStateResult();
         builder.Guid = guid;
         builder.State = (int)UserState.DropOrOffline;
         LobbyServer.Instance.UserChannel.Send(srcHandle, builder);
     }
 }