// Copyright (c) 2015 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
-// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+// file COPYING or https://www.opensource.org/licenses/mit-license.php .
#ifndef BITCOIN_HTTPSERVER_H
#define BITCOIN_HTTPSERVER_H
#include <string>
#include <stdint.h>
+#ifdef _WIN32
+#undef __cpuid
+#endif
#include <boost/thread.hpp>
#include <boost/scoped_ptr.hpp>
#include <boost/function.hpp>
* This is separate from InitHTTPServer to give users race-condition-free time
* to register their handlers between InitHTTPServer and StartHTTPServer.
*/
-bool StartHTTPServer(boost::thread_group& threadGroup);
+bool StartHTTPServer();
/** Interrupt HTTP server threads */
void InterruptHTTPServer();
/** Stop HTTP server */
{
private:
struct evhttp_request* req;
+
+ // For test access
+protected:
bool replySent;
public:
HTTPRequest(struct evhttp_request* req);
- ~HTTPRequest();
+ virtual ~HTTPRequest();
enum RequestMethod {
UNKNOWN,
/** Get CService (address:ip) for the origin of the http request.
*/
- CService GetPeer();
+ virtual CService GetPeer();
/** Get request method.
*/
- RequestMethod GetRequestMethod();
+ virtual RequestMethod GetRequestMethod();
/**
* Get the request header specified by hdr, or an empty string.
* Return an pair (isPresent,string).
*/
- std::pair<bool, std::string> GetHeader(const std::string& hdr);
+ virtual std::pair<bool, std::string> GetHeader(const std::string& hdr);
/**
* Read request body.
*
* @note call this before calling WriteErrorReply or Reply.
*/
- void WriteHeader(const std::string& hdr, const std::string& value);
+ virtual void WriteHeader(const std::string& hdr, const std::string& value);
/**
* Write HTTP reply.
* @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 = "");
+ virtual void WriteReply(int nStatus, const std::string& strReply = "");
};
/** Event handler closure.