liblscp  0.5.7
Macros | Functions
server.c File Reference
#include "server.h"

Macros

#define LSCP_SERVER_SLEEP   30
 

Functions

const char * lscp_server_package (void)
 
const char * lscp_server_version (void)
 
const char * lscp_server_build (void)
 
lscp_server_tlscp_server_create (int iPort, lscp_server_proc_t pfnCallback, void *pvData)
 
lscp_server_tlscp_server_create_ex (int iPort, lscp_server_proc_t pfnCallback, void *pvData, lscp_server_mode_t mode)
 
lscp_status_t lscp_server_join (lscp_server_t *pServer)
 
lscp_status_t lscp_server_destroy (lscp_server_t *pServer)
 
lscp_status_t lscp_server_broadcast (lscp_server_t *pServer, lscp_event_t event, const char *pchData, int cchData)
 
lscp_status_t lscp_server_result (lscp_connect_t *pConnect, const char *pchBuffer, int cchBuffer)
 
lscp_status_t lscp_server_subscribe (lscp_connect_t *pConnect, lscp_event_t event)
 
lscp_status_t lscp_server_unsubscribe (lscp_connect_t *pConnect, lscp_event_t event)
 

Macro Definition Documentation

#define LSCP_SERVER_SLEEP   30

Function Documentation

lscp_status_t lscp_server_broadcast ( lscp_server_t pServer,
lscp_event_t  event,
const char *  pchData,
int  cchData 
)

Send an event notification message to all subscribed clients.

Parameters
pServerPointer to server instance structure.
eventEvent type flag to send to all subscribed clients.
pchDataPointer to event data to be sent to all clients.
cchDataLength of the event data to be sent in bytes.
Returns
LSCP_OK on success, LSCP_FAILED otherwise.

References _lscp_connect_t::client, _lscp_server_t::connects, _lscp_connect_t::events, _lscp_connect_list_t::first, LSCP_BUFSIZ, lscp_event_to_text(), LSCP_FAILED, lscp_mutex_lock, lscp_mutex_unlock, LSCP_OK, _lscp_connect_list_t::mutex, _lscp_connect_t::next, and _lscp_socket_agent_t::sock.

Referenced by main().

const char* lscp_server_build ( void  )

Retrieve the current server library build timestamp string.

Referenced by server_callback(), and server_usage().

lscp_server_t* lscp_server_create ( int  iPort,
lscp_server_proc_t  pfnCallback,
void *  pvData 
)

Create a server instance, listening on the given port for client connections. A server callback function must be suplied that will handle every and each client request.

Parameters
iPortPort number where the server will bind for listening.
pfnCallbackCallback function to receive and handle client requests.
pvDataServer context opaque data, that will be passed to the callback function without change.
Returns
The new server instance pointer lscp_server_t if successfull, which shall be used on all subsequent server calls, NULL otherwise.

References lscp_server_create_ex(), and LSCP_SERVER_SELECT.

Referenced by main().

lscp_server_t* lscp_server_create_ex ( int  iPort,
lscp_server_proc_t  pfnCallback,
void *  pvData,
lscp_server_mode_t  mode 
)

Create a server instance, listening on the given port for client connections. A server callback function must be suplied that will handle every and each client request. A server threading model maybe specified either as multi-threaded (one thread per client) or single thread multiplex mode (one thread serves all clients).

Parameters
iPortPort number where the server will bind for listening.
pfnCallbackCallback function to receive and handle client requests.
pvDataServer context opaque data, that will be passed to the callback function without change.
modeServer mode of operation, regarding the internal threading model, either LSCP_SERVER_THREAD for a multi-threaded server, or LSCP_SERVER_SELECT for a single-threaded multiplexed server.
Returns
The new server instance pointer if successfull, which shall be used on all subsequent server calls, NULL otherwise.

References _lscp_socket_agent_t::addr, _lscp_server_t::agent, closesocket, _lscp_server_t::connects, INVALID_SOCKET, LSCP_OK, lscp_socket_agent_free(), lscp_socket_agent_init(), lscp_socket_agent_start(), lscp_socket_getopts(), lscp_socket_perror(), _lscp_server_t::mode, _lscp_server_t::pfnCallback, _lscp_server_t::pvData, _lscp_socket_agent_t::sock, and SOCKET_ERROR.

Referenced by lscp_server_create().

lscp_status_t lscp_server_destroy ( lscp_server_t pServer)

Terminate and destroy a server instance.

Parameters
pServerPointer to server instance structure.

References _lscp_server_t::agent, _lscp_server_t::connects, LSCP_FAILED, LSCP_OK, and lscp_socket_agent_free().

Referenced by main().

lscp_status_t lscp_server_join ( lscp_server_t pServer)

Wait for a server instance to terminate graciously.

Parameters
pServerPointer to server instance structure.

References _lscp_server_t::agent, LSCP_FAILED, LSCP_OK, and lscp_socket_agent_join().

const char* lscp_server_package ( void  )

Retrieve the current server library version string.

References LSCP_PACKAGE.

Referenced by server_callback(), and server_usage().

lscp_status_t lscp_server_result ( lscp_connect_t pConnect,
const char *  pchBuffer,
int  cchBuffer 
)

Send response for the current client callback request.

Parameters
pConnectPointer to client connection instance structure.
pchBufferPointer to data to be sent to the client as response.
cchBufferLength of the response data to be sent in bytes.
Returns
LSCP_OK on success, LSCP_FAILED otherwise.

References _lscp_connect_t::client, LSCP_FAILED, LSCP_OK, lscp_socket_perror(), and _lscp_socket_agent_t::sock.

Referenced by server_callback().

lscp_status_t lscp_server_subscribe ( lscp_connect_t pConnect,
lscp_event_t  event 
)

Register client as a subscriber of event broadcast messages.

Parameters
pConnectPointer to client connection instance structure.
eventEvent type flag of the requesting client subscription.
Returns
LSCP_OK on success, LSCP_FAILED otherwise.

References _lscp_connect_t::events, LSCP_EVENT_NONE, LSCP_FAILED, and LSCP_OK.

Referenced by server_callback().

lscp_status_t lscp_server_unsubscribe ( lscp_connect_t pConnect,
lscp_event_t  event 
)

Deregister client as subscriber of event broadcast messages.

Parameters
pConnectPointer to client connection instance structure.
eventEvent type flag of the requesting client unsubscription.
Returns
LSCP_OK on success, LSCP_FAILED otherwise.

References _lscp_connect_t::events, LSCP_EVENT_NONE, LSCP_FAILED, and LSCP_OK.

Referenced by server_callback().

const char* lscp_server_version ( void  )

Retrieve the current server library version string.

References LSCP_VERSION.

Referenced by server_callback(), and server_usage().