3 @brief ENet packet management functions
6 #define ENET_BUILDING_LIB 1
9 /** @defgroup Packet ENet packet functions
13 /** Creates a packet that may be sent to a peer.
14 @param dataContents initial contents of the packet's data; the packet's data will remain uninitialized if dataContents is NULL.
15 @param dataLength size of the data allocated for this packet
16 @param flags flags for this packet as described for the ENetPacket structure.
17 @returns the packet on success, NULL on failure
20 enet_packet_create (const void * data
, size_t dataLength
, enet_uint32 flags
)
22 ENetPacket
* packet
= (ENetPacket
*) enet_malloc (sizeof (ENetPacket
));
24 packet
-> data
= (enet_uint8
*) enet_malloc (dataLength
);
27 memcpy (packet
-> data
, data
, dataLength
);
29 packet
-> referenceCount
= 0;
30 packet
-> flags
= flags
;
31 packet
-> dataLength
= dataLength
;
36 /** Destroys the packet and deallocates its data.
37 @param packet packet to be destroyed
40 enet_packet_destroy (ENetPacket
* packet
)
42 enet_free (packet
-> data
);
46 /** Attempts to resize the data in the packet to length specified in the
48 @param packet packet to resize
49 @param dataLength new size for the packet data
50 @returns 0 on success, < 0 on failure
53 enet_packet_resize (ENetPacket
* packet
, size_t dataLength
)
57 if (dataLength
<= packet
-> dataLength
)
59 packet
-> dataLength
= dataLength
;
64 newData
= (enet_uint8
*) enet_malloc (dataLength
);
65 memcpy (newData
, packet
-> data
, packet
-> dataLength
);
66 enet_free (packet
-> data
);
68 packet
-> data
= newData
;
69 packet
-> dataLength
= dataLength
;