Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / ot-br-posix / repo / src / rest / parser.hpp
1 /*
2  *  Copyright (c) 2020, The OpenThread Authors.
3  *  All rights reserved.
4  *
5  *  Redistribution and use in source and binary forms, with or without
6  *  modification, are permitted provided that the following conditions are met:
7  *  1. Redistributions of source code must retain the above copyright
8  *     notice, this list of conditions and the following disclaimer.
9  *  2. Redistributions in binary form must reproduce the above copyright
10  *     notice, this list of conditions and the following disclaimer in the
11  *     documentation and/or other materials provided with the distribution.
12  *  3. Neither the name of the copyright holder nor the
13  *     names of its contributors may be used to endorse or promote products
14  *     derived from this software without specific prior written permission.
15  *
16  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  *  POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 /**
30  * @file
31  *   This file includes parser definition for RESTful HTTP server.
32  */
33
34 #ifndef OTBR_REST_PARSER_HPP_
35 #define OTBR_REST_PARSER_HPP_
36
37 #include <memory>
38
39 #include "rest/types.hpp"
40
41 extern "C" {
42 #include <http_parser.h>
43 }
44
45 #include "rest/request.hpp"
46
47 namespace otbr {
48 namespace rest {
49
50 /**
51  * This class implements Parser class in OTBR-REST which is used to parse the data from read buffer and form a request.
52  *
53  */
54 class Parser
55 {
56 public:
57     /**
58      * The constructor of a http request parser instance.
59      *
60      * @param[in]   aRequest  A pointer to a request instance.
61      *
62      */
63     Parser(Request *aRequest);
64
65     /**
66      * This method initializea the http-parser.
67      *
68      */
69     void Init(void);
70
71     /**
72      * This method performs a parse process.
73      *
74      * @param[in]    aBuf      A pointer pointing to read buffer.
75      * @param[in]    aLength   An integer indicates how much data is to be processed by parser.
76      *
77      */
78     void Process(const char *aBuf, size_t aLength);
79
80 private:
81     http_parser          mParser;
82     http_parser_settings mSettings;
83 };
84
85 } // namespace rest
86 } // namespace otbr
87
88 #endif // OTBR_REST_PARSER_HPP_