Ejemplo n.º 1
0
    private void StartPingJob()
    {
        HeartBeatRequest heartBeatRequest = new HeartBeatRequest();

        string packetPayload = JsonFx.Json.JsonWriter.Serialize(heartBeatRequest);

        SendPacket(PacketTypes.PKT_CS_PING, packetPayload);
    }
        public static IRequest Serilize(byte[] rawRequest)
        {
            IRequest request;

            if (rawRequest.Length < 1)
            {
                return(null);
            }

            switch ((QRPacketType)rawRequest[0])
            {
            case QRPacketType.AvaliableCheck:
                request = new AvaliableRequest(rawRequest);
                break;

            //verify challenge to check game server is real or fake;
            //after verify we can add game server to server list
            case QRPacketType.Challenge:
                request = new ChallengeRequest(rawRequest);
                break;

            case QRPacketType.HeartBeat:
                request = new HeartBeatRequest(rawRequest);
                break;

            case QRPacketType.KeepAlive:
                request = new KeepAliveRequest(rawRequest);
                break;

            case QRPacketType.EchoResponse:
                request = new QRRequestBase(rawRequest);
                break;

            case QRPacketType.ClientMessageACK:
                request = new QRRequestBase(rawRequest);
                break;

            default:
                LogWriter.UnknownDataRecieved(rawRequest);
                request = null;
                break;
            }

            if (request == null)
            {
                return(null);
            }

            if (!(bool)request.Parse())
            {
                LogWriter.ToLog(LogEventLevel.Error, ErrorMessage.GetErrorMessage(QRErrorCode.Parse));
                return(null);
            }

            return(request);
        }
Ejemplo n.º 3
0
        public HttpResponseMessage PostHeartBeat([FromBody] HeartBeatRequest HeartBeatRequest)
        {
            Logger.Debug("Inside UM Controller- PostHeartBeat");
            Logger.Debug("Request: " + new JavaScriptSerializer().Serialize(HeartBeatRequest));
            ErrorResponse error    = new ErrorResponse();
            var           response = new Dictionary <string, object>();

            try
            {
                string SessionID = Guid.Empty.ToString();
                if (Request.Headers != null)
                {
                    SessionID = Request.Headers.LastOrDefault().Value.First();
                    Logger.Debug("SessionID: " + SessionID.ToString());
                    if (_IUMServer.ValidateUser(SessionID))
                    {
                        System.Guid UserGUID = _IUMServer.GetUserGUID(SessionID);
                        if (_IUMServer.PostHeartBeat(HeartBeatRequest, UserGUID) > 0)
                        {
                            Logger.Debug("Response: No response In Body,Process is Success");
                            return(Request.CreateResponse(HttpStatusCode.OK));
                        }
                        else
                        {
                            error.ErrorCode    = HttpStatusCode.InternalServerError;
                            error.ErrorMessage = "Unable to insert PostHeartBeat";
                            response.Add("ErrorResponse", error);
                            return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
                        }
                    }
                    else
                    {
                        error.ErrorCode    = HttpStatusCode.Forbidden;
                        error.ErrorMessage = "Session has expired, please login again";
                        response.Add("ErrorResponse", error);
                        return(Request.CreateResponse(HttpStatusCode.Forbidden, response));
                    }
                }
                else
                {
                    error.ErrorCode    = HttpStatusCode.BadRequest;
                    error.ErrorMessage = "Unable to get SessionID in Header";
                    response.Add("ErrorResponse", error);
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, response));
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
                error.ErrorCode    = HttpStatusCode.InternalServerError;
                error.ErrorMessage = "Failure";
                response.Add("ErrorResponse", error);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, response));
            }
        }
Ejemplo n.º 4
0
        public void HeartBeatTest()
        {
            var rawRequest = new byte[] { 0x03, 0xae, 0x1f, 0x77, 0x64, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x70, 0x30, 0x00, 0x31, 0x39, 0x32, 0x2e, 0x31, 0x36, 0x38, 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x39, 0x00, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x31, 0x31, 0x31, 0x31, 0x31, 0x00, 0x6e, 0x61, 0x74, 0x6e, 0x65, 0x67, 0x00, 0x31, 0x00, 0x73, 0x74, 0x61, 0x74, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x00, 0x33, 0x00, 0x67, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x67, 0x6d, 0x74, 0x65, 0x73, 0x74, 0x00, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x79, 0x20, 0x51, 0x52, 0x32, 0x20, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x00, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x00, 0x32, 0x2e, 0x30, 0x30, 0x00, 0x68, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x32, 0x35, 0x30, 0x30, 0x30, 0x00, 0x6d, 0x61, 0x70, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x67, 0x6d, 0x74, 0x6d, 0x61, 0x70, 0x31, 0x00, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x00, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x00, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x36, 0x00, 0x6e, 0x75, 0x6d, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x00, 0x32, 0x00, 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x33, 0x32, 0x00, 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x00, 0x6f, 0x70, 0x65, 0x6e, 0x70, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x00, 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x00, 0x31, 0x00, 0x66, 0x72, 0x61, 0x67, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x30, 0x00, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x34, 0x30, 0x00, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x79, 0x00, 0x38, 0x30, 0x30, 0x00, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x6f, 0x6e, 0x00, 0x31, 0x00, 0x00, 0x00, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x00, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x00, 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x00, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x00, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x00, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x00, 0x00, 0x4a, 0x6f, 0x65, 0x20, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x00, 0x32, 0x37, 0x00, 0x36, 0x00, 0x31, 0x32, 0x33, 0x00, 0x31, 0x00, 0x34, 0x30, 0x39, 0x00, 0x4c, 0x33, 0x33, 0x74, 0x20, 0x30, 0x6e, 0x33, 0x00, 0x36, 0x00, 0x32, 0x33, 0x00, 0x32, 0x37, 0x37, 0x00, 0x30, 0x00, 0x36, 0x37, 0x33, 0x00, 0x52, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x00, 0x33, 0x30, 0x00, 0x31, 0x00, 0x31, 0x34, 0x36, 0x00, 0x31, 0x00, 0x37, 0x30, 0x31, 0x00, 0x47, 0x72, 0x38, 0x31, 0x00, 0x32, 0x31, 0x00, 0x31, 0x36, 0x00, 0x31, 0x32, 0x35, 0x00, 0x31, 0x00, 0x35, 0x38, 0x32, 0x00, 0x46, 0x6c, 0x75, 0x62, 0x62, 0x65, 0x72, 0x00, 0x33, 0x00, 0x32, 0x31, 0x00, 0x31, 0x31, 0x30, 0x00, 0x30, 0x00, 0x32, 0x39, 0x38, 0x00, 0x53, 0x61, 0x72, 0x67, 0x65, 0x00, 0x33, 0x00, 0x32, 0x38, 0x00, 0x31, 0x32, 0x35, 0x00, 0x31, 0x00, 0x35, 0x39, 0x30, 0x00, 0x00, 0x02, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x00, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x00, 0x61, 0x76, 0x67, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x00, 0x00, 0x52, 0x65, 0x64, 0x00, 0x32, 0x39, 0x34, 0x00, 0x33, 0x37, 0x39, 0x00, 0x42, 0x6c, 0x75, 0x65, 0x00, 0x38, 0x39, 0x00, 0x33, 0x38, 0x33, 0x00 };
            var request    = new HeartBeatRequest(rawRequest);

            request.Parse();
            Assert.Equal("gmtest", request.GameName);
            Assert.Equal((uint)1685528494, request.InstantKey);
            Assert.Equal(6, request.PlayerData.Count);
            Assert.Equal(19, request.ServerData.Count);
            Assert.Equal(2, request.TeamData.Count);
            Assert.Equal(HeartBeatReportType.ServerTeamPlayerData, request.ReportType);
        }
        public static void HeartBeatRequestCall(int user_id, int mode, float time)
        {
            HeartBeatRequest request = new HeartBeatRequest
            {
                user_id = user_id,
                mode    = mode,
                time    = time,
            };
            Message message = new Message();

            message.PackBuffer(ServiceID.SYNCHRONIZATION_HEART_BEAT_SERVICE, JsonTools.SerializeToString(request));
            NetworkMgr.Instance.Send(message);
        }
Ejemplo n.º 6
0
        private Empty ExecuteHeartbeat(HeartBeatRequest request)
        {
            try
            {
                string replicaId = request.ServerId;
                gStore.GetConnectionManager().ResetTimer(replicaId);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return(new Empty());
        }
        public async Task <IActionResult> StoreHeartBeat([FromBody] HeartBeatRequest heartBeatRequest)
        {
            try
            {
                await _heartBeatDataManager.StoreHeartBeat(heartBeatRequest);
            }
            catch (HandledException)
            {
                return(InternalServerErrorResult());
            }
            catch (Exception ex)
            {
                await _logsManager.ErrorAsync(new ErrorLogStructure(ex).WithErrorSource());

                return(InternalServerErrorResult());
            }

            return(Ok());
        }
Ejemplo n.º 8
0
        public HeartBeatResponse Heartbeat(HeartBeatRequest request)
        {
            var lastTimeStamp = request.LastTimeStamp;

            var         lst      = service.GetNeedRefreshTimeStampArticles(lastTimeStamp);
            List <long> taskList = new List <long>();

            if (lst.Contains((int)TimeStampArticleEnum.AccountSubject))
            {
                taskList.Add((long)HeartBeatTask.RefreshAccountSubjectTask);
            }
            if (lst.Contains((int)TimeStampArticleEnum.UserList))
            {
                taskList.Add((long)HeartBeatTask.RefreshUserListTask);
            }
            if (lst.Contains((int)TimeStampArticleEnum.Auxiliary))
            {
                taskList.Add((long)HeartBeatTask.RefreshAuxiliaryTask);
            }
            return(new HeartBeatResponse {
                TimeStamp = CommonUtils.TotalMilliseconds(), TaskList = taskList
            });
        }
Ejemplo n.º 9
0
        public async Task StoreHeartBeat(HeartBeatRequest heartBeatRequest)
        {
            IDbBase dbBase = null;

            try
            {
                dbBase = _dbFactory.GetDbBase();

                var parameters = new List <TimescaleParameter>
                {
                    new TimescaleParameter
                    {
                        NpgsqlValue   = heartBeatRequest.InstanceId,
                        ParameterName = INSTANCE_ID_PARAMETER_NAME,
                        NpgsqlDbType  = NpgsqlDbType.Bigint
                    }
                };

                await dbBase.ConnectAsync();

                await dbBase.ExecuteNonQueryFunctionAsync(ADD_HEART_BEAT_FUNCTION_NAME, parameters);
            }
            catch (Exception ex)
            {
                await _logsManager.ErrorAsync(new ErrorLogStructure(ex).WithErrorSource());

                throw new HandledException(ex);
            }
            finally
            {
                if (dbBase != null)
                {
                    await dbBase.DisconnectAsync();
                }
            }
        }
Ejemplo n.º 10
0
 public int PostHeartBeat(HeartBeatRequest HeartBeatRequest, Guid UserGUID)
 {
     try
     {
         int             result = 0;
         IUserRepository _IUserRepository;
         _IUserRepository = new UserRepository(new WorkersInMotionDB());
         UserHeartBeat _userHeartBeat = new UserHeartBeat();
         _userHeartBeat.HeartBeatGUID = Guid.NewGuid();
         _userHeartBeat.UserGUID      = UserGUID;
         _userHeartBeat.Latitude      = HeartBeatRequest.latitude;
         _userHeartBeat.Longitude     = HeartBeatRequest.longitude;
         _userHeartBeat.HeartBeatTime = HeartBeatRequest.time;
         _userHeartBeat.CreateDate    = DateTime.UtcNow;
         _userHeartBeat.CreateBy      = UserGUID;
         result = _IUserRepository.InsertUserHeartBeat(_userHeartBeat);
         //result = _IUserRepository.Save();
         return(result);
     }
     catch (Exception ex)
     {
         return(0);
     }
 }
Ejemplo n.º 11
0
 public HeartBeatResponse(QRSession session, HeartBeatRequest request) : base(request)
 {
     RemoteIP   = HtonsExtensions.EndPointToIP(session.RemoteEndPoint);
     RemotePort = HtonsExtensions.EndPointToPort(session.RemoteEndPoint);
     PacketType = QRPacketType.Challenge;
 }
Ejemplo n.º 12
0
 public HeartBeatHandler(ISession session, IRequest request) : base(session, request)
 {
     _request = (HeartBeatRequest)request;
 }
Ejemplo n.º 13
0
 public HeartBeatResponse(HeartBeatRequest request, HeartBeatResult result) : base(request, result)
 {
 }
Ejemplo n.º 14
0
 public override Task <Empty> HeartBeat(HeartBeatRequest request, ServerCallContext context)
 {
     return(Task.FromResult(ExecuteHeartbeat(request)));
 }
Ejemplo n.º 15
0
        public int PostHeartBeat(HeartBeatRequest HeartBeatRequest, Guid UserGUID)
        {
            try
            {
                int result = 0;
                IUserRepository _IUserRepository;
                _IUserRepository = new UserRepository(new WorkersInMotionDB());
                UserHeartBeat _userHeartBeat = new UserHeartBeat();
                _userHeartBeat.HeartBeatGUID = Guid.NewGuid();
                _userHeartBeat.UserGUID = UserGUID;
                _userHeartBeat.Latitude = HeartBeatRequest.latitude;
                _userHeartBeat.Longitude = HeartBeatRequest.longitude;
                _userHeartBeat.HeartBeatTime = HeartBeatRequest.time;
                _userHeartBeat.CreateDate = DateTime.UtcNow;
                _userHeartBeat.CreateBy = UserGUID;
                result = _IUserRepository.InsertUserHeartBeat(_userHeartBeat);
                //result = _IUserRepository.Save();
                return result;
            }
            catch (Exception ex)
            {
                return 0;
            }

        }
Ejemplo n.º 16
0
        private IAsyncResult BeginHeartBeat(DateTime releaseTicks, AsyncCallback callback, object state)
        {
            HeartBeatRequest heartBeatRequest = new HeartBeatRequest(releaseTicks);

            return(this.Transmit(heartBeatRequest.Serialize(), callback, state));
        }