1 /**
2 @file packet.c
3 @brief ENet packet management functions
4 */
5 #include <string.h>
6 #define ENET_BUILDING_LIB 1
7 #include "enet/memory.h"
8 #include "enet/enet.h"
9
10 /** @defgroup Packet ENet packet functions
11 @{
12 */
13
14 /** Creates a packet that may be sent to a peer.
15 @param dataContents initial contents of the packet's data; the packet's data will remain uninitialized if dataContents is NULL.
16 @param dataLength size of the data allocated for this packet
17 @param flags flags for this packet as described for the ENetPacket structure.
18 @returns the packet on success, NULL on failure
19 */
20 ENetPacket *
enet_packet_create(const void * data,size_t dataLength,enet_uint32 flags)21 enet_packet_create (const void * data, size_t dataLength, enet_uint32 flags)
22 {
23 ENetPacket * packet = (ENetPacket *) enet_malloc (sizeof (ENetPacket));
24
25 packet -> data = (enet_uint8 *) enet_malloc (dataLength);
26
27 if (data != NULL)
28 memcpy (packet -> data, data, dataLength);
29
30 packet -> referenceCount = 0;
31 packet -> flags = flags;
32 packet -> dataLength = dataLength;
33
34 return packet;
35 }
36
37 /** Destroys the packet and deallocates its data.
38 @param packet packet to be destroyed
39 */
40 void
enet_packet_destroy(ENetPacket * packet)41 enet_packet_destroy (ENetPacket * packet)
42 {
43 enet_free (packet -> data);
44 enet_free (packet);
45 }
46
47 /** Attempts to resize the data in the packet to length specified in the
48 dataLength parameter
49 @param packet packet to resize
50 @param dataLength new size for the packet data
51 @returns 0 on success, < 0 on failure
52 */
53 int
enet_packet_resize(ENetPacket * packet,size_t dataLength)54 enet_packet_resize (ENetPacket * packet, size_t dataLength)
55 {
56 enet_uint8 * newData;
57
58 if (dataLength <= packet -> dataLength)
59 {
60 packet -> dataLength = dataLength;
61
62 return 0;
63 }
64
65 newData = (enet_uint8 *) enet_realloc (packet -> data, dataLength);
66
67 packet -> data = newData;
68 packet -> dataLength = dataLength;
69
70 return 0;
71 }
72
73 /** @} */
74