GATE
C/C++ Framework
Loading...
Searching...
No Matches
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"

Functions

GATE_NET_API gate_result_t gate_socketselector_create (gate_socketselector_t *selector)
 Initlializes a socket selector struct.
GATE_NET_API gate_result_t gate_socketselector_destroy (gate_socketselector_t *selector)
 Releases resources of an initialized socket selector struct.
GATE_NET_API gate_result_t gate_socketselector_interrupt (gate_socketselector_t *selector)
 Interrupts a waiting selector (blocking in a select-call)
GATE_NET_API gate_result_t gate_socketselector_select (gate_socketselector_t *selector, gate_socket_t const *socks, gate_size_t sockscount, gate_uint8_t *statusflags, gate_uint32_t timeout)
 Waits for events on a set of sockets and their specified event-interests.
GATE_NET_API gate_result_t gate_socketgroup_create (gate_socketgroup_t *group, void *user_tag)
 Creates a new socketgroup object.
GATE_NET_API gate_result_t gate_socketgroup_destroy (gate_socketgroup_t *group)
 Destroys a socketgroup object.
GATE_NET_API gate_result_t gate_socketgroup_remove (gate_socketgroup_t *group, gate_socket_t sock)
 Removes all pending tasks for a specific socket from a socketgroup object.
GATE_NET_API gate_result_t gate_socketgroup_clear (gate_socketgroup_t *group)
 Clears the group-queue and removes all pending tasks.
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)
 Adds a socket-connect task to a socketgroup object.
GATE_NET_API gate_result_t gate_socketgroup_accept (gate_socketgroup_t *group, gate_socket_t sock, void *param)
 Adds a socket-accept task to a socketgroup object.
GATE_NET_API gate_result_t gate_socketgroup_read (gate_socketgroup_t *group, gate_socket_t sock, gate_size_t length, void *param)
 Adds a socket read/receive task to a socketgroup object.
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)
 Adds a socket write/send task to a socketgroup object.
GATE_NET_API gate_result_t gate_socketgroup_shutdown_write (gate_socketgroup_t *group, gate_socket_t sock, void *param)
 Adds a socket-shutdown-write task to a socketgroup object.
GATE_NET_API gate_result_t gate_socketgroup_run (gate_socketgroup_t *group, gate_socketgroup_callback_t callback)
 Runs a socketgroup queue-session.
GATE_NET_API gate_result_t gate_socketgroup_quit (gate_socketgroup_t *group)
 Quits a running socketgroup session.
GATE_NET_API gate_result_t gate_socketqueue_create (gate_socketqueue_t **ptr_queue, gate_uint32_t idle_interval_ms)
 Creates a socket queue object.
GATE_NET_API gate_result_t gate_socketstream_create (gate_socket_t sock, gate_controlstream_t **ptr_stream)
 Creates a stream object from a TCP client socket.
GATE_NET_API gate_result_t gate_socketstream_create_endpoint (gate_socket_endpoint_t const *ep, gate_controlstream_t **ptr_stream, gate_bool_t delay_connect)
 Creates a stream object from a TCP client socket.
GATE_NET_API gate_result_t gate_socketstream_create_address (gate_string_t const *addr, gate_controlstream_t **ptr_stream, gate_bool_t delay_connect)
 Create as stream object from a TCP client socket.
GATE_NET_API gate_result_t gate_socketstream_create_server (gate_socket_endpoint_t const *bind_ep, gate_controlstream_t **ptr_stream)
 Creates a stream object from a TCP server socket.

Detailed Description

Additional network socket tools.

Function Documentation

◆ gate_socketselector_create()

GATE_NET_API gate_result_t gate_socketselector_create ( gate_socketselector_t * selector)

Initlializes a socket selector struct.

Parameters
[in]selectorPointer to selector to be initialized
Returns
GATE_RESULT_* code

◆ gate_socketselector_destroy()

GATE_NET_API gate_result_t gate_socketselector_destroy ( gate_socketselector_t * selector)

Releases resources of an initialized socket selector struct.

Parameters
[in]selectorPointer to selector to be destroyed
Returns
GATE_RESULT_* code

◆ gate_socketselector_interrupt()

GATE_NET_API gate_result_t gate_socketselector_interrupt ( gate_socketselector_t * selector)

Interrupts a waiting selector (blocking in a select-call)

Parameters
[in]selectorPointer to selector to be interrupted
Returns
GATE_RESULT_* code

◆ gate_socketselector_select()

GATE_NET_API gate_result_t gate_socketselector_select ( gate_socketselector_t * selector,
gate_socket_t const * socks,
gate_size_t sockscount,
gate_uint8_t * statusflags,
gate_uint32_t timeout )

Waits for events on a set of sockets and their specified event-interests.

Parameters
[in]selectorPointer to selector
[in]socksPointer to array of sockets to watch
[in]sockscountCount of items in socks array
[in,out]statusflagsPointer to array of statusflags to watch associated to socks which are updated with detected status on return
[in]timeoutMaximum timeout in milliseconds
Returns
GATE_RESULT_* code

◆ gate_socketgroup_create()

GATE_NET_API gate_result_t gate_socketgroup_create ( gate_socketgroup_t * group,
void * user_tag )

Creates a new socketgroup object.

Parameters
[out]grouppointer to socketgroup object to be initialized
[in]user_taguser parameter for event handling
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_destroy()

