Browse Source
refs #19: Added a stream class. This is a delegate that uses the correct read and write methods for the given stream type. This is implemented as prerequesite for the SSL implemented
master
refs #19: Added a stream class. This is a delegate that uses the correct read and write methods for the given stream type. This is implemented as prerequesite for the SSL implemented
master
35 changed files with 243 additions and 99 deletions
-
2configure.ac
-
18include/cbuf.h
-
10include/commons.h
-
5include/http/message.h
-
13include/http/parser.h
-
9include/http/worker.h
-
12include/http/writer.h
-
6include/interface/stream_reader.h
-
6include/interface/stream_writer.h
-
2include/server.h
-
27include/stream.h
-
5src/Makefile.am
-
4src/cbuf/is_locked.c
-
5src/cbuf/read.c
-
5src/cbuf/write.c
-
5src/http/message.c
-
8src/http/message/has_keep_alive.c
-
5src/http/parser/parse.c
-
3src/http/response/asset.c
-
5src/http/worker.c
-
6src/http/worker/process.c
-
5src/http/worker/write.c
-
5src/http/writer/write.c
-
5src/interface.c
-
5src/interface/stream_reader.c
-
5src/interface/stream_writer.c
-
1src/server/close_conn.c
-
2src/server/handle_accept.c
-
5src/server/read.c
-
5src/server/write.c
-
41src/stream.c
-
27src/stream/read.c
-
27src/stream/write.c
-
8src/utils/http.c
-
40src/webgameserver.c
@ -0,0 +1,10 @@ |
|||
#ifndef __COMMONS_H__ |
|||
#define __COMMONS_H__ |
|||
|
|||
#define Bool char |
|||
#define TRUE 1 |
|||
#define FALSE 0 |
|||
|
|||
#endif // __COMMONS_H__ |
|||
|
|||
// vim: set ts=4 sw=4: |
|||
@ -0,0 +1,27 @@ |
|||
#ifndef __STREAM_H__ |
|||
#define __STREAM_H__ |
|||
|
|||
#include <sys/types.h> |
|||
#include <openssl/ssl.h> |
|||
|
|||
#include "class.h" |
|||
|
|||
typedef enum e_StreamHandleType { |
|||
STREAM_FD = 0, |
|||
STREAM_SSL |
|||
} StreamHandleType; |
|||
|
|||
CLASS(Stream) { |
|||
StreamHandleType type; |
|||
union { |
|||
int fd; |
|||
SSL * ssl; |
|||
} handle; |
|||
}; |
|||
|
|||
ssize_t streamRead(Stream, void *, size_t); |
|||
ssize_t streamWrite(Stream, void *, size_t); |
|||
|
|||
#endif // __STREAM_H__ |
|||
|
|||
// vim: set ts=4 sw=4: |
|||
@ -0,0 +1,41 @@ |
|||
#include <stdarg.h> |
|||
#include <openssl/ssl.h> |
|||
|
|||
#include "class.h" |
|||
#include "interface/class.h" |
|||
#include "stream.h" |
|||
|
|||
|
|||
static |
|||
int |
|||
streamCtor(void * _this, va_list * params) |
|||
{ |
|||
Stream this = _this; |
|||
this->type = va_arg(* params, StreamHandleType); |
|||
|
|||
switch(this->type) { |
|||
case STREAM_FD: |
|||
(this->handle).fd = va_arg(* params, int); |
|||
break; |
|||
|
|||
case STREAM_SSL: |
|||
(this->handle).ssl = va_arg(* params, SSL*); |
|||
break; |
|||
|
|||
default: |
|||
return -1; |
|||
} |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
static |
|||
void |
|||
streamDtor(void * _this) |
|||
{ |
|||
} |
|||
|
|||
INIT_IFACE(Class, streamCtor, streamDtor, NULL); |
|||
CREATE_CLASS(Stream, NULL, IFACE(Class)); |
|||
|
|||
// vim: set ts=4 sw=4: |
|||
@ -0,0 +1,27 @@ |
|||
#include <openssl/ssl.h> |
|||
#include <unistd.h> |
|||
|
|||
#include "stream.h" |
|||
|
|||
ssize_t |
|||
streamRead(Stream this, void * buf, size_t count) |
|||
{ |
|||
ssize_t done; |
|||
|
|||
switch(this->type) { |
|||
case STREAM_FD: |
|||
done = read((this->handle).fd, buf, count); |
|||
break; |
|||
|
|||
case STREAM_SSL: |
|||
done = SSL_read((this->handle).ssl, buf, count); |
|||
break; |
|||
|
|||
default: |
|||
break; |
|||
} |
|||
|
|||
return done; |
|||
} |
|||
|
|||
// vim: set ts=4 sw=4: |
|||
@ -0,0 +1,27 @@ |
|||
#include <openssl/ssl.h> |
|||
#include <unistd.h> |
|||
|
|||
#include "stream.h" |
|||
|
|||
ssize_t |
|||
streamWrite(Stream this, void * buf, size_t count) |
|||
{ |
|||
ssize_t done; |
|||
|
|||
switch(this->type) { |
|||
case STREAM_FD: |
|||
done = write((this->handle).fd, buf, count); |
|||
break; |
|||
|
|||
case STREAM_SSL: |
|||
done = SSL_write((this->handle).ssl, buf, count); |
|||
break; |
|||
|
|||
default: |
|||
break; |
|||
} |
|||
|
|||
return done; |
|||
} |
|||
|
|||
// vim: set ts=4 sw=4: |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue