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