metalsvm/kernel/server.h
Carl-Benedikt Krüger 7969eb06b0 server & client test
2011-07-12 13:08:21 +02:00

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