]>
Commit | Line | Data |
---|---|---|
55369ae6 AR |
1 | #ifndef SQUID_DOWNLOADER_H |
2 | #define SQUID_DOWNLOADER_H | |
3 | ||
4 | #include "client_side.h" | |
5 | #include "cbdata.h" | |
6 | ||
7 | class Downloader: public ConnStateData | |
8 | { | |
9 | CBDATA_CLASS(Downloader); | |
10 | // XXX CBDATA_CLASS expands to nonvirtual toCbdata, AsyncJob::toCbdata | |
11 | // is pure virtual. breaks build on clang if override is used | |
12 | ||
13 | public: | |
14 | class CbDialer { | |
15 | public: | |
16 | CbDialer(): status(Http::scNone) {} | |
17 | virtual ~CbDialer() {} | |
18 | SBuf object; | |
19 | Http::StatusCode status; | |
20 | }; | |
21 | ||
22 | explicit Downloader(SBuf &url, const MasterXaction::Pointer &xact, AsyncCall::Pointer &aCallback); | |
23 | virtual ~Downloader(); | |
24 | void downloadFinished(); | |
25 | ||
26 | /* ConnStateData API */ | |
27 | virtual bool isOpen() const; | |
28 | ||
29 | /* AsyncJob API */ | |
30 | virtual void callException(const std::exception &e); | |
31 | virtual bool doneAll() const; | |
32 | ||
33 | /*Bodypipe API*/ | |
34 | virtual void noteMoreBodySpaceAvailable(BodyPipe::Pointer); | |
35 | virtual void noteBodyConsumerAborted(BodyPipe::Pointer); | |
36 | ||
37 | protected: | |
38 | /* ConnStateData API */ | |
39 | virtual ClientSocketContext *parseOneRequest(); | |
40 | virtual void processParsedRequest(ClientSocketContext *context); | |
41 | virtual time_t idleTimeout() const; | |
42 | virtual void writeControlMsgAndCall(ClientSocketContext *context, HttpReply *rep, AsyncCall::Pointer &call); | |
43 | virtual void handleReply(HttpReply *header, StoreIOBuffer receivedData); | |
44 | ||
45 | /* AsyncJob API */ | |
46 | virtual void start(); | |
47 | ||
48 | private: | |
49 | void callBack(); | |
50 | SBuf url_; | |
51 | AsyncCall::Pointer callback; | |
52 | Http::StatusCode status; | |
53 | SBuf object; //object data | |
54 | size_t maxObjectSize; | |
55 | }; | |
56 | ||
57 | #endif |