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