Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __LSCP_SERVER_H
00024 #define __LSCP_SERVER_H
00025
00026 #include "lscp/socket.h"
00027 #include "lscp/event.h"
00028
00029 #if defined(__cplusplus)
00030 extern "C" {
00031 #endif
00032
00033
00034
00035
00037 typedef enum _lscp_server_mode_t
00038 {
00039 LSCP_SERVER_THREAD = 0,
00040 LSCP_SERVER_SELECT = 1
00041
00042 } lscp_server_mode_t;
00043
00044
00046 typedef enum _lscp_connect_mode_t
00047 {
00048 LSCP_CONNECT_OPEN = 0,
00049 LSCP_CONNECT_CLOSE = 1
00050
00051 } lscp_connect_mode_t;
00052
00053
00054
00055
00056
00057 struct _lscp_server_t;
00058
00060 typedef struct _lscp_connect_t
00061 {
00062 struct _lscp_server_t *server;
00063 lscp_socket_agent_t client;
00064 lscp_event_t events;
00065 struct _lscp_connect_t *prev;
00066 struct _lscp_connect_t *next;
00067
00068 } lscp_connect_t;
00069
00071 typedef struct _lscp_connect_list_t
00072 {
00073 lscp_connect_t *first;
00074 lscp_connect_t *last;
00075 unsigned int count;
00076 lscp_mutex_t mutex;
00077
00078 } lscp_connect_list_t;
00079
00081 typedef lscp_status_t (*lscp_server_proc_t)
00082 (
00083 lscp_connect_t *pConnect,
00084 const char *pchBuffer,
00085 int cchBuffer,
00086 void *pvData
00087 );
00088
00090 typedef struct _lscp_server_t
00091 {
00092 lscp_server_mode_t mode;
00093 lscp_connect_list_t connects;
00094 lscp_server_proc_t pfnCallback;
00095 void *pvData;
00096 lscp_socket_agent_t agent;
00097
00098 } lscp_server_t;
00099
00100
00101
00102
00103
00104 const char * lscp_server_package (void);
00105 const char * lscp_server_version (void);
00106 const char * lscp_server_build (void);
00107
00108
00109
00110
00111
00112 lscp_server_t * lscp_server_create (int iPort, lscp_server_proc_t pfnCallback, void *pvData);
00113 lscp_server_t * lscp_server_create_ex (int iPort, lscp_server_proc_t pfnCallback, void *pvData, lscp_server_mode_t mode);
00114 lscp_status_t lscp_server_join (lscp_server_t *pServer);
00115 lscp_status_t lscp_server_destroy (lscp_server_t *pServer);
00116
00117 lscp_status_t lscp_server_broadcast (lscp_server_t *pServer, lscp_event_t event, const char *pchData, int cchData);
00118
00119 lscp_status_t lscp_server_result (lscp_connect_t *pConnect, const char *pchBuffer, int cchBuffer);
00120
00121 lscp_status_t lscp_server_subscribe (lscp_connect_t *pConnect, lscp_event_t event);
00122 lscp_status_t lscp_server_unsubscribe (lscp_connect_t *pConnect, lscp_event_t event);
00123
00124
00125 #if defined(__cplusplus)
00126 }
00127 #endif
00128
00129 #endif // __LSCP_SERVER_H
00130
00131