FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
bitcoin/src/httpserver.h at master · Dash-OS/bitcoin · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
Dash-OS
/
bitcoin
Public
forked from
bitcoin/bitcoin
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
bitcoin
/
src
/
httpserver.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
153 lines (129 loc) · 4.16 KB
Breadcrumbs
bitcoin
/
src
/
httpserver.h
Copy path
File metadata and controls
153 lines (129 loc) · 4.16 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//
Copyright (c) 2015-2017 The Bitcoin Core developers
//
Distributed under the MIT software license, see the accompanying
//
file COPYING or http://www.opensource.org/licenses/mit-license.php.
#
ifndef
BITCOIN_HTTPSERVER_H
#
define
BITCOIN_HTTPSERVER_H
#
include
<
string
>
#
include
<
stdint.h
>
#
include
<
functional
>
static
const
int
DEFAULT_HTTP_THREADS
=
4
;
static
const
int
DEFAULT_HTTP_WORKQUEUE
=
16
;
static
const
int
DEFAULT_HTTP_SERVER_TIMEOUT
=
30
;
struct
evhttp_request
;
struct
event_base
;
class
CService
;
class
HTTPRequest
;
/*
* Initialize HTTP server.
* Call this before RegisterHTTPHandler or EventBase().
*/
bool
InitHTTPServer
();
/*
* Start HTTP server.
* This is separate from InitHTTPServer to give users race-condition-free time
* to register their handlers between InitHTTPServer and StartHTTPServer.
*/
bool
StartHTTPServer
();
/*
* Interrupt HTTP server threads
*/
void
InterruptHTTPServer
();
/*
* Stop HTTP server
*/
void
StopHTTPServer
();
/*
* Change logging level for libevent. Removes BCLog::LIBEVENT from logCategories if
* libevent doesn't support debug logging.
*/
bool
UpdateHTTPServerLogging
(
bool
enable);
/*
* Handler for requests to a certain HTTP path
*/
typedef
std::function<
bool
(HTTPRequest* req,
const
std::string &)> HTTPRequestHandler;
/*
* Register handler for prefix.
* If multiple handlers match a prefix, the first-registered one will
* be invoked.
*/
void
RegisterHTTPHandler
(
const
std::string &prefix,
bool
exactMatch,
const
HTTPRequestHandler &handler);
/*
* Unregister handler for prefix
*/
void
UnregisterHTTPHandler
(
const
std::string &prefix,
bool
exactMatch);
/*
* Return evhttp event base. This can be used by submodules to
* queue timers or custom events.
*/
struct
event_base
*
EventBase
();
/*
* In-flight HTTP request.
* Thin C++ wrapper around evhttp_request.
*/
class
HTTPRequest
{
private:
struct
evhttp_request
* req;
bool
replySent;
public:
explicit
HTTPRequest
(
struct
evhttp_request
* req);
~HTTPRequest
();
enum
RequestMethod {
UNKNOWN
,
GET
,
POST
,
HEAD
,
PUT
};
/*
* Get requested URI.
*/
std::string
GetURI
();
/*
* Get CService (address:ip) for the origin of the http request.
*/
CService
GetPeer
();
/*
* Get request method.
*/
RequestMethod
GetRequestMethod
();
/*
*
* Get the request header specified by hdr, or an empty string.
* Return a pair (isPresent,string).
*/
std::pair<
bool
, std::string>
GetHeader
(
const
std::string& hdr);
/*
*
* Read request body.
*
* @note As this consumes the underlying buffer, call this only once.
* Repeated calls will return an empty string.
*/
std::string
ReadBody
();
/*
*
* Write output header.
*
* @note call this before calling WriteErrorReply or Reply.
*/
void
WriteHeader
(
const
std::string& hdr,
const
std::string& value);
/*
*
* Write HTTP reply.
* nStatus is the HTTP status code to send.
* strReply is the body of the reply. Keep it empty to send a standard message.
*
* @note Can be called only once. As this will give the request back to the
* main thread, do not call any other HTTPRequest methods after calling this.
*/
void
WriteReply
(
int
nStatus,
const
std::string& strReply =
"
"
);
};
/*
* Event handler closure.
*/
class
HTTPClosure
{
public:
virtual
void
operator
()() = 0;
virtual
~HTTPClosure
() {}
};
/*
* Event class. This can be used either as a cross-thread trigger or as a timer.
*/
class
HTTPEvent
{
public:
/*
* Create a new event.
* deleteWhenTriggered deletes this event object after the event is triggered (and the handler called)
* handler is the handler to call when the event is triggered.
*/
HTTPEvent
(
struct
event_base
* base,
bool
deleteWhenTriggered,
const
std::function<
void
(
void
)>& handler);
~HTTPEvent
();
/*
* Trigger the event. If tv is 0, trigger it immediately. Otherwise trigger it after
* the given time has elapsed.
*/
void
trigger
(
struct
timeval
* tv);
bool
deleteWhenTriggered;
std::function<
void
(
void
)> handler;
private:
struct
event
* ev;
};
std::string
urlDecode
(
const
std::string &urlEncoded);
#
endif
//
BITCOIN_HTTPSERVER_H
Back
|
FazBrowse Home
|
New Git URL