initial release
[pykit.git] / Publisher.hh
1 // $Id$
2 //
3 // Copyright (C) 2010
4 //     Stefan Bund <info@j32.de>
5
6 /** \file
7     \brief InternalNetworkAccessManager public header */
8
9 #ifndef HH_PyKit_Publisher_
10 #define HH_PyKit_Publisher_ 1
11
12 // Custom includes
13 #include <QNetworkAccessManager>
14 #include <QNetworkRequest>
15 #include <QNetworkReply>
16 #include <QBuffer>
17
18 //#include "Publisher.mpp"
19 ///////////////////////////////hh.p////////////////////////////////////////
20
21 namespace pykit {
22
23     namespace detail { class InternalServerReply; }
24
25     class Request
26     {
27     public:
28         void write(std::string const & data);
29         void reset();
30
31         void setContentType(std::string const & contentType);
32         void setLocation(std::string const & location);
33
34         QUrl url() const;
35
36     private:
37         Request(detail::InternalServerReply & reply);
38
39         detail::InternalServerReply & reply_;
40
41         friend class detail::InternalServerReply;
42     };
43
44     class Publisher
45     {
46     public:
47         virtual ~Publisher() {}
48         virtual void publish(Request & request) = 0;
49     };
50
51     class InternalNetworkAccessManager
52         : public QNetworkAccessManager
53     {
54         Q_OBJECT;
55     public:
56         InternalNetworkAccessManager(QNetworkAccessManager * manager, QObject * parent,
57                                      Publisher * publisher);
58
59         QNetworkReply * createRequest(Operation operation, QNetworkRequest const & request,
60                                       QIODevice * device);
61
62     private:
63         Publisher * publisher_;
64     };
65
66 }
67
68 ///////////////////////////////hh.e////////////////////////////////////////
69 //#include "Publisher.cci"
70 //#include "Publisher.ct"
71 //#include "Publisher.cti"
72 #endif
73
74 \f
75 // Local Variables:
76 // mode: c++
77 // fill-column: 100
78 // comment-column: 40
79 // c-file-style: "j32"
80 // indent-tabs-mode: nil
81 // ispell-local-dictionary: "american"
82 // compile-command: "scons -U"
83 // End: