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