diff --git a/configure.ac b/configure.ac
index c8200b1..9f6d2b6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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 4e0f9ff..2170684 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 @@ webgameserver_CFLAGS = -Wall -I ../include/# $(COVERAGE_CFLAGS)
webgameserver_LDADD = $(LIBS) -lrt -lssl -lldap
#webgameserver_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 5c5f12d..780ca9f 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 05d730b..ff85e12 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"
@@ -60,8 +59,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;
@@ -237,7 +236,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: