liblscp  0.6.1
server.h
Go to the documentation of this file.
1 // server.h
2 //
3 /****************************************************************************
4  liblscp - LinuxSampler Control Protocol API
5  Copyright (C) 2004-2019, rncbc aka Rui Nuno Capela. All rights reserved.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Lesser General Public
9  License as published by the Free Software Foundation; either
10  version 2.1 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Lesser General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License along
18  with this program; if not, write to the Free Software Foundation, Inc.,
19  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 
21 *****************************************************************************/
22 
23 #ifndef __LSCP_SERVER_H
24 #define __LSCP_SERVER_H
25 
26 #include "lscp/socket.h"
27 #include "lscp/event.h"
28 
29 #if defined(__cplusplus)
30 extern "C" {
31 #endif
32 
33 //-------------------------------------------------------------------------
34 // Server socket modes.
35 
37 typedef enum _lscp_server_mode_t
38 {
41 
43 
44 
46 typedef enum _lscp_connect_mode_t
47 {
50 
52 
53 
54 //-------------------------------------------------------------------------
55 // Server socket structures.
56 
57 struct _lscp_server_t;
58 
60 typedef struct _lscp_connect_t
61 {
66  struct _lscp_connect_t *next;
67 
69 
71 typedef struct _lscp_connect_list_t
72 {
75  unsigned int count;
77 
79 
82 (
83  lscp_connect_t *pConnect,
84  const char *pchBuffer,
85  int cchBuffer,
86  void *pvData
87 );
88 
90 typedef struct _lscp_server_t
91 {
95  void *pvData;
97 
99 
100 
101 //-------------------------------------------------------------------------
102 // Server versioning teller fuunctions.
103 
104 const char * lscp_server_package (void);
105 const char * lscp_server_version (void);
106 const char * lscp_server_build (void);
107 
108 
109 //-------------------------------------------------------------------------
110 // Server socket functions.
111 
112 lscp_server_t * lscp_server_create (int iPort, lscp_server_proc_t pfnCallback, void *pvData);
113 lscp_server_t * lscp_server_create_ex (int iPort, lscp_server_proc_t pfnCallback, void *pvData, lscp_server_mode_t mode);
116 
117 lscp_status_t lscp_server_broadcast (lscp_server_t *pServer, lscp_event_t event, const char *pchData, int cchData);
118 
119 lscp_status_t lscp_server_result (lscp_connect_t *pConnect, const char *pchBuffer, int cchBuffer);
120 
123 
124 
125 #if defined(__cplusplus)
126 }
127 #endif
128 
129 #endif // __LSCP_SERVER_H
130 
131 // end of server.h
lscp_server_create
lscp_server_t * lscp_server_create(int iPort, lscp_server_proc_t pfnCallback, void *pvData)
Definition: server.c:427
LSCP_BUILD
#define LSCP_BUILD
Definition: version.h:27
lscp_server_unsubscribe
lscp_status_t lscp_server_unsubscribe(lscp_connect_t *pConnect, lscp_event_t event)
Definition: server.c:704
_lscp_connect_list_t::mutex
lscp_mutex_t mutex
Definition: server.h:75
lscp_server_version
const char * lscp_server_version(void)
Definition: server.c:405
_lscp_server_t::pfnCallback
lscp_server_proc_t pfnCallback
Definition: server.h:93
_lscp_socket_agent_t
Definition: socket.h:67
lscp_server_build
const char * lscp_server_build(void)
Definition: server.c:408
_lscp_connect_list_t::last
lscp_connect_t * last
Definition: server.h:73
lscp_mutex_unlock
#define lscp_mutex_unlock(m)
Definition: thread.h:75
_lscp_socket_agent_t::iState
int iState
Definition: socket.h:72
_lscp_socket_agent_t::addr
struct sockaddr_in addr
Definition: socket.h:70
LSCP_FAILED
Definition: thread.h:70
lscp_socket_agent_start
lscp_status_t lscp_socket_agent_start(lscp_socket_agent_t *pAgent, lscp_thread_proc_t pfnProc, void *pvData, int iDetach)
Definition: socket.c:210
_lscp_connect_t::client
lscp_socket_agent_t client
Definition: server.h:62
lscp_server_package
const char * lscp_server_package(void)
Definition: server.c:402
lscp_mutex_init
#define lscp_mutex_init(m)
Definition: thread.h:72
lscp_server_create_ex
lscp_server_t * lscp_server_create_ex(int iPort, lscp_server_proc_t pfnCallback, void *pvData, lscp_server_mode_t mode)
Definition: server.c:452
_lscp_connect_t::server
struct _lscp_server_t * server
Definition: server.h:61
lscp_server_version
const char * lscp_server_version(void)
Definition: server.c:405
_lscp_connect_list_t
Definition: server.h:70
lscp_connect_list_t
struct _lscp_connect_list_t lscp_connect_list_t
lscp_server_t
struct _lscp_server_t lscp_server_t
lscp_socket_agent_join
lscp_status_t lscp_socket_agent_join(lscp_socket_agent_t *pAgent)
Definition: socket.c:224
_lscp_server_mode_t
_lscp_server_mode_t
Definition: server.h:36
lscp_mutex_destroy
#define lscp_mutex_destroy(m)
Definition: thread.h:73
lscp_mutex_lock
#define lscp_mutex_lock(m)
Definition: thread.h:74
lscp_status_t
enum _lscp_status_t lscp_status_t
LSCP_SERVER_SLEEP
#define LSCP_SERVER_SLEEP
Definition: server.c:24
LSCP_PACKAGE
#define LSCP_PACKAGE
Definition: version.h:25
lscp_connect_mode_t
enum _lscp_connect_mode_t lscp_connect_mode_t
lscp_server_package
const char * lscp_server_package(void)
Definition: server.c:402
lscp_mutex_t
pthread_mutex_t lscp_mutex_t
Definition: thread.h:71
lscp_server_destroy
lscp_status_t lscp_server_destroy(lscp_server_t *pServer)
Definition: server.c:577
lscp_server_create_ex
lscp_server_t * lscp_server_create_ex(int iPort, lscp_server_proc_t pfnCallback, void *pvData, lscp_server_mode_t mode)
Definition: server.c:452
lscp_server_broadcast
lscp_status_t lscp_server_broadcast(lscp_server_t *pServer, lscp_event_t event, const char *pchData, int cchData)
Definition: server.c:605
INVALID_SOCKET
#define INVALID_SOCKET
Definition: socket.h:50
lscp_server_destroy
lscp_status_t lscp_server_destroy(lscp_server_t *pServer)
Definition: server.c:577
_lscp_connect_t::next
struct _lscp_connect_t * next
Definition: server.h:65
LSCP_CONNECT_CLOSE
Definition: server.h:48
lscp_server_join
lscp_status_t lscp_server_join(lscp_server_t *pServer)
Definition: server.c:557
_lscp_server_t::mode
lscp_server_mode_t mode
Definition: server.h:91
lscp_socket_agent_free
lscp_status_t lscp_socket_agent_free(lscp_socket_agent_t *pAgent)
Definition: socket.c:235
lscp_server_mode_t
enum _lscp_server_mode_t lscp_server_mode_t
LSCP_VERSION
#define LSCP_VERSION
Definition: version.h:26
_lscp_connect_t::prev
struct _lscp_connect_t * prev
Definition: server.h:64
LSCP_SERVER_SELECT
Definition: server.h:56
event.h
lscp_server_result
lscp_status_t lscp_server_result(lscp_connect_t *pConnect, const char *pchBuffer, int cchBuffer)
Definition: server.c:657
lscp_server_subscribe
lscp_status_t lscp_server_subscribe(lscp_connect_t *pConnect, lscp_event_t event)
Definition: server.c:683
lscp_event_to_text
const char * lscp_event_to_text(lscp_event_t event)
Definition: event.c:42
LSCP_OK
Definition: thread.h:69
_lscp_socket_agent_t::sock
lscp_socket_t sock
Definition: socket.h:69
_lscp_connect_t::events
lscp_event_t events
Definition: server.h:63
LSCP_EVENT_NONE
Definition: event.h:52
lscp_connect_t
struct _lscp_connect_t lscp_connect_t
LSCP_BUFSIZ
#define LSCP_BUFSIZ
Definition: socket.h:55
lscp_server_result
lscp_status_t lscp_server_result(lscp_connect_t *pConnect, const char *pchBuffer, int cchBuffer)
Definition: server.c:657
_lscp_server_t::pvData
void * pvData
Definition: server.h:94
_lscp_server_t
Definition: server.h:89
lscp_server_join
lscp_status_t lscp_server_join(lscp_server_t *pServer)
Definition: server.c:557
_lscp_connect_list_t::count
unsigned int count
Definition: server.h:74
lscp_socket_perror
void lscp_socket_perror(const char *pszPrefix)
Definition: socket.c:113
socket.h
lscp_server_subscribe
lscp_status_t lscp_server_subscribe(lscp_connect_t *pConnect, lscp_event_t event)
Definition: server.c:683
lscp_server_proc_t
lscp_status_t(* lscp_server_proc_t)(lscp_connect_t *pConnect, const char *pchBuffer, int cchBuffer, void *pvData)
Definition: server.h:81
_lscp_connect_t
Definition: server.h:59
lscp_event_t
enum _lscp_event_t lscp_event_t
SOCKET_ERROR
#define SOCKET_ERROR
Definition: socket.h:51
lscp_server_create
lscp_server_t * lscp_server_create(int iPort, lscp_server_proc_t pfnCallback, void *pvData)
Definition: server.c:427
lscp_server_broadcast
lscp_status_t lscp_server_broadcast(lscp_server_t *pServer, lscp_event_t event, const char *pchData, int cchData)
Definition: server.c:605
lscp_socket_t
int lscp_socket_t
Definition: socket.h:49
lscp_server_build
const char * lscp_server_build(void)
Definition: server.c:408
server.h
closesocket
#define closesocket(s)
Definition: socket.h:52
lscp_socket_getopts
void lscp_socket_getopts(const char *pszPrefix, lscp_socket_t sock)
Definition: socket.c:152
_lscp_server_t::agent
lscp_socket_agent_t agent
Definition: server.h:95
_lscp_connect_list_t::first
lscp_connect_t * first
Definition: server.h:72
lscp_socket_agent_init
void lscp_socket_agent_init(lscp_socket_agent_t *pAgent, lscp_socket_t sock, struct sockaddr_in *pAddr, int cAddr)
Definition: socket.c:197
_lscp_connect_mode_t
_lscp_connect_mode_t
Definition: server.h:45
LSCP_CONNECT_OPEN
Definition: server.h:47
_lscp_server_t::connects
lscp_connect_list_t connects
Definition: server.h:92
lscp_server_unsubscribe
lscp_status_t lscp_server_unsubscribe(lscp_connect_t *pConnect, lscp_event_t event)
Definition: server.c:704
LSCP_SERVER_THREAD
Definition: server.h:55