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); } }
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); }
public void SendWithOnceCallback(Allpet.DB.SDK.NetMessage msg, OnClientRecv callback) { var _id = Send(msg); this.mapRecv[_id] = callback; }