![]() | ![]() | ![]() | GSK Reference Manual | ![]() |
---|
struct GskPacketQueueClass; struct GskPacketQueue; gboolean gsk_packet_queue_bind (GskPacketQueue *queue, GskSocketAddress *address, GError **error); GskPacket* gsk_packet_queue_read (GskPacketQueue *queue, gboolean save_address, GError **error); gboolean gsk_packet_queue_write (GskPacketQueue *queue, GskPacket *out, GError **error); #define gsk_packet_queue_get_allow_address(queue) #define gsk_packet_queue_get_allow_no_address(queue) #define gsk_packet_queue_get_misses_packets(queue) #define gsk_packet_queue_get_is_readable(queue) #define gsk_packet_queue_get_is_writable(queue) #define gsk_packet_queue_peek_bound_address(queue) #define gsk_packet_queue_mark_allow_address(queue) #define gsk_packet_queue_mark_allow_no_address(queue) #define gsk_packet_queue_mark_misses_packets(queue) #define gsk_packet_queue_mark_is_readable(queue) #define gsk_packet_queue_mark_is_writable(queue) #define gsk_packet_queue_clear_allow_address(queue) #define gsk_packet_queue_clear_allow_no_address(queue) #define gsk_packet_queue_clear_misses_packets(queue) #define gsk_packet_queue_clear_is_readable(queue) #define gsk_packet_queue_clear_is_writable(queue) void gsk_packet_queue_set_bound_addresss (GskPacketQueue *queue, GskSocketAddress *address);
Datagram I/O means binary packets of data are the transmission unit. You can bind to an address in the right family, and read and write packets. Unless the packet_queue is bound, it is unlikely to ever be readable.
struct GskPacketQueueClass { GskIOClass io_class; gboolean (*bind) (GskPacketQueue *queue, GskSocketAddress *addr, GError **error); GskPacket *(*read) (GskPacketQueue *queue, gboolean save_address, GError **error); gboolean (*write) (GskPacketQueue *queue, GskPacket *out, GError **error); };
Base class for an object which can input and output packets.
GskIOClass io_class | parent class. |
gboolean (*bind ) (GskPacketQueue *queue,
GskSocketAddress *addr,
GError **error) | bind to a particular socket-address. |
GskPacket* (*read ) (GskPacketQueue *queue,
gboolean save_address,
GError **error) | read an incoming packet. |
gboolean (*write ) (GskPacketQueue *queue,
GskPacket *out,
GError **error) | write an outgoing packet. |
gboolean gsk_packet_queue_bind (GskPacketQueue *queue, GskSocketAddress *address, GError **error);
Bind a packet queue to receive on a particular address.
queue : | the packet queue to bind to a particular address. |
address : | the address to receive packets from. |
error : | optional error return value. |
Returns : | whether the bind call succeeded. |
GskPacket* gsk_packet_queue_read (GskPacketQueue *queue, gboolean save_address, GError **error);
Read a packet from the queue, optionally tracking whence it came.
queue : | to try to read a packet from |
save_address : | whether to create a remote address indication. |
error : | optional error return value. |
Returns : | a new packet, or NULL on error or if no packet was available. |
gboolean gsk_packet_queue_write (GskPacketQueue *queue, GskPacket *out, GError **error);
Try and write a packet to the queue. If the packet has no address, then the packet-queue must allow_no_address. If the packet has an address, then the packet-queue must allow_address.
queue : | to try to write a packet to |
out : | outgoing packet. |
error : | optional error return value. |
Returns : | whether the write succeeded. |
#define gsk_packet_queue_get_allow_address(queue) _gsk_packet_queue_get(queue,allow_address)
Determine whether packets with remote addresses may be written to this packet queue.
queue : | the packet-queue to query. |
#define gsk_packet_queue_get_allow_no_address(queue) _gsk_packet_queue_get(queue,allow_no_address)
Determine whether packets without a remote address may be written to this packet queue.
queue : | the packet-queue to query. |
#define gsk_packet_queue_get_misses_packets(queue) _gsk_packet_queue_get(queue,misses_packets)
Determine whether the packet-queue drops incoming packets.
queue : | the packet-queue to query. |
#define gsk_packet_queue_get_is_readable(queue) _gsk_packet_queue_get_io(queue,is_readable)
Determine whether the packet-queue may have incoming packets.
queue : | the packet-queue to query. |
#define gsk_packet_queue_get_is_writable(queue) _gsk_packet_queue_get_io(queue,is_writable)
Determine whether the packet-queue may have packets written to it.
queue : | the packet-queue to query. |
#define gsk_packet_queue_peek_bound_address(queue) ((queue)->bound_address)
Get the address this queue is bound to, or NULL.
queue : | the packet-queue to query. |
#define gsk_packet_queue_mark_allow_address(queue) _gsk_packet_queue_mark(queue,allow_address)
Indicate that this packet-queue can accept outgoing packets which have an address.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_mark_allow_no_address(queue) _gsk_packet_queue_mark(queue,allow_no_address)
Indicate that this packet-queue can accept outgoing packets which have an no address.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_mark_misses_packets(queue) _gsk_packet_queue_mark(queue,misses_packets)
Indicate that this packet-queue may drop incoming packets.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_mark_is_readable(queue) _gsk_packet_queue_mark_io(queue,is_readable)
Indicate that this packet-queue may be read from.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_mark_is_writable(queue) _gsk_packet_queue_mark_io(queue,is_writable)
Indicate that this packet-queue may be written to.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_clear_allow_address(queue) _gsk_packet_queue_clear(queue,allow_address)
Indicate that this packet-queue cannot accept outgoing packets which have an address.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_clear_allow_no_address(queue) _gsk_packet_queue_clear(queue,allow_no_address)
Indicate that this packet-queue cannot accept outgoing packets which have no address.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_clear_misses_packets(queue) _gsk_packet_queue_clear(queue,misses_packets)
Indicate that this packet-queue will not drop incoming packets.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_clear_is_readable(queue) _gsk_packet_queue_clear_io(queue,is_readable)
Indicate that this packet-queue may not be read from.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
#define gsk_packet_queue_clear_is_writable(queue) _gsk_packet_queue_clear_io(queue,is_writable)
Indicate that this packet-queue may not be written to.
This should only be used by derived classes.
queue : | the packet-queue to affect. |
void gsk_packet_queue_set_bound_addresss (GskPacketQueue *queue, GskSocketAddress *address);
Set the bound_address member of the packet-queue safely.
This should only be called by implementations which automatically bind to certain addresses.
queue : | queue to mark |
address : | address to which the queue has been bound. |
<<< Glib Helper Routines | Binary Packet >>> |