mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-07-18 11:00:36 +02:00
HTTPServer: generate sequential Ids for each newly accepted connection
Co-authored-by: Vasil Dimov <vd@FreeBSD.org>
This commit is contained in:
@@ -1008,4 +1008,9 @@ std::unique_ptr<Sock> HTTPServer::AcceptConnection(const Sock& listen_sock, CSer
|
||||
|
||||
return sock;
|
||||
}
|
||||
|
||||
HTTPServer::Id HTTPServer::GetNewId()
|
||||
{
|
||||
return m_next_id.fetch_add(1, std::memory_order_relaxed);
|
||||
}
|
||||
} // namespace http_bitcoin
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef BITCOIN_HTTPSERVER_H
|
||||
#define BITCOIN_HTTPSERVER_H
|
||||
|
||||
#include <atomic>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
@@ -306,6 +307,11 @@ public:
|
||||
class HTTPServer
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Each connection is assigned an unique id of this type.
|
||||
*/
|
||||
using Id = uint64_t;
|
||||
|
||||
/**
|
||||
* Bind to a new address:port, start listening and add the listen socket to `m_listen`.
|
||||
* @param[in] to Where to bind.
|
||||
@@ -339,6 +345,11 @@ private:
|
||||
*/
|
||||
std::vector<std::shared_ptr<Sock>> m_listen;
|
||||
|
||||
/**
|
||||
* The id to assign to the next created connection.
|
||||
*/
|
||||
std::atomic<Id> m_next_id{0};
|
||||
|
||||
/**
|
||||
* Accept a connection.
|
||||
* @param[in] listen_sock Socket on which to accept the connection.
|
||||
@@ -346,6 +357,11 @@ private:
|
||||
* @return Newly created socket for the accepted connection.
|
||||
*/
|
||||
std::unique_ptr<Sock> AcceptConnection(const Sock& listen_sock, CService& addr);
|
||||
|
||||
/**
|
||||
* Generate an id for a newly created connection.
|
||||
*/
|
||||
Id GetNewId();
|
||||
};
|
||||
} // namespace http_bitcoin
|
||||
|
||||
|
||||
Reference in New Issue
Block a user