Macros | Typedefs | Functions
ws_client.h File Reference

WebSocket client. More...

Macros

#define VTM_WS_CL_OPT_NO_CERT_CHECK   1
 
#define VTM_WS_CL_OPT_TIMEOUT   2
 

Typedefs

typedef struct vtm_ws_client vtm_ws_client
 

Functions

VTM_API vtm_ws_client * vtm_ws_client_new (void)
 
VTM_API void vtm_ws_client_free (vtm_ws_client *cl)
 
VTM_API int vtm_ws_client_set_opt (vtm_ws_client *cl, int opt, const void *val, size_t len)
 
VTM_API int vtm_ws_client_connect (vtm_ws_client *cl, enum vtm_socket_family fam, const char *url)
 
VTM_API int vtm_ws_client_close (vtm_ws_client *cl)
 
VTM_API int vtm_ws_client_send (vtm_ws_client *cl, enum vtm_ws_msg_type type, const void *src, size_t len)
 
VTM_API int vtm_ws_client_recv (vtm_ws_client *cl, struct vtm_ws_msg *msg)
 

Macro Definition Documentation

#define VTM_WS_CL_OPT_NO_CERT_CHECK   1

expects bool

#define VTM_WS_CL_OPT_TIMEOUT   2

expects unsigned long, value is millisceonds

Function Documentation

VTM_API vtm_ws_client* vtm_ws_client_new ( void  )

Creates a new client.

Returns
the created client which can be used in the other functions
NULL if an error occured
VTM_API void vtm_ws_client_free ( vtm_ws_client *  cl)

Releases the client and all allocated resources.

After this call the client pointer is no longer valid.

Parameters
clthe client that should be released
VTM_API int vtm_ws_client_set_opt ( vtm_ws_client *  cl,
int  opt,
const void *  val,
size_t  len 
)

Sets one of the possible options.

The possible options are macros starting with VTM_WS_CL_OPT_.

Parameters
clthe client where the option should be set
optthe option that should be set
valpointer to new value of the option
lensize of the value
Returns
VTM_OK if the option was successfully set
VTM_E_NOT_SUPPORTED if the given option or the value format is not supported
VTM_ERROR if an error occured
VTM_API int vtm_ws_client_connect ( vtm_ws_client *  cl,
enum vtm_socket_family  fam,
const char *  url 
)

Connects to given HTTP/WebSocket server

Parameters
clthe client
famthe desired socket family (IPv4 or IPv6)
urlthe url where to connect to (must use http/https as scheme)
Returns
VTM_OK if the client connected to the server
VTM_E_IO_UNKNOWN or VTM_ERROR if an error occured
VTM_API int vtm_ws_client_close ( vtm_ws_client *  cl)

Closes the connection to the server.

Parameters
clthe client that should close the connection
Returns
VTM_OK if the connection was closed successfully
VTM_E_IO_UNKNOWN or VTM_ERROR if an error occured
VTM_API int vtm_ws_client_send ( vtm_ws_client *  cl,
enum vtm_ws_msg_type  type,
const void *  src,
size_t  len 
)

Sends a message to the server.

Parameters
clthe client
typethe type of the message
srcpointer to payload of message
lenlength of payload
Returns
VTM_OK if the message was successfully sent
VTM_E_INVALID_STATE if client is not connected to a server
VTM_E_IO_UNKNOWN or VTM_ERROR if an error occured
VTM_API int vtm_ws_client_recv ( vtm_ws_client *  cl,
struct vtm_ws_msg msg 
)

Tries to receive a message.

Parameters
clthe client
[out]msgthe structure where the received message is stored
Returns
VTM_OK if a message was successfully received
VTM_E_INVALID_STATE if client is not connected to a server
VTM_E_TIMEOUT if the timeout elapsed and no message was received
VTM_E_IO_UNKNOWN or VTM_ERROR if an error occured