diff --git a/configure.ac b/configure.ac index 39e4eb0..0fafc8c 100644 --- a/configure.ac +++ b/configure.ac @@ -8,7 +8,7 @@ AM_INIT_AUTOMAKE #AM_INIT_AUTOMAKE([subdir-objects]) AM_SILENT_RULES([yes]) AC_COPYRIGHT([Copyright © 2012 Georg Hopp]) -AC_REVISION([$Revision: 0.01 $]) +AC_REVISION([$Revision: 0.02 $]) AC_CONFIG_SRCDIR([src/taskrambler.c]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) @@ -52,6 +52,7 @@ AC_CONFIG_FILES([Makefile src/cbuf/Makefile src/class/Makefile src/hash/Makefile + src/queue/Makefile src/http/Makefile src/logger/Makefile src/server/Makefile diff --git a/include/http/parser.h b/include/http/parser.h index 7ca76e2..7e689e3 100644 --- a/include/http/parser.h +++ b/include/http/parser.h @@ -26,7 +26,7 @@ #include "class.h" #include "http/message.h" -#include "http/message/queue.h" +#include "queue.h" #include "cbuf.h" #include "stream.h" @@ -51,7 +51,7 @@ CLASS(HttpParser) { char * incomplete; size_t isize; - HttpMessageQueue queue; + Queue queue; HttpMessage current; HttpMessageState state; diff --git a/include/http/writer.h b/include/http/writer.h index c6b1470..78d5a4c 100644 --- a/include/http/writer.h +++ b/include/http/writer.h @@ -28,7 +28,7 @@ #include "class.h" #include "http/message.h" -#include "http/message/queue.h" +#include "queue.h" #include "cbuf.h" #include "stream.h" @@ -45,17 +45,17 @@ typedef enum e_HttpWriterState { } HttpWriterState; CLASS(HttpWriter) { - Cbuf buffer; - Bool ourLock; + Cbuf buffer; + Bool ourLock; - HttpMessageQueue queue; - HttpMessage current; + Queue queue; + HttpMessage current; - size_t nheader; - size_t nbody; - size_t written; + size_t nheader; + size_t nbody; + size_t written; - HttpWriterState state; + HttpWriterState state; }; ssize_t httpWriterWrite(void *, Stream); diff --git a/include/http/message/queue.h b/include/queue.h similarity index 71% rename from include/http/message/queue.h rename to include/queue.h index 0997479..1f16331 100644 --- a/include/http/message/queue.h +++ b/include/queue.h @@ -23,35 +23,34 @@ * along with this program. If not, see . */ -#ifndef __HTTP_MESSAGE_QUEUE_H__ -#define __HTTP_MESSAGE_QUEUE_H__ +#ifndef __QUEUE_H__ +#define __QUEUE_H__ #include #include "class.h" -#include "http/message.h" #include "commons.h" -CLASS(HttpMessageQueue) { - HttpMessage msg; - HttpMessageQueue next; +CLASS(Queue) { + void * msg; + Queue next; /** * first and last are only available in the initial queue * element (the root). This elelment does not contain any message * and exists only for organizational purpose. */ - HttpMessageQueue first; - HttpMessageQueue last; - size_t nmsg; + Queue first; + Queue last; + size_t nmsg; }; -void httpMessageQueuePut(HttpMessageQueue, HttpMessage); -HttpMessage httpMessageQueueGet(HttpMessageQueue); +void queuePut(Queue, void *); +void * queueGet(Queue); -#define httpMessageQueueEmpty(this) (0 >= (this)->nmsg) +#define queueEmpty(this) (0 >= (this)->nmsg) -#endif // __HTTP_MESSAGE_QUEUE_H__ +#endif // __QUEUE_H__ // vim: set ts=4 sw=4: diff --git a/src/Makefile.am b/src/Makefile.am index 3fc251d..fdf5771 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -13,6 +13,7 @@ LIBS = ./http/libhttp.a \ ./cbuf/libcbuf.a \ ./class/libclass.a \ ./hash/libhash.a \ + ./queue/libqueue.a \ ./logger/liblogger.a \ ./server/libserver.a \ ./session/libsession.a \ @@ -28,4 +29,4 @@ taskrambler_CFLAGS = -Wall -I ../include/# $(COVERAGE_CFLAGS) taskrambler_LDADD = $(LIBS) -lrt -lssl -lldap #taskrambler_LDFLAGS = $(COVERAGE_LDFLAGS) -SUBDIRS = auth cbuf class hash http logger server session socket stream +SUBDIRS = auth cbuf class hash queue http logger server session socket stream diff --git a/src/http/Makefile.am b/src/http/Makefile.am index 1512acd..a7ec689 100644 --- a/src/http/Makefile.am +++ b/src/http/Makefile.am @@ -6,9 +6,6 @@ MSG = message.c \ message/header_to_string.c \ message/get_version.c \ message/has_valid_version.c -MSGQ = message/queue.c \ - message/queue/get.c \ - message/queue/put.c REQ = request.c \ request/has_valid_method.c RESP = response.c \ @@ -38,6 +35,6 @@ HEADER = header.c \ noinst_LIBRARIES = libhttp.a -libhttp_a_SOURCES = $(MSG) $(MSGQ) $(REQ) $(RESP) $(PARSER) $(WRITER) \ +libhttp_a_SOURCES = $(MSG) $(REQ) $(RESP) $(PARSER) $(WRITER) \ $(WORKER) $(HEADER) interface/i_http_intro.c libhttp_a_CFLAGS = -Wall -I ../../include/ diff --git a/src/http/parser.c b/src/http/parser.c index d5b227a..0c88d8e 100644 --- a/src/http/parser.c +++ b/src/http/parser.c @@ -28,7 +28,7 @@ #include "stream.h" #include "http/parser.h" -#include "http/message/queue.h" +#include "queue.h" #include "http/request.h" #include "http/response.h" #include "cbuf.h" @@ -48,7 +48,7 @@ httpParserCtor(void * _this, va_list * params) return -1; } - this->queue = new(HttpMessageQueue); + this->queue = new(Queue); return 0; } diff --git a/src/http/parser/parse.c b/src/http/parser/parse.c index 9cd6c48..742ffd2 100644 --- a/src/http/parser/parse.c +++ b/src/http/parser/parse.c @@ -25,6 +25,7 @@ #include "class.h" #include "cbuf.h" #include "stream.h" +#include "queue.h" #include "http/parser.h" #include "http/header.h" @@ -170,7 +171,7 @@ httpParserParse(void * _this, Stream st) /** * enqueue current request */ - httpMessageQueuePut(this->queue, this->current); + queuePut(this->queue, this->current); this->current = NULL; /** diff --git a/src/http/worker/process.c b/src/http/worker/process.c index ac223f7..47d1f14 100644 --- a/src/http/worker/process.c +++ b/src/http/worker/process.c @@ -29,20 +29,19 @@ #include "class.h" #include "auth.h" +#include "queue.h" +#include "session.h" +#include "stream.h" +#include "hash.h" #include "http/worker.h" #include "http/header.h" #include "http/message.h" #include "http/request.h" #include "http/response.h" -#include "http/message/queue.h" #include "http/parser.h" -#include "session.h" -#include "stream.h" -#include "hash.h" #include "utils/memory.h" -#include "hash.h" #include "commons.h" @@ -57,8 +56,8 @@ httpWorkerProcess(HttpWorker this, Stream st) if (0 < (size = httpParserParse(this->parser, st))) { - while (! httpMessageQueueEmpty(this->parser->queue)) { - HttpRequest request = (HttpRequest)httpMessageQueueGet( + while (! queueEmpty(this->parser->queue)) { + HttpRequest request = queueGet( this->parser->queue); HttpMessage response = NULL; @@ -234,7 +233,7 @@ httpWorkerProcess(HttpWorker this, Stream st) delete(request); - httpMessageQueuePut(this->writer->queue, response); + queuePut(this->writer->queue, response); response = NULL; } } diff --git a/src/http/writer.c b/src/http/writer.c index 612c574..e905ba6 100644 --- a/src/http/writer.c +++ b/src/http/writer.c @@ -25,7 +25,7 @@ #include "class.h" #include "stream.h" -#include "http/message/queue.h" +#include "queue.h" #include "http/writer.h" static @@ -35,7 +35,7 @@ httpWriterCtor(void * _this, va_list * params) HttpWriter this = _this; this->buffer = va_arg(*params, Cbuf); - this->queue = new(HttpMessageQueue); + this->queue = new(Queue); return 0; } diff --git a/src/http/writer/write.c b/src/http/writer/write.c index 4a5a655..f4a0ecd 100644 --- a/src/http/writer/write.c +++ b/src/http/writer/write.c @@ -25,7 +25,7 @@ #include "class.h" #include "http/message.h" -#include "http/message/queue.h" +#include "queue.h" #include "http/writer.h" #include "cbuf.h" #include "stream.h" @@ -51,9 +51,8 @@ httpWriterWrite(void * _this, Stream st) while (cont) { switch (this->state) { case HTTP_WRITER_GET: - if (NULL == this->current && - ! httpMessageQueueEmpty(this->queue)) { - this->current = httpMessageQueueGet(this->queue); + if (NULL == this->current && ! queueEmpty(this->queue)) { + this->current = queueGet(this->queue); this->written = 0; this->nbody = 0; diff --git a/src/queue/Makefile.am b/src/queue/Makefile.am new file mode 100644 index 0000000..8a2196a --- /dev/null +++ b/src/queue/Makefile.am @@ -0,0 +1,6 @@ +ACLOCAL_AMFLAGS = -I m4 + +noinst_LIBRARIES = libqueue.a + +libqueue_a_SOURCES = queue.c get.c put.c +libqueue_a_CFLAGS = -Wall -I ../../include/ diff --git a/src/http/message/queue/get.c b/src/queue/get.c similarity index 86% rename from src/http/message/queue/get.c rename to src/queue/get.c index 858be26..20ca7f0 100644 --- a/src/http/message/queue/get.c +++ b/src/queue/get.c @@ -21,14 +21,13 @@ */ #include "class.h" -#include "http/message.h" -#include "http/message/queue.h" +#include "queue.h" -HttpMessage -httpMessageQueueGet(HttpMessageQueue this) +void * +queueGet(Queue this) { - HttpMessageQueue first; - HttpMessage msg; + Queue first; + void * msg; if (NULL == this->first) { return NULL; diff --git a/src/http/message/queue/put.c b/src/queue/put.c similarity index 81% rename from src/http/message/queue/put.c rename to src/queue/put.c index d17a7d2..3640843 100644 --- a/src/http/message/queue/put.c +++ b/src/queue/put.c @@ -21,15 +21,14 @@ */ #include "class.h" -#include "http/message.h" -#include "http/message/queue.h" +#include "queue.h" void -httpMessageQueuePut(HttpMessageQueue this, HttpMessage msg) +queuePut(Queue this, void * msg) { - HttpMessageQueue node = (this->last)? this->last : this; + Queue node = (this->last)? this->last : this; - node->next = new(HttpMessageQueue); + node->next = new(Queue); this->last = node->next; if (node == this) { diff --git a/src/http/message/queue.c b/src/queue/queue.c similarity index 72% rename from src/http/message/queue.c rename to src/queue/queue.c index 69134d7..e50b693 100644 --- a/src/http/message/queue.c +++ b/src/queue/queue.c @@ -23,33 +23,31 @@ #include #include "class.h" - -#include "http/message/queue.h" +#include "queue.h" static int -messageQueueCtor(void * _this, va_list * params) +queueCtor(void * _this, va_list * params) { return 0; } static void -messageQueueDtor(void * _this) +queueDtor(void * _this) { - HttpMessageQueue this = _this; - HttpMessageQueue node = this->first; - int i; + Queue this = _this; + Queue node = this->first; while (NULL != node) { - HttpMessageQueue next = node->next; + Queue next = node->next; delete(node->msg); delete(node); node = next; } } -INIT_IFACE(Class, messageQueueCtor, messageQueueDtor, NULL); -CREATE_CLASS(HttpMessageQueue, NULL, IFACE(Class)); +INIT_IFACE(Class, queueCtor, queueDtor, NULL); +CREATE_CLASS(Queue, NULL, IFACE(Class)); // vim: set ts=4 sw=4: