observable.h
Go to the documentation of this file.
1 #ifndef HTTP_OBSERVABLE_H
2 #define HTTP_OBSERVABLE_H
3 
4 #include <QNetworkReply>
5 #include <QStack>
6 #include "response.h"
7 
8 namespace dnai {
9  namespace http {
10  typedef std::function<Response (Response)> ResponseFunction;
11  typedef std::function<Response (Response)> ErrorFunction;
12  typedef std::function<void ()> FinalityFunction;
13 
14  class Observable: public QObject
15  {
16  Q_OBJECT
17  public:
18  Observable(QNetworkReply *);
19 
20  public slots:
21  void onResponse();
22 
23  private:
24  QNetworkReply *m_reply;
25  QStack<ResponseFunction> m_responseHandlers;
26  QStack<ErrorFunction> m_errorHandlers;
27  QStack<FinalityFunction> m_finalityHandlers;
28 
29  public:
30  Observable &map(ResponseFunction = nullptr, ErrorFunction = nullptr);
31  void subscribe(ResponseFunction = nullptr, ErrorFunction = nullptr, FinalityFunction = nullptr);
32 
33  private:
36  void callFinalityHandlers();
37  };
38  }
39 }
40 
41 #endif // HTTP_OBSERVABLE_H
Definition: response.h:14
void callErrorHandlers(Response)
Definition: observable.cpp:64
Observable & map(ResponseFunction=nullptr, ErrorFunction=nullptr)
Definition: observable.cpp:33
std::function< Response(Response)> ResponseFunction
Definition: observable.h:10
QStack< ErrorFunction > m_errorHandlers
Definition: observable.h:26
void subscribe(ResponseFunction=nullptr, ErrorFunction=nullptr, FinalityFunction=nullptr)
Definition: observable.cpp:44
QNetworkReply * m_reply
Definition: observable.h:24
void onResponse()
Definition: observable.cpp:11
void callReponseHandlers(Response)
Definition: observable.cpp:57
Definition: observable.h:14
QStack< ResponseFunction > m_responseHandlers
Definition: observable.h:25
void callFinalityHandlers()
Definition: observable.cpp:71
Definition: api.h:13
std::function< void()> FinalityFunction
Definition: observable.h:12
std::function< Response(Response)> ErrorFunction
Definition: observable.h:11
Observable(QNetworkReply *)
Definition: observable.cpp:6
QStack< FinalityFunction > m_finalityHandlers
Definition: observable.h:27