server 0.0.1
basicserverinfrastructure

include/server.h

Go to the documentation of this file.
00001 #ifndef __SERVER_H__
00002 #define __SERVER_H__
00003 
00004 #include <stdio.h>      /* for printf() and fprintf() */
00005 #include <poll.h> /* for select system call and related */
00006 
00007 #include "class.h"
00008 #include "socket.h"
00009 #include "logger.h"
00010 
00011 #define POLL_FD_NSIZE           1024
00012 #define POLL_FD_SIZE            (sizeof(struct pollfd) * POLL_FD_NSIZE)
00013 
00014 #define MOVE_SIZE(size,idx)     ((size) * (POLL_FD_NSIZE-((idx)+1)))
00015 #define CLEAR_CONN(server,idx)  \
00016         memmove(&(((server)->fds)[(idx)]), \
00017                         &(((server)->fds)[(idx)+1]), \
00018                         MOVE_SIZE(sizeof(((server)->fds)[0]),(idx))); \
00019         memmove(&(((server)->conns)[(idx)]), \
00020                         &(((server)->conns)[(idx)+1]), \
00021                         MOVE_SIZE(sizeof(((server)->conns)[0]),(idx)))
00022 
00023 
00024 CLASS(Server) {
00025         Logger        logger;
00026         Sock          sock;
00027         void *        reader;
00028 
00037         nfds_t        nfds;
00038         nfds_t        ndel;
00039         struct pollfd fds[POLL_FD_NSIZE];
00040 
00041         struct {
00042                 Sock         sock;
00043                 void *       reader;
00044 
00045                 char         wbuf[2048];
00046                 char *       rbuf;
00047                 unsigned int rpos;
00048                 unsigned int wpos;
00049         } conns[POLL_FD_NSIZE];
00050 };
00051 
00052 void serverRun(Server this);
00053 void serverCloseConn(Server this, unsigned int handle);
00054 
00055 #endif // __SERVER_H__
00056 
00057 // vim: set ts=4 sw=4:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines