1 module hunt.http.client.ClientHttpHandler;
2 
3 import hunt.http.codec.http.model.MetaData;
4 
5 import hunt.http.codec.http.stream.HttpConnection;
6 import hunt.http.codec.http.stream.HttpHandler;
7 import hunt.http.codec.http.stream.HttpOutputStream;
8 
9 
10 import hunt.lang.common;
11 import hunt.container.ByteBuffer;
12 
13 alias Request = HttpRequest;
14 alias Response = HttpResponse;
15 
16 interface ClientHttpHandler : HttpHandler {
17 
18     void continueToSendData(HttpRequest request, HttpResponse response, HttpOutputStream output,
19                             HttpConnection connection);
20 
21     static class Adapter : HttpHandlerAdapter, ClientHttpHandler {
22 
23         protected Action4!(Request, Response, HttpOutputStream, HttpConnection) _continueToSendData;
24 
25         ClientHttpHandler.Adapter headerComplete(
26                 Func4!(Request, Response, HttpOutputStream, HttpConnection, bool) h) {
27             this._headerComplete = h;
28             return this;
29         }
30 
31         ClientHttpHandler.Adapter content(
32                 Func5!(ByteBuffer, Request, Response, HttpOutputStream, HttpConnection, bool) c) {
33             this._content = c;
34             return this;
35         }
36 
37         ClientHttpHandler.Adapter contentComplete(
38                 Func4!(Request, Response, HttpOutputStream, HttpConnection, bool) c) {
39             this._contentComplete = c;
40             return this;
41         }
42 
43         ClientHttpHandler.Adapter messageComplete(
44                 Func4!(Request, Response, HttpOutputStream, HttpConnection, bool) m) {
45             this._messageComplete = m;
46             return this;
47         }
48 
49         ClientHttpHandler.Adapter badMessage(
50                 Action6!(int, string, Request, Response, HttpOutputStream, HttpConnection) b) {
51             this._badMessage = b;
52             return this;
53         }
54 
55         ClientHttpHandler.Adapter earlyEOF(
56                 Action4!(Request, Response, HttpOutputStream, HttpConnection) e) {
57             this._earlyEOF = e;
58             return this;
59         }
60 
61         ClientHttpHandler.Adapter continueToSendData(
62                 Action4!(Request, Response, HttpOutputStream, HttpConnection) c) {
63             this._continueToSendData = c;
64             return this;
65         }
66 
67         override
68         void continueToSendData(Request request, Response response, HttpOutputStream output,
69                                        HttpConnection connection) {
70             if (_continueToSendData != null) {
71                 _continueToSendData(request, response, output, connection);
72             }
73         }
74 
75     }
76 }