openthread-br
0.3.0-72c0388
src
rest
rest_web_server.hpp
Go to the documentation of this file.
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
34
#ifndef OTBR_REST_REST_WEB_SERVER_HPP_
35
#define OTBR_REST_REST_WEB_SERVER_HPP_
36
37
#include <netinet/in.h>
38
#include <netinet/ip.h>
39
#include <sys/socket.h>
40
41
#include "
common/mainloop.hpp
"
42
#include "
rest/connection.hpp
"
43
44
using
otbr::Ncp::ControllerOpenThread
;
45
using
std::chrono::steady_clock;
46
47
namespace
otbr {
48
namespace
rest {
49
54
class
RestWebServer
:
public
MainloopProcessor
55
{
56
public
:
63
RestWebServer
(
ControllerOpenThread
&aNcp);
64
69
~RestWebServer
(
void
)
override
;
70
75
void
Init
(
void
);
76
77
void
Update
(
MainloopContext
&aMainloop)
override
;
78
void
Process
(
const
MainloopContext
&aMainloop)
override
;
79
80
private
:
81
void
UpdateConnections(
const
fd_set &aReadFdSet);
82
void
CreateNewConnection(int32_t &aFd);
83
otbrError
Accept(int32_t aListenFd);
84
void
InitializeListenFd(
void
);
85
bool
SetFdNonblocking(int32_t fd);
86
87
// Resource handler
88
Resource
mResource;
89
// Struct for server configuration
90
sockaddr_in mAddress;
91
// File descriptor for listening
92
int32_t mListenFd;
93
// Connection List
94
std::unordered_map<int32_t, std::unique_ptr<Connection>> mConnectionSet;
95
};
96
97
}
// namespace rest
98
}
// namespace otbr
99
100
#endif // OTBR_REST_REST_WEB_SERVER_HPP_
otbr::rest::Resource
Definition:
resource.hpp:57
mainloop.hpp
otbr::rest::RestWebServer
Definition:
rest_web_server.hpp:54
otbr::rest::RestWebServer::RestWebServer
RestWebServer(ControllerOpenThread &aNcp)
Definition:
rest_web_server.cpp:51
otbr::rest::RestWebServer::Update
void Update(MainloopContext &aMainloop) override
Definition:
rest_web_server.cpp:71
otbr::MainloopProcessor
Definition:
mainloop.hpp:54
connection.hpp
otbr::rest::RestWebServer::Init
void Init(void)
Definition:
rest_web_server.cpp:65
otbrError
otbrError
Definition:
types.hpp:70
otbr::rest::RestWebServer::~RestWebServer
~RestWebServer(void) override
Definition:
rest_web_server.cpp:57
otbr::rest::RestWebServer::Process
void Process(const MainloopContext &aMainloop) override
Definition:
rest_web_server.cpp:79
otbr::MainloopContext
otSysMainloopContext MainloopContext
Definition:
mainloop.hpp:47
otbr::Ncp::ControllerOpenThread
Definition:
ncp_openthread.hpp:64
Generated by
1.8.17