|  | libgpac
    Documentation of the core library of GPAC | 
#include <gpac/tools.h>#include <gpac/thread.h>#include <gpac/list.h>#include <gpac/bitstream.h>#include <gpac/network.h>#include <gpac/download.h>#include <gpac/base_coding.h> Include dependency graph for rmt_ws.c:
 Include dependency graph for rmt_ws.c:| Data Structures | |
| struct | RMT_WS | 
| Handle to the main instance.  More... | |
| struct | RMT_ServerCtx | 
| structure representing the http server  More... | |
| struct | RMT_ClientCtx | 
| structure representing a websocket client  More... | |
| Enumerations | |
| enum | { RMT_WEBSOCKET_CONTINUATION = 0 , RMT_WEBSOCKET_TEXT = 1 , RMT_WEBSOCKET_BINARY = 2 , RMT_WEBSOCKET_CLOSE = 8 , RMT_WEBSOCKET_PING = 9 , RMT_WEBSOCKET_PONG = 10 } | 
| Functions | |
| GF_DownloadSession * | gf_dm_sess_new_server (GF_DownloadManager *dm, GF_Socket *server, void *ssl_ctx, gf_dm_user_io user_io, void *usr_cbk, Bool async, GF_Err *e) | 
| void | gf_dm_sess_set_header (GF_DownloadSession *sess, const char *name, const char *value) | 
| GF_Err | gf_dm_sess_send_reply (GF_DownloadSession *sess, u32 reply_code, const char *response_body, u32 body_len, Bool no_body) | 
| void | gf_dm_sess_clear_headers (GF_DownloadSession *sess) | 
| GF_Err | dm_sess_write (GF_DownloadSession *session, const u8 *buffer, u32 size) | 
| GF_Err | gf_dm_read_data (GF_DownloadSession *sess, char *data, u32 data_size, u32 *out_read) | 
| void | httpout_format_date (u64 time, char szDate[200], Bool for_listing) | 
| GF_EXPORT const char * | gf_rmt_get_peer_address (RMT_ClientCtx *client) | 
| GF_EXPORT void * | gf_rmt_client_get_on_data_task (RMT_ClientCtx *client) | 
| gets the userdata associated with the client on data callback if defined | |
| GF_EXPORT void | gf_rmt_set_on_new_client_cbk (void *task, rmt_on_new_client_cbk cbk) | 
| GF_EXPORT void * | gf_rmt_get_on_new_client_task () | 
| gets the userdata associated with the new client callback if defined | |
| GF_EXPORT void | gf_rmt_client_set_on_del_cbk (RMT_ClientCtx *client, void *task, rmt_client_on_del_cbk cbk) | 
| GF_EXPORT void * | gf_rmt_client_get_on_del_task (RMT_ClientCtx *client) | 
| gets the userdata associated with the client on deleted callback if defined | |
| void | rmt_clientctx_del (RMT_ClientCtx *client) | 
| void | rmt_serverctx_reset (RMT_ServerCtx *ctx) | 
| void | rmt_close_client (RMT_ClientCtx *client) | 
| GF_Err | rmt_send_reply (GF_DownloadSession *http_sess, int responseCode, char *response_body, char *content_type) | 
| static void | rmt_on_http_session_data (void *usr_cbk, GF_NETIO_Parameter *parameter) | 
| GF_Err | rmt_create_server (RMT_ServerCtx *ctx) | 
| GF_EXPORT void | gf_rmt_client_set_on_data_cbk (RMT_ClientCtx *client, void *task, rmt_client_on_data_cbk cbk) | 
| GF_Err | rmt_server_handle_new_client (RMT_ServerCtx *ctx) | 
| GF_Err | rmt_client_send_payload (RMT_ClientCtx *client, const u8 *payload, u64 size, Bool is_binary) | 
| GF_Err | rmt_client_handle_ws_payload (RMT_ClientCtx *client, u8 *payload, u64 size, Bool is_binary) | 
| GF_Err | rmt_client_handle_ws_frame (RMT_ClientCtx *client, GF_BitStream *bs) | 
| GF_Err | rmt_client_handle_event (RMT_ClientCtx *client) | 
| GF_Err | rmt_client_send_ping (RMT_ClientCtx *client) | 
| GF_EXPORT GF_Err | gf_rmt_client_send_to_ws (RMT_ClientCtx *client, const char *msg, u64 size, Bool is_binary) | 
| Bool | rmt_client_should_close (RMT_ClientCtx *client) | 
| GF_Err | rmt_server_wait_for_event (RMT_ServerCtx *ctx) | 
| static u32 | rmt_ws_thread_main (void *par) | 
| RMT_Settings * | gf_rmt_get_settings () | 
| gets the current rmtws settings (creates the structure if necessary) | |
| void | rmt_ws_del (RMT_WS *rmt) | 
| deletes the main instance | |
| RMT_WS * | rmt_ws_new () | 
| creates the main instance | |
| Variables | |
| static RMT_Settings | g_Settings | 
| static Bool | g_SettingsInitialized = GF_FALSE | 
| static const char | websocket_guid [] = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" | 
| static char | RMT_WEBSOCKET_PING_MSG [2] = { 0x89, 0x00 } | 
| struct RMT_WS | 
Handle to the main instance.
| Data Fields | ||
|---|---|---|
| GF_Thread * | thread | |
| Bool | should_stop | |
| struct __rmt_serverctx | 
| struct __rmt_clientctx | 
structure representing a websocket client
| Data Fields | ||
|---|---|---|
| GF_Socket * | client_sock | |
| RMT_ServerCtx * | ctx | |
| GF_DownloadSession * | http_sess | |
| char | peer_address[GF_MAX_IP_NAME_LEN+16] | |
| char | buffer[1024] | |
| Bool | is_ws | |
| u64 | last_active_time | |
| u64 | last_ping_time | |
| Bool | should_close | |
| rmt_client_on_data_cbk | on_data_cbk | |
| void * | on_data_cbk_task | |
| rmt_client_on_del_cbk | on_del_cbk | |
| void * | on_del_cbk_task | |
| anonymous enum | 
| GF_DownloadSession * gf_dm_sess_new_server | ( | GF_DownloadManager * | dm, | 
| GF_Socket * | server, | ||
| void * | ssl_ctx, | ||
| gf_dm_user_io | user_io, | ||
| void * | usr_cbk, | ||
| Bool | async, | ||
| GF_Err * | e | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| void gf_dm_sess_set_header | ( | GF_DownloadSession * | sess, | 
| const char * | name, | ||
| const char * | value | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_Err gf_dm_sess_send_reply | ( | GF_DownloadSession * | sess, | 
| u32 | reply_code, | ||
| const char * | response_body, | ||
| u32 | body_len, | ||
| Bool | no_body | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| void gf_dm_sess_clear_headers | ( | GF_DownloadSession * | sess | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function: Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function: Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function: Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_EXPORT const char * gf_rmt_get_peer_address | ( | RMT_ClientCtx * | client | ) | 
gets a string representing the client in the format ip:port
| client | the client object | 
| GF_EXPORT void * gf_rmt_client_get_on_data_task | ( | RMT_ClientCtx * | client | ) | 
gets the userdata associated with the client on data callback if defined
| GF_EXPORT void gf_rmt_set_on_new_client_cbk | ( | void * | task, | 
| rmt_on_new_client_cbk | cbk | ||
| ) | 
sets the callback called when new clients connect to the sever
| task | user data stored and passed back to the callback | 
| cbk | the callback of type rmt_on_new_client_cbk | 
 Here is the call graph for this function:
 Here is the call graph for this function:| GF_EXPORT void * gf_rmt_get_on_new_client_task | ( | ) | 
gets the userdata associated with the new client callback if defined
| GF_EXPORT void gf_rmt_client_set_on_del_cbk | ( | RMT_ClientCtx * | client, | 
| void * | task, | ||
| rmt_client_on_del_cbk | cbk | ||
| ) | 
sets the callback called when a client is deleted
| client | the client for which we are setting the callback | 
| task | user data stored and passed back to the callback | 
| cbk | the callback of type rmt_client_on_del_cbk | 
| GF_EXPORT void * gf_rmt_client_get_on_del_task | ( | RMT_ClientCtx * | client | ) | 
gets the userdata associated with the client on deleted callback if defined
| void rmt_clientctx_del | ( | RMT_ClientCtx * | client | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| void rmt_serverctx_reset | ( | RMT_ServerCtx * | ctx | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| void rmt_close_client | ( | RMT_ClientCtx * | client | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function:| GF_Err rmt_send_reply | ( | GF_DownloadSession * | http_sess, | 
| int | responseCode, | ||
| char * | response_body, | ||
| char * | content_type | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_Err rmt_create_server | ( | RMT_ServerCtx * | ctx | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_EXPORT void gf_rmt_client_set_on_data_cbk | ( | RMT_ClientCtx * | client, | 
| void * | task, | ||
| rmt_client_on_data_cbk | cbk | ||
| ) | 
sets the callback called when a client receives data
| client | the client for which we are setting the callback | 
| task | user data stored and passed back to the callback | 
| cbk | the callback of type rmt_client_on_data_cbk | 
| GF_Err rmt_server_handle_new_client | ( | RMT_ServerCtx * | ctx | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_Err rmt_client_send_payload | ( | RMT_ClientCtx * | client, | 
| const u8 * | payload, | ||
| u64 | size, | ||
| Bool | is_binary | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_Err rmt_client_handle_ws_payload | ( | RMT_ClientCtx * | client, | 
| u8 * | payload, | ||
| u64 | size, | ||
| Bool | is_binary | ||
| ) | 
 Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_Err rmt_client_handle_ws_frame | ( | RMT_ClientCtx * | client, | 
| GF_BitStream * | bs | ||
| ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_Err rmt_client_handle_event | ( | RMT_ClientCtx * | client | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_Err rmt_client_send_ping | ( | RMT_ClientCtx * | client | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_EXPORT GF_Err gf_rmt_client_send_to_ws | ( | RMT_ClientCtx * | client, | 
| const char * | msg, | ||
| u64 | size, | ||
| Bool | is_binary | ||
| ) | 
sends data to a client on the websocket
| client | the client object | 
| msg | a buffer containing the data to send | 
| size | the size of the data to send | 
| is_binary | false if we're sending a utf8 string, true otherwise | 
 Here is the call graph for this function:
 Here is the call graph for this function:| Bool rmt_client_should_close | ( | RMT_ClientCtx * | client | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| GF_Err rmt_server_wait_for_event | ( | RMT_ServerCtx * | ctx | ) | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| RMT_Settings * gf_rmt_get_settings | ( | ) | 
gets the current rmtws settings (creates the structure if necessary)
 Here is the caller graph for this function:
 Here is the caller graph for this function:| void rmt_ws_del | ( | RMT_WS * | rmt | ) | 
deletes the main instance
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| RMT_WS * rmt_ws_new | ( | ) | 
creates the main instance
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
| 
 | static | 
| 
 | static |