1 /* 2 * Collie - An asynchronous event-driven network framework using Dlang development 3 * 4 * Copyright (C) 2015-2017 Shanghai Putao Technology Co., Ltd 5 * 6 * Developer: putao's Dlang team 7 * 8 * Licensed under the Apache-2.0 License. 9 * 10 */ 11 module collie.codec.http.server.responsehandler; 12 13 import collie.codec.http.httpmessage; 14 import collie.codec.http.server.requesthandler; 15 import collie.codec.http.errocode; 16 import collie.codec.http.codec.wsframe; 17 import collie.codec.http.httptansaction; 18 public import kiss.net.struct_; 19 20 abstract class ResponseHandler 21 { 22 alias SocketWriteCallBack = HTTPTransaction.Transport.SocketWriteCallBack; 23 24 this(RequestHandler handle) 25 { 26 _upstream = handle; 27 } 28 29 void sendHeaders(HTTPMessage headers); 30 31 void sendHeadersWithEOM(HTTPMessage headers); 32 33 void sendChunkHeader(size_t len); 34 35 void sendBody(in ubyte[] data,bool iseom = false); 36 37 void sendChunkTerminator(); 38 39 void sendEOM(); 40 41 void sendTimeOut(); 42 43 final void socketWrite(ubyte[] data,SocketWriteCallBack cback) 44 { 45 socketWrite(new WarpStreamBuffer(data,cback)); 46 } 47 48 void socketWrite(StreamWriteBuffer buffer); 49 50 void sendWsData(OpCode code,ubyte[] data); 51 52 protected: 53 RequestHandler _upstream; 54 } 55