// [ protocol : 4 // k : 4 // len : 4 // index : 4 // len : 4 // opcode : 4 // value : // ... // index : 4 private void ExecFrame() { int k; NetFrame frame; if (_queue.Dequeue(out k, out frame) == 1) { try { int offset = 0; int index = 0, len = 0; offset = NetUnpack.Unpackli(frame.buffer, offset, out index); offset = NetUnpack.Unpackli(frame.buffer, offset, out len); OpCodeParse(index, frame.buffer, offset, len); } catch (Exception ex) { k = _queue.BackK(); int len = 8; byte[] msg = new byte[len]; int offset = 0; offset = NetPack.Packli(msg, offset, (int)ProtocolType.PT_FETCHK); offset = NetPack.Packli(msg, offset, k); _ctx.SendUdp(msg, 0, len); } } else { int len = 8; byte[] msg = new byte[len]; int offset = 0; offset = NetPack.Packli(msg, offset, (int)ProtocolType.PT_FETCHK); offset = NetPack.Packli(msg, offset, k); _ctx.SendUdp(msg, 0, len); } }
public void OpCodeParse(int index, byte[] buffer, int start, int len) { int offset = start; uint opcode; offset = NetUnpack.UnpacklI(buffer, offset, out opcode); switch (opcode) { case OpCodes.OPCODE_BORN: { } break; default: break; } }
public override void OnUdpRecv(byte[] data, int start, int len) { base.OnUdpRecv(data, start, len); int protocol; int offset = NetUnpack.Unpackli(data, 0, out protocol); if (protocol == ProtocolType.PT_DATA) { for (int i = 0; i < 3; i++) { int k, sz; offset = NetUnpack.Unpackli(data, offset, out k); offset = NetUnpack.Unpackli(data, offset, out sz); byte[] buffer = new byte[sz]; Array.Copy(data, offset, buffer, 0, sz); NetFrame frame = new NetFrame(); frame.k = k; frame.buffer = buffer; _queue.Enqueue(frame); } ExecFrame(); } }