Permalink
Browse files

Dokumentacja csgi

  • Loading branch information...
1 parent 075b8d6 commit 6565b018a271c6b59a8bc0dcbe8670bb0ebaf627 @tadzik committed Jun 2, 2012
Showing with 49 additions and 1 deletion.
  1. +16 −0 csgi.cpp
  2. +33 −1 csgi.hpp
View
16 csgi.cpp
@@ -59,6 +59,9 @@ void CSGI::Server::run(bool async)
}
}
+/**
+ * Pętla główna serwera
+ */
void CSGI::Server::serve()
{
int newfd;
@@ -94,6 +97,13 @@ void CSGI::Server::serve()
}
}
+/**
+ * Parsowanie zapytania HTTP
+ *
+ * @param ssl handler SSL z którego czytane będą dane
+ *
+ * @return struktura CSGI::Env z parametrami zapytania
+ */
CSGI::Env CSGI::Server::parse_request(SSL *ssl)
{
CSGI::Env env;
@@ -161,6 +171,12 @@ CSGI::Env CSGI::Server::parse_request(SSL *ssl)
return env;
}
+/**
+ * Wysyłanie odpowiedzi do klienta
+ *
+ * @param resp obiekt CSGI::Response z odpowiedzią
+ * @param ssl handler ssl do którego wysłane będą dane
+ */
void CSGI::Server::send_response(Response& resp, SSL *ssl) {
std::stringstream out;
out << "HTTP/1.1 " << resp.status << " OK\r\n";
View
34 csgi.hpp
@@ -17,6 +17,10 @@
#include <openssl/ssl.h>
#include <openssl/err.h>
+/**
+ * @file csgi.hpp
+ */
+
namespace CSGI {
typedef std::map<std::string, std::string> _stringmap;
@@ -34,12 +38,21 @@ struct Response {
Body content;
};
+/**
+ * Aplikacja CSGI
+ *
+ * Aplikacja CSGI to obiekt funkcyjny przyjmujący mapę CSGI::Env
+ * oraz zwracający instancję CSGI::Response
+ */
class Application {
public:
virtual CSGI::Response operator()(CSGI::Env&) = 0;
virtual ~Application() { }
};
+/**
+ * Podstawowa klasa do wyjątków rzucanych przez serwer CSGI
+ */
class Exception : public std::exception {
public:
Exception(std::string msg) : message_(msg) { }
@@ -53,10 +66,23 @@ class Exception : public std::exception {
std::string message_;
};
+/**
+ * Wyjątek rzucany przy niepoprawnym zapytaniu HTTP;
+ * do użytku wewnętrnego
+ */
class InvalidRequest : public std::exception { };
+/**
+ * Serwer CSGI, serwujący wybraną aplikację
+ */
class Server {
public:
+ /**
+ * Konstruktor serwera
+ *
+ * @param app aplikacja którą serwer ma serwować
+ * @param port port na którym serwer będzie nasłuchiwać
+ */
Server(Application * app, int port) : app_(app), port_(port)
{
backlog_ = 10;
@@ -83,8 +109,14 @@ class Server {
ssl_ = SSL_new(ssl_ctx_);
}
+ /**
+ * Uruchomienie serwera
+ *
+ * @param async czy uruchomić serwer w osobnym procesie
+ * jeśli nie, wywołanie jest blokujące
+ */
void run(bool async);
-private:
+private: // udokumentowane w csgi.cpp
void serve();
Env parse_request(SSL*);
void send_response(Response&, SSL*);

0 comments on commit 6565b01

Please sign in to comment.