1 // aerie.cpp : Defines the entry point for the console application.
5 #include "definitions.h"
11 * \todo obs³uga b³êdów!
13 SOCKET
win_start_server(int port
)
22 if (WSAStartup(ver
,NULL
) != 0)
24 s
= socket(AF_INET
, SOCK_STREAM
, IPPROTO_TCP
);
26 memset(&addr
, 0, sizeof(addr
));
27 addr
.sin_family
= AF_INET
;
28 addr
.sin_port
= htons(port
);
29 addr
.sin_addr
.s_addr
= htonl(INADDR_ANY
);
32 setsockopt(s
, SOL_SOCKET
, SO_REUSEADDR
, (char*)&foo
, sizeof(foo
));
34 bind(s
, (sockaddr
*)&addr
, sizeof(addr
));
36 listen(s
, CONF_TCP_QUEUE_SIZE
);
44 int main(int argc
, char* argv
[])
47 s
= "test123_!@#$%^&*()_+ za¿ó³æ";
48 printf("[%s]\n", s
.c_str());
49 s
= urlencode(string(s
));
50 printf("[%s]\n", s
.c_str());
52 printf("[%s]\n", s
.c_str());
60 server_loop -> open_socket -> socket_reader
62 socket_reader -> request_factory -> request
64 request -> queue(read data for request - type of task)
68 queue -> get needed data -> queue(send)
71 [task] : property of request(?)
73 bool run() - TRUE task is finished, FALSE needs to remain in queue
76 class getFileTask : public task {
81 -- [code] ------------------------------------------------------------------------------
82 :: obsluga kolejki zadan od zadan
84 queue< pair<request,task> > tasks_queue;
85 while !empty(task_queue)
86 pair = front(tasks_queue)
88 requests_queue.add(pair.request)
90 tasks_queue.add(pair);
91 -- [/code] -----------------------------------------------------------------------------
94 -- [code] ------------------------------------------------------------------------------
95 :: obsluga czytania socketow
97 if (some_socket_need_to_be_read)
98 socket = find_socket_to_read()
99 reader = get_socket_reader(socket)
101 -- [/code] -----------------------------------------------------------------------------