OSDN Git Service

2b9d8ff5a4315fa6cd0f34cdcb2e32a5430fbb0c
[mimic/MiMicSDK.git] / lib / src / http / NyLPC_cHttpHeaderWriter.h
1 /*********************************************************************************\r
2  * PROJECT: MiMic\r
3  * --------------------------------------------------------------------------------\r
4  *\r
5  * This file is part of MiMic\r
6  * Copyright (C)2011 Ryo Iizuka\r
7  *\r
8  * MiMic is free software: you can redistribute it and/or modify\r
9  * it under the terms of the GNU Lesser General Public License as published\r
10  * by the Free Software Foundation, either version 3 of the License, or\r
11  * (at your option) any later version.\r
12  *\r
13  * This program is distributed in the hope that it will be useful,\r
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16  * GNU General Public License for more details.\r
17  *\r
18  * You should have received a copy of the GNU Lesser General Public License\r
19  * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
20  *\r
21  * For further information please contact.\r
22  *      http://nyatla.jp/\r
23  *      <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
24  *\r
25  *********************************************************************************/\r
26 #ifndef NYLPC_CHTTPHEADERWRITER_H_\r
27 #define NYLPC_CHTTPHEADERWRITER_H_\r
28 \r
29 #include "NyLPC_stdlib.h"\r
30 #include "NyLPC_uipService.h"\r
31 #include "NyLPC_cHttpStream.h"\r
32 #include "NyLPC_cHttpBasicHeaderParser.h"\r
33 #include "NyLPC_cHttpdConfig.h"\r
34 \r
35 #ifdef __cplusplus\r
36 extern "C" {\r
37 #endif /* __cplusplus */\r
38 \r
39 \r
40 typedef struct NyLPC_TcHttpHeaderWriter NyLPC_TcHttpHeaderWriter_t;\r
41 struct NyLPC_TcHttpHeaderWriter\r
42 {\r
43         NyLPC_TUInt8 _is_chunked;\r
44         NyLPC_TUInt8 _is_close;\r
45         //異常状態をチェックするためのフラグ\r
46         NyLPC_TUInt8 _is_error;\r
47         \r
48         NyLPC_TUInt32 _content_length;\r
49         NyLPC_TUInt32 _size_of_sent;\r
50 \r
51         NyLPC_TiHttpPtrStream_t* _ref_stream;\r
52 };\r
53 \r
54 /**\r
55  * Httpリクエストヘッダに対応したHttpヘッダライタを構築します。\r
56  * インスタンスは、正常/異常の2状態を持ちます。\r
57  * <p>初期値について -\r
58  * ConnectionCloseは有効です。\r
59  * </p>\r
60  */\r
61 NyLPC_TBool NyLPC_cHttpHeaderWriter_initialize(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_TiHttpPtrStream_t* i_ref_stream,const struct NyLPC_THttpBasicHeader* i_req_header);\r
62 \r
63 #define NyLPC_cHttpHeaderWriter_finalize(i)\r
64 NyLPC_TBool NyLPC_cHttpHeaderWriter_writeRequestHeader(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_THttpMethodType i_method,const struct NyLPC_TIPv4Addr* i_host,NyLPC_TUInt16 i_port,const NyLPC_TChar* i_path);\r
65 NyLPC_TBool NyLPC_cHttpHeaderWriter_writeResponseHeader(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_TUInt16 i_status);\r
66 NyLPC_TBool NyLPC_cHttpHeaderWriter_writeMessage(NyLPC_TcHttpHeaderWriter_t* i_inst,const NyLPC_TChar* i_name,const NyLPC_TChar* i_field);\r
67 /**\r
68  * \r\n区切りのメッセージをそのままヘッダに挿入します。i_additional_headerの終端は\r\nで閉じてください。\r
69  */\r
70 NyLPC_TBool NyLPC_cHttpHeaderWriter_writeRawMessage(NyLPC_TcHttpHeaderWriter_t* i_inst,const NyLPC_TChar* i_additional_header);\r
71 NyLPC_TBool NyLPC_cHttpHeaderWriter_close(NyLPC_TcHttpHeaderWriter_t* i_inst);\r
72 void NyLPC_cHttpHeaderWriter_setContentLength(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_TUInt32 i_content_length);\r
73 /**\r
74  * ConnectionCloseのON/OFFを設定します。\r
75  */\r
76 void NyLPC_cHttpHeaderWriter_setConnectionClose(NyLPC_TcHttpHeaderWriter_t* i_inst,NyLPC_TBool i_is_close);\r
77 void NyLPC_cHttpHeaderWriter_setChunked(NyLPC_TcHttpHeaderWriter_t* i_inst);\r
78 \r
79 #ifdef __cplusplus\r
80 }\r
81 #endif /* __cplusplus */\r
82 \r
83 #endif /* NYLPC_CHTTPHEADERWRITER_H_ */\r