GATE_NET_API gate_result_t gate_socketgroup_destroy ( gate_socketgroup_t * group)

Destroys a socketgroup object.

Parameters
[in]grouppointer to socketgroup object
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_remove()

GATE_NET_API gate_result_t gate_socketgroup_remove ( gate_socketgroup_t * group,
gate_socket_t sock )

Removes all pending tasks for a specific socket from a socketgroup object.

Parameters
[in]grouppointer to socketgroup object
[in]socksocket to be removed
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_clear()

GATE_NET_API gate_result_t gate_socketgroup_clear ( gate_socketgroup_t * group)

Clears the group-queue and removes all pending tasks.

Parameters
[in]grouppointer to socketgroup object
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_connect()

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 )

Adds a socket-connect task to a socketgroup object.

Parameters
[in]grouppointer to queue
[in]socksocket to be accessed
[in]eppointer to destination-endpoint
[in]paramparameter for event callback
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_accept()

GATE_NET_API gate_result_t gate_socketgroup_accept ( gate_socketgroup_t * group,
gate_socket_t sock,
void * param )

Adds a socket-accept task to a socketgroup object.

Parameters
[in]grouppointer to queue
[in]socksocket to be accessed
[in]paramparameter for event callback
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_read()

GATE_NET_API gate_result_t gate_socketgroup_read ( gate_socketgroup_t * group,
gate_socket_t sock,
gate_size_t length,
void * param )

Adds a socket read/receive task to a socketgroup object.

Parameters
[in]grouppointer to socketgroup object
[in]socksocket to be accessed
[in]lengthmaximum length in bytes to be requested from socket
[in]paramparameter for event callback
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_write()

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 )

Adds a socket write/send task to a socketgroup object.

Parameters
[in]grouppointer to socketgroup object
[in]socksocket to be accessed
[in]datapointer to data to be sent
[in]lengthlength of send-data in bytes
[in]paramparameter for event callback
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_shutdown_write()

GATE_NET_API gate_result_t gate_socketgroup_shutdown_write ( gate_socketgroup_t * group,
gate_socket_t sock,
void * param )

Adds a socket-shutdown-write task to a socketgroup object.

Parameters
[in]grouppointer to socketgroup object
[in]socksocket to be shut down
[in]paramparameter for event callback
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_run()

GATE_NET_API gate_result_t gate_socketgroup_run ( gate_socketgroup_t * group,
gate_socketgroup_callback_t callback )

Runs a socketgroup queue-session.

Parameters
[in]grouppointer to queue to be executed
[in]callbackpointer to callback function for event handling
Returns
GATE_RESULT_* result code

◆ gate_socketgroup_quit()

GATE_NET_API gate_result_t gate_socketgroup_quit ( gate_socketgroup_t * group)

Quits a running socketgroup session.

Parameters
[in]grouppointer to queue-pointer to be filled with created object
Returns
GATE_RESULT_* result code

◆ gate_socketqueue_create()

GATE_NET_API gate_result_t gate_socketqueue_create ( gate_socketqueue_t ** ptr_queue,
gate_uint32_t idle_interval_ms )

Creates a socket queue object.

Parameters
[out]ptr_queuepointer to queue-pointer to be filled with created object
[in]idle_interval_msidle interval in milliseconds, invokes HEARTBEAT callback if no event occurs.
Returns
GATE_RESULT_* result code

◆ gate_socketstream_create()

GATE_NET_API gate_result_t gate_socketstream_create ( gate_socket_t sock,
gate_controlstream_t ** ptr_stream )

Creates a stream object from a TCP client socket.

Parameters
[in]socka connected tcp socket
[out]ptr_streampointer to stream-pointer to be filled with created stream
Returns
GATE_RESULT_* result code, on success the object takes ownership over the socket

◆ gate_socketstream_create_endpoint()

GATE_NET_API gate_result_t gate_socketstream_create_endpoint ( gate_socket_endpoint_t const * ep,
gate_controlstream_t ** ptr_stream,
gate_bool_t delay_connect )

Creates a stream object from a TCP client socket.

Parameters
[in]eppointer to destination endpoint
[out]ptr_streampointer to stream-pointer to be filled with created stream
[in]delay_connectcreate stream with delayed-connect, false=connect immediately, true=connect on first read/write access
Returns
GATE_RESULT_* result code

◆ gate_socketstream_create_address()

GATE_NET_API gate_result_t gate_socketstream_create_address ( gate_string_t const * addr,
gate_controlstream_t ** ptr_stream,
gate_bool_t delay_connect )

Create as stream object from a TCP client socket.

Parameters
[in]addrtarget address to be parsed and connected
[out]ptr_streampointer to stream-pointer to be filled with created stream
[in]delay_connectcreate stream with delayed-connect, false=connect immediately, true=connect on first read/write access
Returns
GATE_RESULT_* result code

◆ gate_socketstream_create_server()

GATE_NET_API gate_result_t gate_socketstream_create_server ( gate_socket_endpoint_t const * bind_ep,
gate_controlstream_t ** ptr_stream )

Creates a stream object from a TCP server socket.

Parameters
[in]eppointer to destination endpoint
[out]ptr_streampointer to stream-pointer to be filled with created stream
[in]delay_connectcreate stream with delayed-connect, false=connect immediately, true=connect on first read/write access
Returns
GATE_RESULT_* result code