| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /**
- @file packet.c
- @brief ENet packet management functions
- */
- #include <string.h>
- #define ENET_BUILDING_LIB 1
- #include "enet/memory.h"
- #include "enet/enet.h"
- /** @defgroup Packet ENet packet functions
- @{
- */
- /** Creates a packet that may be sent to a peer.
- @param dataContents initial contents of the packet's data; the packet's data will remain uninitialized if dataContents is NULL.
- @param dataLength size of the data allocated for this packet
- @param flags flags for this packet as described for the ENetPacket structure.
- @returns the packet on success, NULL on failure
- */
- ENetPacket *
- enet_packet_create (const void * data, size_t dataLength, enet_uint32 flags)
- {
- ENetPacket * packet = (ENetPacket *) enet_malloc (sizeof (ENetPacket));
- packet -> data = (enet_uint8 *) enet_malloc (dataLength);
- if (data != NULL)
- memcpy (packet -> data, data, dataLength);
- packet -> referenceCount = 0;
- packet -> flags = flags;
- packet -> dataLength = dataLength;
- return packet;
- }
- /** Destroys the packet and deallocates its data.
- @param packet packet to be destroyed
- */
- void
- enet_packet_destroy (ENetPacket * packet)
- {
- enet_free (packet -> data);
- enet_free (packet);
- }
- /** Attempts to resize the data in the packet to length specified in the
- dataLength parameter
- @param packet packet to resize
- @param dataLength new size for the packet data
- @returns 0 on success, < 0 on failure
- */
- int
- enet_packet_resize (ENetPacket * packet, size_t dataLength)
- {
- enet_uint8 * newData;
-
- if (dataLength <= packet -> dataLength)
- {
- packet -> dataLength = dataLength;
- return 0;
- }
- newData = (enet_uint8 *) enet_realloc (packet -> data, dataLength);
- packet -> data = newData;
- packet -> dataLength = dataLength;
- return 0;
- }
- /** @} */
|