libasyncd
ad_server.c File Reference

Main core logic of the server implementation. More...

Go to the source code of this file.

Functions

enum ad_log_e ad_log_level (enum ad_log_e log_level)
 Set debug output level.
 
ad_server_tad_server_new (void)
 Create a server object.
 
int ad_server_start (ad_server_t *server)
 Start server.
 
void ad_server_stop (ad_server_t *server)
 Stop server.
 
void ad_server_free (ad_server_t *server)
 Release server object and all the resources.
 
void ad_server_global_free (void)
 Clean up all the global objects.
 
void ad_server_set_option (ad_server_t *server, const char *key, const char *value)
 Set server option.
 
char * ad_server_get_option (ad_server_t *server, const char *key)
 Retrieve server option.
 
int ad_server_get_option_int (ad_server_t *server, const char *key)
 Retrieve server option in integer format.
 
SSL_CTX * ad_server_get_ssl_ctx (ad_server_t *server)
 Get OpenSSL SSL_CTX object.
 
qhashtbl_t * ad_server_get_stats (ad_server_t *server, const char *key)
 Return internal statistic counter map.
 
void ad_server_register_hook (ad_server_t *server, ad_callback cb, void *userdata)
 Register user hook.
 
void ad_server_register_hook_on_method (ad_server_t *server, const char *method, ad_callback cb, void *userdata)
 Register user hook on method name.
 
void * ad_conn_set_userdata (ad_conn_t *conn, const void *userdata, ad_userdata_free_cb free_cb)
 Attach userdata into the connection.
 
void * ad_conn_get_userdata (ad_conn_t *conn)
 Get userdata attached in the connection.
 
void * ad_conn_set_extra (ad_conn_t *conn, const void *extra, ad_userdata_free_cb free_cb)
 Set extra userdata into the connection.
 
void * ad_conn_get_extra (ad_conn_t *conn)
 Get extra userdata attached in this connection.
 
char * ad_conn_set_method (ad_conn_t *conn, char *method)
 Set method name on this connection.
 

Variables

int _ad_log_level = AD_LOG_WARN
 

Detailed Description

Main core logic of the server implementation.

Definition in file ad_server.c.

Function Documentation

enum ad_log_e ad_log_level ( enum ad_log_e  log_level)

Set debug output level.

Parameters
debug_leveldebug output level. 0 to disable.
Returns
previous debug level.
Note
debug_level: AD_LOG_DISABLE AD_LOG_ERROR AD_LOG_WARN (default) AD_LOG_INFO AD_LOG_DEBUG AD_LOG_DEBUG2

Definition at line 93 of file ad_server.c.

ad_server_t* ad_server_new ( void  )

Create a server object.

Definition at line 102 of file ad_server.c.

int ad_server_start ( ad_server_t server)

Start server.

Returns
0 if successful, otherwise -1.

Definition at line 131 of file ad_server.c.

void ad_server_stop ( ad_server_t server)

Stop server.

This call is be used to stop a server from different thread.

Returns
0 if successful, otherwise -1.

Definition at line 250 of file ad_server.c.

void ad_server_free ( ad_server_t server)

Release server object and all the resources.

Definition at line 266 of file ad_server.c.

void ad_server_global_free ( void  )

Clean up all the global objects.

This will make memory-leak checkers happy. There are globally shared resources in libevent and openssl and it's usually not a problem since they don't grow but having these can confuse some debugging tools into thinking as memory leak. If you need to make sure that libasyncd has released all internal library-global data structures, call this.

Definition at line 315 of file ad_server.c.

void ad_server_set_option ( ad_server_t server,
const char *  key,
const char *  value 
)

Set server option.

See Also
AD_SERVER_OPTIONS

Definition at line 333 of file ad_server.c.

char* ad_server_get_option ( ad_server_t server,
const char *  key 
)

Retrieve server option.

Definition at line 340 of file ad_server.c.

int ad_server_get_option_int ( ad_server_t server,
const char *  key 
)

Retrieve server option in integer format.

Definition at line 347 of file ad_server.c.

SSL_CTX* ad_server_get_ssl_ctx ( ad_server_t server)

Get OpenSSL SSL_CTX object.

Returns
SSL_CTX object, NULL if not enabled.
Note
Libasyncd initializes SSL_CTX with minimum default with "SSLv23_server_method" which will make the server understand SSLv2, SSLv3, and TLSv1 protocol. Use returned SSL_CTX object to set any custom options before starting the server.
SSL_CTX *sslctx = ad_server_get_ssl_ctx(server);
SSL_CTX_set_options(sslctx, SSL_OP_NO_SSLv2);
SSL_CTX_set_session_cache_mode(sslctx, SSL_SESS_CACHE_SERVER);

Definition at line 370 of file ad_server.c.

qhashtbl_t* ad_server_get_stats ( ad_server_t server,
const char *  key 
)

Return internal statistic counter map.

Definition at line 377 of file ad_server.c.

void ad_server_register_hook ( ad_server_t server,
ad_callback  cb,
void *  userdata 
)

Register user hook.

Definition at line 384 of file ad_server.c.

void ad_server_register_hook_on_method ( ad_server_t server,
const char *  method,
ad_callback  cb,
void *  userdata 
)

Register user hook on method name.

Definition at line 391 of file ad_server.c.

void* ad_conn_set_userdata ( ad_conn_t conn,
const void *  userdata,
ad_userdata_free_cb  free_cb 
)

Attach userdata into the connection.

Returns
previous userdata;

Definition at line 406 of file ad_server.c.

void* ad_conn_get_userdata ( ad_conn_t conn)

Get userdata attached in the connection.

Returns
previous userdata;

Definition at line 415 of file ad_server.c.

void* ad_conn_set_extra ( ad_conn_t conn,
const void *  extra,
ad_userdata_free_cb  free_cb 
)

Set extra userdata into the connection.

Returns
previous userdata;
Note
Extra userdata is for default protocol handler such as ad_http_handler to provide higher abstraction. End users should always use only ad_conn_set_userdata() to avoid any conflict with default handlers.

Definition at line 429 of file ad_server.c.

void* ad_conn_get_extra ( ad_conn_t conn)

Get extra userdata attached in this connection.

Definition at line 436 of file ad_server.c.

char* ad_conn_set_method ( ad_conn_t conn,
char *  method 
)

Set method name on this connection.

Once the method name is set, hooks registered by ad_server_register_hook_on_method() will be called if method name is matching as registered.

See Also
ad_server_register_hook_on_method()

Definition at line 448 of file ad_server.c.

Variable Documentation

int _ad_log_level = AD_LOG_WARN

Definition at line 75 of file ad_server.c.