static void FreeCallbackHandler(Native.ENetPacket *native) { Packet packet = new Packet(native); lock (_userData) { try { PacketFreeCallback callback = (PacketFreeCallback)packet.GetUserData(_freeCallbackKey); if (callback != null) { try { Monitor.Exit(_userData); callback(packet); } finally { Monitor.Enter(_userData); } } } finally { _userData.Remove(packet); } } }
public void Dispose() { if (_packet != null) { if (_packet->referenceCount == IntPtr.Zero) { Native.enet_packet_destroy(_packet); } _packet = null; } }
public void Create(IntPtr data, int length, PacketFlags flags) { if (_packet != null) { throw new InvalidOperationException("Already created."); } _packet = Native.enet_packet_create(data, (IntPtr)length, flags); if (_packet == null) { throw new ENetException(0, "Packet creation call failed."); } }
static void FreeCallbackHandler(Native.ENetPacket *native) { Packet packet = new Packet(native); try { PacketFreeCallback callback = (PacketFreeCallback)packet.GetUserData(_freeCallbackKey); if (callback != null) { callback(packet); } } finally { _userData.Remove(packet); } }
public Packet(Native.ENetPacket* packet) { _packet = packet; }
public void Create(void* data, int length, PacketFlags flags) { if (_packet != null) { throw new InvalidOperationException("Already created."); } _packet = Native.enet_packet_create(data, (IntPtr) length, flags); if (_packet == null) { throw new ENetException(0, "Packet creation call failed."); } }
public Packet(Native.ENetPacket *packet) { _packet = packet; }