Binary Packet

Binary Packet — A binary data packet.

Synopsis




            GskPacket;
void        (*GskPacketDestroyFunc)         (gpointer destroy_data,
                                             GskPacket *packet);
GskPacket*  gsk_packet_new                  (gpointer data,
                                             guint length,
                                             GskPacketDestroyFunc destroy,
                                             gpointer destroy_data);
GskPacket*  gsk_packet_new_copy             (gconstpointer data,
                                             guint length);
void        gsk_packet_set_src_address      (GskPacket *packet,
                                             GskSocketAddress *address);
void        gsk_packet_set_dst_address      (GskPacket *packet,
                                             GskSocketAddress *address);
void        gsk_packet_unref                (GskPacket *packet);
GskPacket*  gsk_packet_ref                  (GskPacket *packet);

Description

A reference-counted binary piece of data with a destroy-notify to allow arbitrary memory management.

It may optionally have two GskSocketAddress to denote the source and destination of the packet.

Details

GskPacket

typedef struct {
  /*< public: readonly >*/
  gpointer data;
  guint len;
  GskSocketAddress *src_address;
  GskSocketAddress *dst_address;
  GskPacketDestroyFunc destroy;
  gpointer destroy_data;
} GskPacket;

A packet of binary data, optionally associated with a particular host.

gpointer data; the raw binary data.
guint len; length of the raw data.
GskSocketAddress *src_address;
GskSocketAddress *dst_address;
GskPacketDestroyFunc destroy; destroy notification.
gpointer destroy_data; data to invoke destroy on.

GskPacketDestroyFunc ()

void        (*GskPacketDestroyFunc)         (gpointer destroy_data,
                                             GskPacket *packet);

The actual function prototype of destroy. This is only useful if you want to examine the whole GskPacket from your destroy function.

destroy_data : as passed to gsk_packet_new()
packet : the whole packet.

gsk_packet_new ()

GskPacket*  gsk_packet_new                  (gpointer data,
                                             guint length,
                                             GskPacketDestroyFunc destroy,
                                             gpointer destroy_data);

Creates a new packet with the given data. The packet's ref-count is 1; it will be destroyed when it gets to 0.

data : binary data in the packet
length : length of binary data
destroy : method to destroy the data.
destroy_data : the argument to the destroy method.
Returns : a new GskPacket

gsk_packet_new_copy ()

GskPacket*  gsk_packet_new_copy             (gconstpointer data,
                                             guint length);

Creates a new packet with a copy of the given data. The packet's ref-count is 1; it will be destroyed when it gets to 0.

data : binary data to be copied into the packet
length : length of binary data
Returns : a new GskPacket

gsk_packet_set_src_address ()

void        gsk_packet_set_src_address      (GskPacket *packet,
                                             GskSocketAddress *address);

Change the source address associated with a packet. This should be the address of the interface the packet was sent from.

packet : a packet whose source address should be changed.
address : the new address.

gsk_packet_set_dst_address ()

void        gsk_packet_set_dst_address      (GskPacket *packet,
                                             GskSocketAddress *address);

Change the destination address associated with a packet. This should be the address of the interface the packet was sent to.

packet : a packet whose destination address should be changed.
address : the new address.

gsk_packet_unref ()

void        gsk_packet_unref                (GskPacket *packet);

Remove a reference-count from the packet, deleting the packet if it gets to 0.

packet : a packet to remove a reference from.

gsk_packet_ref ()

GskPacket*  gsk_packet_ref                  (GskPacket *packet);

Add a reference-count to the packet.

packet : a packet to add a reference to.
Returns : the packet, for convenience.