67 lines
1.4 KiB
C
67 lines
1.4 KiB
C
#ifndef __SERVER__
|
|
#define __SERVER__
|
|
|
|
|
|
#ifdef WIN32
|
|
#include <system/threads/bthread.h>
|
|
#else
|
|
#include <metalsvm/tasks.h>
|
|
#endif
|
|
|
|
#ifndef LWIP_SOCKET
|
|
#include <lwip/sockets.h>
|
|
#endif
|
|
|
|
|
|
typedef struct _ServerEventArgs
|
|
{
|
|
unsigned int ClientID;
|
|
unsigned int dwLen;
|
|
void* pBuffer;
|
|
} ServerEventArgs;
|
|
|
|
#define DEF_BUFFERSIZE 2048
|
|
|
|
typedef void (*ServerEventHandler)(ServerEventArgs*);
|
|
|
|
#ifndef SOCKET
|
|
#define SOCKET int
|
|
#endif
|
|
|
|
|
|
typedef struct _Server
|
|
{
|
|
SOCKET sSocket;
|
|
unsigned int* sConnections;
|
|
struct sockaddr_in adAddr;
|
|
unsigned short wPort;
|
|
unsigned int dwConnections;
|
|
unsigned int dwMaximumConnections;
|
|
|
|
struct sockaddr_in* ConnectionsAddr;
|
|
|
|
tid_t bThread_listen;
|
|
tid_t* bThreads;
|
|
|
|
ServerEventHandler _OnConnect;
|
|
ServerEventHandler _OnDisconnect;
|
|
ServerEventHandler _OnRead;
|
|
ServerEventHandler _OnWrite;
|
|
} Server;
|
|
|
|
typedef struct _ServerThreadArgs
|
|
{
|
|
Server* srv;
|
|
unsigned int ID;
|
|
} ServerThreadArgs;
|
|
|
|
|
|
int srv_sendBuffer(Server* srv,unsigned int cli,void* pBuffer, unsigned int dwLen);
|
|
void srv_DisconnectClient(Server* srv,unsigned int cli);
|
|
void* srv_WaitForConnection(Server* srv);
|
|
void* srv_WaitForPacket(ServerThreadArgs* t);
|
|
|
|
int server_init(Server* srv,unsigned short Port, unsigned int dwMaxConnections);
|
|
int server_destroy(Server* srv);
|
|
|
|
#endif
|