GATE
sockettools.h File Reference

Additional network socket tools. More...

#include "gate/net/gate_net_api.h"
#include "gate/gatetypes.h"
#include "gate/strings.h"
#include "gate/net/sockets.h"
#include "gate/queues.h"
#include "gate/arrays.h"
#include "gate/synchronization.h"
#include "gate/comparers.h"
#include "gate/streams.h"

Classes

struct  gate_socketselector_class
 
struct  gate_socketgroup_class
 

Macros

#define GATE_SOCKETGROUP_OPERATION_PREPARE   0
 
#define GATE_SOCKETGROUP_OPERATION_CONNECT   1
 
#define GATE_SOCKETGROUP_OPERATION_ACCEPT   2
 
#define GATE_SOCKETGROUP_OPERATION_READ   3
 
#define GATE_SOCKETGROUP_OPERATION_WRITE   4
 
#define GATE_SOCKETGROUP_OPERATION_SHUTDOWN_WRITE   5
 
#define GATE_SOCKETGROUP_OPERATION_ERROR   666
 
#define GATE_INTERFACE_NAME_SOCKETQUEUE   GATE_INTERFACE_NAME_DATAQUEUE "/socket"
 
#define GATE_SOCKETQUEUE_OPEN_CLIENT   0
 
#define GATE_SOCKETQUEUE_OPEN_SERVER   1
 
#define gate_socketqueue_start(obj, status_callback, callback_data)   (obj)->vtbl->start((obj), (status_callback), (callback_data))
 
#define gate_socketqueue_stop(obj)   (obj)->vtbl->stop((obj))
 
#define gate_socketqueue_open(obj, address, flags, user_param, ptr_channel_id)   (obj)->vtbl->open((obj), (address), (flags), (user_param), (ptr_channel_id))
 
#define gate_socketqueue_close(obj, channel_id)   (obj)->vtbl->close((obj), (channel_id))
 
#define gate_socketqueue_begin_read(obj, channel_id, size, user_param)   (obj)->vtbl->begin_read((obj), (channel_id), (size), (user_param))
 
#define gate_socketqueue_begin_write(obj, channel_id, buffer, buffer_size, user_param)   (obj)->vtbl->begin_write((obj), (channel_id), (buffer), (buffer_size), (user_param))
 
#define gate_socketqueue_close_all(obj)   (obj)->vtbl->close_all((obj))
 

Typedefs

typedef struct gate_socketselector_class gate_socketselector_t
 
typedef void(* gate_socketgroup_callback_t) (struct gate_socketgroup_class *group, gate_uint32_t operation, gate_socket_t sock, gate_result_t result, void *user_param, char const *data, gate_size_t data_len)
 
typedef struct gate_socketgroup_class gate_socketgroup_t
 

Functions

GATE_NET_API gate_result_t gate_socketselector_create (gate_socketselector_t *selector)
 
GATE_NET_API gate_result_t gate_socketselector_destroy (gate_socketselector_t *selector)
 
GATE_NET_API gate_result_t gate_socketselector_interrupt (gate_socketselector_t *selector)
 
GATE_NET_API gate_result_t gate_socketselector_select (gate_socketselector_t *selector, gate_socket_t const *socks, gate_size_t sockcount, gate_uint8_t *statusflags, gate_uint32_t timeout)
 
GATE_NET_API gate_result_t gate_socketgroup_create (gate_socketgroup_t *group, void *user_tag)
 
GATE_NET_API gate_result_t gate_socketgroup_destroy (gate_socketgroup_t *group)
 
GATE_NET_API gate_result_t gate_socketgroup_remove (gate_socketgroup_t *group, gate_socket_t sock)
 
GATE_NET_API gate_result_t gate_socketgroup_clear (gate_socketgroup_t *group)
 
GATE_NET_API gate_result_t gate_socketgroup_connect (gate_socketgroup_t *group, gate_socket_t sock, gate_socket_endpoint_t const *endpoint, void *param)
 
GATE_NET_API gate_result_t gate_socketgroup_accept (gate_socketgroup_t *group, gate_socket_t sock, void *param)
 
GATE_NET_API gate_result_t gate_socketgroup_read (gate_socketgroup_t *group, gate_socket_t sock, gate_size_t length, void *param)
 
GATE_NET_API gate_result_t gate_socketgroup_write (gate_socketgroup_t *group, gate_socket_t sock, char const *data, gate_size_t length, void *param)
 
GATE_NET_API gate_result_t gate_socketgroup_shutdown_write (gate_socketgroup_t *group, gate_socket_t sock, void *param)
 
GATE_NET_API gate_result_t gate_socketgroup_run (gate_socketgroup_t *group, gate_socketgroup_callback_t callback)
 
GATE_NET_API gate_result_t gate_socketgroup_quit (gate_socketgroup_t *group)
 
 GATE_INTERFACE (gate_socketqueue)
 
GATE_NET_API gate_result_t gate_socketqueue_create (gate_socketqueue_t **ptr_queue, gate_uint32_t idle_interval_ms)
 
GATE_NET_API gate_result_t gate_socketstream_create (gate_socket_endpoint_t const *ep, gate_controlstream_t **ptr_stream)
 
GATE_NET_API gate_result_t gate_socketstream_create_address (gate_string_t const *addr, gate_controlstream_t **ptr_stream)
 

Detailed Description

Additional network socket tools.