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 }