00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021
#ifndef __POSLIB_SERVER_SERVERTHREAD_H 00022
#define __POSLIB_SERVER_SERVERTHREAD_H 00023
00024
#include 00025 00026
#include <poslib/socket.h> 00027
#include 00028
#include <poslib/postime.h> 00029 00030
#include "pending.h" 00031
00039 enum sstype { 00040
ss_udp, 00041
ss_tcp, 00042
ss_client 00043 }; 00044 00046
void udpsock_handledata(
int sockid); 00048
void tcpsock_handledata(
int sockid); 00050
void clientsock_handledata(
int sockid); 00051
00058 class ServerSocket { 00059
public: 00067
ServerSocket(
sstype type,
int sockid); 00068 ~
ServerSocket(); 00070
void close(); 00071
void handle_data();
00073 sstype type;
00074 int sockid; 00075 }; 00076
00078 extern pthread_mutex_t
m_servers; 00079
#if defined(_WIN32) && !defined(BUILD_POSD_DLL) 00080
extern __declspec(dllimport) stl_slist(
ServerSocket) servers; 00081 #else 00083 extern stl_slist(
ServerSocket) servers; 00084 #endif 00085
00087 extern pthread_mutex_t m_pending_answers; 00089 extern stl_slist(
PendingAnswerUDP) pending_answers; 00090
00092 extern pthread_cond_t c_data_received; 00093
00094 extern
int udp_client_socket;
00095 extern
int udp_client_socket_6; 00097
int getclientsockid(_addr *a); 00099
void *serverthread(
void *arg);
00114 extern
bool(*allow_tcp_connection)(_addr *a,
int ntcp); 00115
00121 extern
int n_threads; 00122
00137 extern
void(*user_cleanup_function)(
void); 00138 00145
void posserver_init_srvresolver(); 00146 00153
void posserver_startback(); 00154 00162
void posserver_run(); 00163 00172
void posserver_stop(); 00173 00174 #endif