예제 #1
0
        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);
                }
            }
        }
예제 #2
0
파일: Packet.cs 프로젝트: fholm/ENetSharp
 public void Dispose()
 {
     if (_packet != null)
     {
         if (_packet->referenceCount == IntPtr.Zero)
         {
             Native.enet_packet_destroy(_packet);
         }
         _packet = null;
     }
 }
예제 #3
0
 public void Dispose()
 {
     if (_packet != null)
     {
         if (_packet->referenceCount == IntPtr.Zero)
         {
             Native.enet_packet_destroy(_packet);
         }
         _packet = null;
     }
 }
예제 #4
0
        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.");
            }
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
파일: Packet.cs 프로젝트: fholm/ENetSharp
 public Packet(Native.ENetPacket* packet)
 {
     _packet = packet;
 }
예제 #7
0
파일: Packet.cs 프로젝트: fholm/ENetSharp
        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.");
            }
        }
예제 #8
0
 public Packet(Native.ENetPacket *packet)
 {
     _packet = packet;
 }