diff --git a/ChangeLog b/ChangeLog index e69de29..bf0465b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -0,0 +1,60 @@ +2012-01-18 07:52:07 +0100 Georg Hopp + + * add testserver and did some fixes not shown by my incomplete tests (HEAD, master) + +2012-01-17 15:40:07 +0100 Georg Hopp + + * more notes + +2012-01-17 15:04:33 +0100 Georg Hopp + + * add some thought + +2012-01-17 14:49:49 +0100 Georg Hopp + + * changed from select(UNIX) to poll(POSIX) + +2012-01-16 18:39:01 +0100 Georg Hopp + + * work on server_run + +2012-01-16 17:05:57 +0100 Georg Hopp + + * move test under docs dir + +2012-01-16 17:05:08 +0100 Georg Hopp + + * simply copy signal handling code from gameserver project + +2012-01-16 16:04:11 +0100 Georg Hopp + + * more work on socket handling stuff... @TODO think about renaming it to connection as it only handles TCP sockets + +2012-01-16 13:48:05 +0100 Georg Hopp + + * add info text about file handle passing and ported more stuff from my old server structure + +2012-01-16 08:05:15 +0100 Georg Hopp + + * reflect changes in configure.ac + +2012-01-13 22:46:45 +0100 Georg Hopp + + * add daemonize code from other project. (Might be integrated in a future class but i am not sure right now + +2012-01-13 22:16:17 +0100 Georg Hopp + + * logger now works and has some basic testing + +2012-01-13 22:15:03 +0100 Georg Hopp + + * change cclass so that the internal structure is no longer visible by the rest of the code + +2012-01-13 16:06:02 +0100 Georg Hopp + + * some fixes on first logger tests + +2012-01-13 15:54:22 +0100 Georg Hopp + + * initial checkin + diff --git a/Makefile.am b/Makefile.am index a3c8ccf..54bf88f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,4 +7,4 @@ ACLOCAL_AMFLAGS = -I m4 # #EXTRA_DIST = base64.h -SUBDIRS = tests +SUBDIRS = src tests diff --git a/configure.ac b/configure.ac index daa42c7..0c6888c 100644 --- a/configure.ac +++ b/configure.ac @@ -35,5 +35,5 @@ AC_TYPE_SIZE_T #AC_FUNC_MALLOC AC_CHECK_FUNCS([memset]) -AC_CONFIG_FILES([Makefile tests/Makefile]) +AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile]) AC_OUTPUT diff --git a/include/server.h b/include/server.h index 415ef20..96a5248 100644 --- a/include/server.h +++ b/include/server.h @@ -10,7 +10,15 @@ #define POLL_FD_NSIZE 1024 #define POLL_FD_SIZE (sizeof(struct pollfd) * POLL_FD_NSIZE) -#define POLL_FD_MOVE(idx) (sizeof(struct pollfd) * (POLL_FD_NSIZE-(idx)+1)) + +#define MOVE_SIZE(size,idx) ((size) * (POLL_FD_NSIZE-((idx)+1))) +#define CLEAR_CONN(server,idx) \ + memmove(&(((server)->fds)[(idx)]), \ + &(((server)->fds)[(idx)+1]), \ + MOVE_SIZE(sizeof(((server)->fds)[0]),(idx))); \ + memmove(&(((server)->conns)[(idx)]), \ + &(((server)->conns)[(idx)+1]), \ + MOVE_SIZE(sizeof(((server)->conns)[0]),(idx))) typedef void (*server_read_hook)(const char *); diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..7e4bde3 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,10 @@ +ACLOCAL_AMFLAGS = -I m4 + +CCLASS = cclass.c +SOCKET = socket.c socket/accept.c socket/connect.c socket/listen.c +SERVER = server.c server/run.c server/close_conn.c + +bin_PROGRAMS = testserver + +testserver_SOURCES = testserver.c $(CCLASS) $(SOCKET) $(SERVER) signalHandling.c logger.c +testserver_CFLAGS = -Wall -I ../include diff --git a/src/server_close_conn.c b/src/server/close_conn.c similarity index 68% rename from src/server_close_conn.c rename to src/server/close_conn.c index 8c44658..b131434 100644 --- a/src/server_close_conn.c +++ b/src/server/close_conn.c @@ -1,12 +1,13 @@ -#include "server.h" +#include +#include "server.h" void server_close_conn(SERVER this, unsigned int i) { - memmove(&((this->fds)[i]), &((this->fds)[i+1]), POLL_FD_MOVE(i+1)); - this->nfds--; delete(&((this->conns)[i].sock)); + CLEAR_CONN(this, i); + this->nfds--; } // vim: set ts=4 sw=4: diff --git a/src/server_run.c b/src/server/run.c similarity index 100% rename from src/server_run.c rename to src/server/run.c diff --git a/src/socket_accept.c b/src/socket/accept.c similarity index 100% rename from src/socket_accept.c rename to src/socket/accept.c diff --git a/src/socket_connect.c b/src/socket/connect.c similarity index 100% rename from src/socket_connect.c rename to src/socket/connect.c diff --git a/src/socket_listen.c b/src/socket/listen.c similarity index 100% rename from src/socket_listen.c rename to src/socket/listen.c diff --git a/src/testserver.c b/src/testserver.c new file mode 100644 index 0000000..d08f85a --- /dev/null +++ b/src/testserver.c @@ -0,0 +1,30 @@ +#include +#include + +#include "server.h" +#include "signalHandling.h" + +static void +read_hook(const char * _buffer) +{ + printf("%s\n", _buffer); +} + +int +main() +{ + LOGGER logger = new(LOGGER, NULL); + SERVER server = new(SERVER, logger, 11212, SOMAXCONN); + + server->read_hook = read_hook; + + init_signals(); + server_run(server); + + delete(&server); + delete(&logger); + + return 0; +} + +// vim: set ts=4 sw=4: diff --git a/tests/Makefile.am b/tests/Makefile.am index cafbe6f..4b899ef 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -7,10 +7,10 @@ check_PROGRAMS = cclassTest loggerTest socketTest serverTest COMMON = runtest.c ../src/cclass.c CCLASS = $(COMMON) mock/class.c LOGGER = $(COMMON) ../src/logger.c -SOCKET = $(LOGGER) ../src/socket.c ../src/socket_listen.c \ - ../src/socket_accept.c ../src/socket_connect.c -SERVER = $(SOCKET) ../src/server.c ../src/server_run.c \ - ../src/server_close_conn.c ../src/signalHandling.c +SOCKET = $(LOGGER) ../src/socket.c ../src/socket/listen.c \ + ../src/socket/accept.c ../src/socket/connect.c +SERVER = $(SOCKET) ../src/server.c ../src/server/run.c \ + ../src/server/close_conn.c ../src/signalHandling.c cclassTest_SOURCES = $(CCLASS) cclassTest.c cclassTest_CFLAGS = -Wall -ggdb -O0 -finline-functions -I ../include -I .. -I . diff --git a/tests/serverTest.c b/tests/serverTest.c index 95e74e4..fb314a7 100644 --- a/tests/serverTest.c +++ b/tests/serverTest.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "runtest.h" #include "logger.h" @@ -10,7 +11,7 @@ #include "signalHandling.h" -#define TEST_PORT 11218 +#define TEST_PORT 11212 #define TEST_DATA "test" @@ -46,7 +47,7 @@ __setUp() logger = new(LOGGER, NULL); logger_add(logger, logfnct_mock); - server = new(SERVER, logger, TEST_PORT); + server = new(SERVER, logger, TEST_PORT, SOMAXCONN); ASSERT_INSTANCE_OF(SERVER, server); ASSERT_INSTANCE_OF(LOGGER, server->logger); diff --git a/tests/socketTest.c b/tests/socketTest.c index adcf547..64447da 100644 --- a/tests/socketTest.c +++ b/tests/socketTest.c @@ -8,7 +8,7 @@ #include "socket.h" -#define TEST_PORT 11213 +#define TEST_PORT 11212 int level = -1;