svvitch
digital signage player
D:/vs_workspace/switch_sf/src/svvitch/HTTPServerBase.h
Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include <Poco/Logger.h>
00004 #include <Poco/Net/AbstractHTTPRequestHandler.h>
00005 #include <Poco/Net/HTMLForm.h>
00006 #include <Poco/Net/HTTPRequestHandler.h>
00007 #include <Poco/Net/HTTPRequestHandlerFactory.h>
00008 #include <Poco/Net/HTTPServer.h>
00009 #include <Poco/Net/HTTPServerParams.h>
00010 #include <Poco/Net/HTTPServerRequest.h>
00011 #include <Poco/Net/HTTPServerResponse.h>
00012 #include <Poco/Net/HTTPServerParams.h>
00013 #include <Poco/Net/MessageHeader.h>
00014 #include <Poco/Net/ServerSocket.h>
00015 #include <Poco/Net/PartHandler.h>
00016 #include <Poco/Path.h>
00017 
00018 #include <iostream>
00019 #include <map>
00020 
00021 using std::map;
00022 using std::string;
00023 using Poco::Path;
00024 using Poco::Net::HTMLForm;
00025 using Poco::Net::HTTPRequestHandler;
00026 using Poco::Net::HTTPRequestHandlerFactory;
00027 using Poco::Net::HTTPServerRequest;
00028 using Poco::Net::HTTPServerResponse;
00029 using Poco::Net::HTTPResponse;
00030 using Poco::Net::MessageHeader;
00031 
00032 
00037 class BasePartHandler: public Poco::Net::PartHandler {
00038 private:
00039     Poco::Logger& _log;
00040 
00041 public:
00043     BasePartHandler();
00045     virtual ‾BasePartHandler();
00046 
00051     void handlePart(const MessageHeader& header, std::istream& stream);
00052 };
00053 
00054 
00055 
00059 class BaseRequestHandler: public HTTPRequestHandler {
00060 private:
00061     HTTPServerRequest* _request;
00062     HTTPServerResponse* _response;
00063     HTMLForm* _form;
00064 
00065 protected:
00066     Poco::Logger& _log;
00068     HTTPServerRequest& request();
00070     HTTPServerResponse& response();
00072     HTMLForm& form();
00073 
00078     virtual void doRequest();
00079 
00081     bool sendFile(Path& path);
00082 
00084     void sendJSONP(const string& functionName, const map<string, string>& json);
00085 
00087     void writeResult(const int code, const string& description);
00088 
00090     void sendResponse(HTTPResponse::HTTPStatus status, const string& message);
00091 
00092 public:
00094     BaseRequestHandler();
00095 
00097     virtual ‾BaseRequestHandler();
00098 
00100     void handleRequest(HTTPServerRequest& requesr, HTTPServerResponse& response);
00101 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines