Commit e4d77c831146f5931c638727b1d9daf47ef28064

Authored by Georg Hopp
1 parent 2a988830

moved httpMessageQueue to a generalized Queue class as in fact it was nothing el…

…se except that it only stored HttpMessages.
@@ -52,6 +52,7 @@ AC_CONFIG_FILES([Makefile @@ -52,6 +52,7 @@ AC_CONFIG_FILES([Makefile
52 src/cbuf/Makefile 52 src/cbuf/Makefile
53 src/class/Makefile 53 src/class/Makefile
54 src/hash/Makefile 54 src/hash/Makefile
  55 + src/queue/Makefile
55 src/http/Makefile 56 src/http/Makefile
56 src/logger/Makefile 57 src/logger/Makefile
57 src/server/Makefile 58 src/server/Makefile
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 26
27 #include "class.h" 27 #include "class.h"
28 #include "http/message.h" 28 #include "http/message.h"
29 -#include "http/message/queue.h" 29 +#include "queue.h"
30 #include "cbuf.h" 30 #include "cbuf.h"
31 #include "stream.h" 31 #include "stream.h"
32 32
@@ -51,7 +51,7 @@ CLASS(HttpParser) { @@ -51,7 +51,7 @@ CLASS(HttpParser) {
51 char * incomplete; 51 char * incomplete;
52 size_t isize; 52 size_t isize;
53 53
54 - HttpMessageQueue queue; 54 + Queue queue;
55 HttpMessage current; 55 HttpMessage current;
56 56
57 HttpMessageState state; 57 HttpMessageState state;
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 28
29 #include "class.h" 29 #include "class.h"
30 #include "http/message.h" 30 #include "http/message.h"
31 -#include "http/message/queue.h" 31 +#include "queue.h"
32 #include "cbuf.h" 32 #include "cbuf.h"
33 #include "stream.h" 33 #include "stream.h"
34 34
@@ -45,17 +45,17 @@ typedef enum e_HttpWriterState { @@ -45,17 +45,17 @@ typedef enum e_HttpWriterState {
45 } HttpWriterState; 45 } HttpWriterState;
46 46
47 CLASS(HttpWriter) { 47 CLASS(HttpWriter) {
48 - Cbuf buffer;  
49 - Bool ourLock; 48 + Cbuf buffer;
  49 + Bool ourLock;
50 50
51 - HttpMessageQueue queue;  
52 - HttpMessage current; 51 + Queue queue;
  52 + HttpMessage current;
53 53
54 - size_t nheader;  
55 - size_t nbody;  
56 - size_t written; 54 + size_t nheader;
  55 + size_t nbody;
  56 + size_t written;
57 57
58 - HttpWriterState state; 58 + HttpWriterState state;
59 }; 59 };
60 60
61 ssize_t httpWriterWrite(void *, Stream); 61 ssize_t httpWriterWrite(void *, Stream);
@@ -23,35 +23,34 @@ @@ -23,35 +23,34 @@
23 * along with this program. If not, see <http://www.gnu.org/licenses/>. 23 * along with this program. If not, see <http://www.gnu.org/licenses/>.
24 */ 24 */
25 25
26 -#ifndef __HTTP_MESSAGE_QUEUE_H__  
27 -#define __HTTP_MESSAGE_QUEUE_H__ 26 +#ifndef __QUEUE_H__
  27 +#define __QUEUE_H__
28 28
29 #include <sys/types.h> 29 #include <sys/types.h>
30 30
31 #include "class.h" 31 #include "class.h"
32 -#include "http/message.h"  
33 #include "commons.h" 32 #include "commons.h"
34 33
35 34
36 -CLASS(HttpMessageQueue) {  
37 - HttpMessage msg;  
38 - HttpMessageQueue next; 35 +CLASS(Queue) {
  36 + void * msg;
  37 + Queue next;
39 38
40 /** 39 /**
41 * first and last are only available in the initial queue 40 * first and last are only available in the initial queue
42 * element (the root). This elelment does not contain any message 41 * element (the root). This elelment does not contain any message
43 * and exists only for organizational purpose. 42 * and exists only for organizational purpose.
44 */ 43 */
45 - HttpMessageQueue first;  
46 - HttpMessageQueue last;  
47 - size_t nmsg; 44 + Queue first;
  45 + Queue last;
  46 + size_t nmsg;
48 }; 47 };
49 48
50 -void httpMessageQueuePut(HttpMessageQueue, HttpMessage);  
51 -HttpMessage httpMessageQueueGet(HttpMessageQueue); 49 +void queuePut(Queue, void *);
  50 +void * queueGet(Queue);
52 51
53 -#define httpMessageQueueEmpty(this) (0 >= (this)->nmsg) 52 +#define queueEmpty(this) (0 >= (this)->nmsg)
54 53
55 -#endif // __HTTP_MESSAGE_QUEUE_H__ 54 +#endif // __QUEUE_H__
56 55
57 // vim: set ts=4 sw=4: 56 // vim: set ts=4 sw=4:
@@ -13,6 +13,7 @@ LIBS = ./http/libhttp.a \ @@ -13,6 +13,7 @@ LIBS = ./http/libhttp.a \
13 ./cbuf/libcbuf.a \ 13 ./cbuf/libcbuf.a \
14 ./class/libclass.a \ 14 ./class/libclass.a \
15 ./hash/libhash.a \ 15 ./hash/libhash.a \
  16 + ./queue/libqueue.a \
16 ./logger/liblogger.a \ 17 ./logger/liblogger.a \
17 ./server/libserver.a \ 18 ./server/libserver.a \
18 ./session/libsession.a \ 19 ./session/libsession.a \
@@ -28,4 +29,4 @@ webgameserver_CFLAGS = -Wall -I ../include/# $(COVERAGE_CFLAGS) @@ -28,4 +29,4 @@ webgameserver_CFLAGS = -Wall -I ../include/# $(COVERAGE_CFLAGS)
28 webgameserver_LDADD = $(LIBS) -lrt -lssl -lldap 29 webgameserver_LDADD = $(LIBS) -lrt -lssl -lldap
29 #webgameserver_LDFLAGS = $(COVERAGE_LDFLAGS) 30 #webgameserver_LDFLAGS = $(COVERAGE_LDFLAGS)
30 31
31 -SUBDIRS = auth cbuf class hash http logger server session socket stream 32 +SUBDIRS = auth cbuf class hash queue http logger server session socket stream
@@ -6,9 +6,6 @@ MSG = message.c \ @@ -6,9 +6,6 @@ MSG = message.c \
6 message/header_to_string.c \ 6 message/header_to_string.c \
7 message/get_version.c \ 7 message/get_version.c \
8 message/has_valid_version.c 8 message/has_valid_version.c
9 -MSGQ = message/queue.c \  
10 - message/queue/get.c \  
11 - message/queue/put.c  
12 REQ = request.c \ 9 REQ = request.c \
13 request/has_valid_method.c 10 request/has_valid_method.c
14 RESP = response.c \ 11 RESP = response.c \
@@ -38,6 +35,6 @@ HEADER = header.c \ @@ -38,6 +35,6 @@ HEADER = header.c \
38 35
39 noinst_LIBRARIES = libhttp.a 36 noinst_LIBRARIES = libhttp.a
40 37
41 -libhttp_a_SOURCES = $(MSG) $(MSGQ) $(REQ) $(RESP) $(PARSER) $(WRITER) \ 38 +libhttp_a_SOURCES = $(MSG) $(REQ) $(RESP) $(PARSER) $(WRITER) \
42 $(WORKER) $(HEADER) interface/i_http_intro.c 39 $(WORKER) $(HEADER) interface/i_http_intro.c
43 libhttp_a_CFLAGS = -Wall -I ../../include/ 40 libhttp_a_CFLAGS = -Wall -I ../../include/
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 #include "stream.h" 28 #include "stream.h"
29 29
30 #include "http/parser.h" 30 #include "http/parser.h"
31 -#include "http/message/queue.h" 31 +#include "queue.h"
32 #include "http/request.h" 32 #include "http/request.h"
33 #include "http/response.h" 33 #include "http/response.h"
34 #include "cbuf.h" 34 #include "cbuf.h"
@@ -48,7 +48,7 @@ httpParserCtor(void * _this, va_list * params) @@ -48,7 +48,7 @@ httpParserCtor(void * _this, va_list * params)
48 return -1; 48 return -1;
49 } 49 }
50 50
51 - this->queue = new(HttpMessageQueue); 51 + this->queue = new(Queue);
52 52
53 return 0; 53 return 0;
54 } 54 }
@@ -25,6 +25,7 @@ @@ -25,6 +25,7 @@
25 #include "class.h" 25 #include "class.h"
26 #include "cbuf.h" 26 #include "cbuf.h"
27 #include "stream.h" 27 #include "stream.h"
  28 +#include "queue.h"
28 29
29 #include "http/parser.h" 30 #include "http/parser.h"
30 #include "http/header.h" 31 #include "http/header.h"
@@ -170,7 +171,7 @@ httpParserParse(void * _this, Stream st) @@ -170,7 +171,7 @@ httpParserParse(void * _this, Stream st)
170 /** 171 /**
171 * enqueue current request 172 * enqueue current request
172 */ 173 */
173 - httpMessageQueuePut(this->queue, this->current); 174 + queuePut(this->queue, this->current);
174 this->current = NULL; 175 this->current = NULL;
175 176
176 /** 177 /**
@@ -29,20 +29,19 @@ @@ -29,20 +29,19 @@
29 29
30 #include "class.h" 30 #include "class.h"
31 #include "auth.h" 31 #include "auth.h"
  32 +#include "queue.h"
  33 +#include "session.h"
  34 +#include "stream.h"
  35 +#include "hash.h"
32 36
33 #include "http/worker.h" 37 #include "http/worker.h"
34 #include "http/header.h" 38 #include "http/header.h"
35 #include "http/message.h" 39 #include "http/message.h"
36 #include "http/request.h" 40 #include "http/request.h"
37 #include "http/response.h" 41 #include "http/response.h"
38 -#include "http/message/queue.h"  
39 #include "http/parser.h" 42 #include "http/parser.h"
40 -#include "session.h"  
41 -#include "stream.h"  
42 -#include "hash.h"  
43 43
44 #include "utils/memory.h" 44 #include "utils/memory.h"
45 -#include "hash.h"  
46 #include "commons.h" 45 #include "commons.h"
47 46
48 47
@@ -60,8 +59,8 @@ httpWorkerProcess(HttpWorker this, Stream st) @@ -60,8 +59,8 @@ httpWorkerProcess(HttpWorker this, Stream st)
60 59
61 if (0 < (size = httpParserParse(this->parser, st))) { 60 if (0 < (size = httpParserParse(this->parser, st))) {
62 61
63 - while (! httpMessageQueueEmpty(this->parser->queue)) {  
64 - HttpRequest request = (HttpRequest)httpMessageQueueGet( 62 + while (! queueEmpty(this->parser->queue)) {
  63 + HttpRequest request = queueGet(
65 this->parser->queue); 64 this->parser->queue);
66 HttpMessage response = NULL; 65 HttpMessage response = NULL;
67 66
@@ -237,7 +236,7 @@ httpWorkerProcess(HttpWorker this, Stream st) @@ -237,7 +236,7 @@ httpWorkerProcess(HttpWorker this, Stream st)
237 236
238 delete(request); 237 delete(request);
239 238
240 - httpMessageQueuePut(this->writer->queue, response); 239 + queuePut(this->writer->queue, response);
241 response = NULL; 240 response = NULL;
242 } 241 }
243 } 242 }
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 #include "class.h" 25 #include "class.h"
26 #include "stream.h" 26 #include "stream.h"
27 27
28 -#include "http/message/queue.h" 28 +#include "queue.h"
29 #include "http/writer.h" 29 #include "http/writer.h"
30 30
31 static 31 static
@@ -35,7 +35,7 @@ httpWriterCtor(void * _this, va_list * params) @@ -35,7 +35,7 @@ httpWriterCtor(void * _this, va_list * params)
35 HttpWriter this = _this; 35 HttpWriter this = _this;
36 36
37 this->buffer = va_arg(*params, Cbuf); 37 this->buffer = va_arg(*params, Cbuf);
38 - this->queue = new(HttpMessageQueue); 38 + this->queue = new(Queue);
39 39
40 return 0; 40 return 0;
41 } 41 }
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 25
26 #include "class.h" 26 #include "class.h"
27 #include "http/message.h" 27 #include "http/message.h"
28 -#include "http/message/queue.h" 28 +#include "queue.h"
29 #include "http/writer.h" 29 #include "http/writer.h"
30 #include "cbuf.h" 30 #include "cbuf.h"
31 #include "stream.h" 31 #include "stream.h"
@@ -51,9 +51,8 @@ httpWriterWrite(void * _this, Stream st) @@ -51,9 +51,8 @@ httpWriterWrite(void * _this, Stream st)
51 while (cont) { 51 while (cont) {
52 switch (this->state) { 52 switch (this->state) {
53 case HTTP_WRITER_GET: 53 case HTTP_WRITER_GET:
54 - if (NULL == this->current &&  
55 - ! httpMessageQueueEmpty(this->queue)) {  
56 - this->current = httpMessageQueueGet(this->queue); 54 + if (NULL == this->current && ! queueEmpty(this->queue)) {
  55 + this->current = queueGet(this->queue);
57 56
58 this->written = 0; 57 this->written = 0;
59 this->nbody = 0; 58 this->nbody = 0;
  1 +ACLOCAL_AMFLAGS = -I m4
  2 +
  3 +noinst_LIBRARIES = libqueue.a
  4 +
  5 +libqueue_a_SOURCES = queue.c get.c put.c
  6 +libqueue_a_CFLAGS = -Wall -I ../../include/
@@ -21,14 +21,13 @@ @@ -21,14 +21,13 @@
21 */ 21 */
22 22
23 #include "class.h" 23 #include "class.h"
24 -#include "http/message.h"  
25 -#include "http/message/queue.h" 24 +#include "queue.h"
26 25
27 -HttpMessage  
28 -httpMessageQueueGet(HttpMessageQueue this) 26 +void *
  27 +queueGet(Queue this)
29 { 28 {
30 - HttpMessageQueue first;  
31 - HttpMessage msg; 29 + Queue first;
  30 + void * msg;
32 31
33 if (NULL == this->first) { 32 if (NULL == this->first) {
34 return NULL; 33 return NULL;
@@ -21,15 +21,14 @@ @@ -21,15 +21,14 @@
21 */ 21 */
22 22
23 #include "class.h" 23 #include "class.h"
24 -#include "http/message.h"  
25 -#include "http/message/queue.h" 24 +#include "queue.h"
26 25
27 void 26 void
28 -httpMessageQueuePut(HttpMessageQueue this, HttpMessage msg) 27 +queuePut(Queue this, void * msg)
29 { 28 {
30 - HttpMessageQueue node = (this->last)? this->last : this; 29 + Queue node = (this->last)? this->last : this;
31 30
32 - node->next = new(HttpMessageQueue); 31 + node->next = new(Queue);
33 this->last = node->next; 32 this->last = node->next;
34 33
35 if (node == this) { 34 if (node == this) {
@@ -23,33 +23,31 @@ @@ -23,33 +23,31 @@
23 #include <stdarg.h> 23 #include <stdarg.h>
24 24
25 #include "class.h" 25 #include "class.h"
26 -  
27 -#include "http/message/queue.h" 26 +#include "queue.h"
28 27
29 static 28 static
30 int 29 int
31 -messageQueueCtor(void * _this, va_list * params) 30 +queueCtor(void * _this, va_list * params)
32 { 31 {
33 return 0; 32 return 0;
34 } 33 }
35 34
36 static 35 static
37 void 36 void
38 -messageQueueDtor(void * _this) 37 +queueDtor(void * _this)
39 { 38 {
40 - HttpMessageQueue this = _this;  
41 - HttpMessageQueue node = this->first;  
42 - int i; 39 + Queue this = _this;
  40 + Queue node = this->first;
43 41
44 while (NULL != node) { 42 while (NULL != node) {
45 - HttpMessageQueue next = node->next; 43 + Queue next = node->next;
46 delete(node->msg); 44 delete(node->msg);
47 delete(node); 45 delete(node);
48 node = next; 46 node = next;
49 } 47 }
50 } 48 }
51 49
52 -INIT_IFACE(Class, messageQueueCtor, messageQueueDtor, NULL);  
53 -CREATE_CLASS(HttpMessageQueue, NULL, IFACE(Class)); 50 +INIT_IFACE(Class, queueCtor, queueDtor, NULL);
  51 +CREATE_CLASS(Queue, NULL, IFACE(Class));
54 52
55 // vim: set ts=4 sw=4: 53 // vim: set ts=4 sw=4:
Please register or login to post a comment