public override void OnHeartBeat(UpdateContext context)
        {
            base.OnHeartBeat(context);

            if (!this._inited || context.utcTime - this._lastPingCSTickCounter < Consts.DEFAULT_PING_CD_TICK)
            {
                return;
            }
            GSToCS.Asking sPing = new GSToCS.Asking {
                Time = context.utcTime
            };
            byte[] data = sPing.ToByteArray();
            this.owner.TranMsgToSession(this.id, data, 0, data.Length, ( int )GSToCS.MsgID.EMsgToCsfromGsAskPing, 0, 0);
            this._lastPingCSTickCounter = context.utcTime;
        }
        private ErrorCode OnMsgFromGSAskPing(byte[] data, int offset, int size, int transID, int msgID, uint gcNetIDID)
        {
            GSToCS.Asking askPing = new GSToCS.Asking();
            askPing.MergeFrom(data, offset, size);

            CSToGS.AskPing msg = new CSToGS.AskPing {
                Time = askPing.Time
            };

            CSGSInfo csgsInfo = CS.instance.GetGSInfoByNSID(this.id);

            if (csgsInfo == null)
            {
                return(ErrorCode.GSNotFound);
            }
            this.owner.TranMsgToSession(csgsInfo.m_n32NSID, msg, ( int )CSToGS.MsgID.EMsgToGsfromCsAskPingRet, 0, 0);

            return(ErrorCode.Success);
        }