コード例 #1
0
        public void ClientRecv(byte[] data, int offset)
        {
            //            Console.Out.WriteLine($"IPCHandler.ClientRecv: {Utility.ByteArrayToHexString(data, offset)}.");
            var headerLen = Packets.ParseIPCHeader(data, offset, out var pkt);

            //            Console.Out.WriteLine($"FFXIVIpcHeader.Type = 0x{pkt.Type:X4}.");

            OnClientRecv?.Invoke(pkt, data, offset + headerLen);
            if (pkt.Type == PingOpCode.Server)
            {
                HandleServerPing(data, offset + headerLen);
            }
        }
コード例 #2
0
        public void ClientRecv(byte[] data, int offset)
        {
            //            Console.Out.WriteLine($"KeepAliveHandler.ClientRecv: {Utility.ByteArrayToHexString(data, offset)}.");
            Packets.NaiveParsePacket <FFXIVKeepAliveData>(data, offset, out var pkt);
            //            Console.Out.WriteLine($"KeepAliveHandler.ClientRecv: ID={pkt.Id}, Timestamp={pkt.Timestamp}.");

            OnClientRecv?.Invoke(pkt);
            if (pkt.Id != _currentId)
            {
                return;
            }
            var now    = DateTime.UtcNow;
            var millis = (now - _lastKeepAliveSent).TotalMilliseconds;

            OnPingSample?.Invoke(millis, now);
        }
コード例 #3
0
        public void SendWithOnceCallback(Allpet.DB.SDK.NetMessage msg, OnClientRecv callback)
        {
            var _id = Send(msg);

            this.mapRecv[_id] = callback;
        }