Skip to content
/ i2pd Public
forked from PurpleI2P/i2pd

Commit

Permalink
move thread naming to util
Browse files Browse the repository at this point in the history
Signed-off-by: R4SAS <r4sas@i2pmail.org>
  • Loading branch information
r4sas committed Dec 7, 2020
1 parent aace200 commit 3100d4f
Show file tree
Hide file tree
Showing 12 changed files with 63 additions and 39 deletions.
4 changes: 2 additions & 2 deletions daemon/HTTPServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
#include <iomanip>
#include <sstream>
#include <thread>
#include <pthread.h>
#include <memory>

#include <boost/asio.hpp>
Expand Down Expand Up @@ -1313,7 +1312,8 @@ namespace http {

void HTTPServer::Run ()
{
pthread_setname_np(pthread_self(), "Webconsole");
i2p::util::SetThreadName("Webconsole");

while (m_IsRunning)
{
try
Expand Down
4 changes: 2 additions & 2 deletions daemon/I2PControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/property_tree/ini_parser.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <pthread.h>

#include "Crypto.h"
#include "FS.h"
Expand Down Expand Up @@ -132,7 +131,8 @@ namespace client

void I2PControlService::Run ()
{
pthread_setname_np(pthread_self(), "I2PC");
i2p::util::SetThreadName("I2PC");

while (m_IsRunning)
{
try {
Expand Down
4 changes: 2 additions & 2 deletions daemon/UPnP.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#ifdef USE_UPNP
#include <string>
#include <thread>
#include <pthread.h>

#include <boost/thread/thread.hpp>
#include <boost/asio.hpp>
Expand Down Expand Up @@ -61,7 +60,8 @@ namespace transport

void UPnP::Run ()
{
pthread_setname_np(pthread_self(), "UPnP");
i2p::util::SetThreadName("UPnP");

while (m_IsRunning)
{
try
Expand Down
5 changes: 3 additions & 2 deletions libi2pd/Log.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

#include "Log.h"
#include <pthread.h>
#include "util.h"

//for std::transform
#include <algorithm>
Expand Down Expand Up @@ -180,7 +180,8 @@ namespace log {

void Log::Run ()
{
pthread_setname_np(pthread_self(), "Logging");
i2p::util::SetThreadName("Logging");

Reopen ();
while (m_IsRunning)
{
Expand Down
12 changes: 6 additions & 6 deletions libi2pd/NetDb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include <vector>
#include <boost/asio.hpp>
#include <stdexcept>
#include <pthread.h>

#include "I2PEndian.h"
#include "Base.h"
Expand All @@ -27,6 +26,7 @@
#include "ECIESX25519AEADRatchetSession.h"
#include "Config.h"
#include "NetDb.hpp"
#include "util.h"

using namespace i2p::transport;

Expand Down Expand Up @@ -89,7 +89,7 @@ namespace data

void NetDb::Run ()
{
pthread_setname_np(pthread_self(), "NetDB");
i2p::util::SetThreadName("NetDB");

uint32_t lastSave = 0, lastPublish = 0, lastExploratory = 0, lastManageRequest = 0, lastDestinationCleanup = 0;
while (m_IsRunning)
Expand All @@ -116,7 +116,7 @@ namespace data
break;
case eI2NPDeliveryStatus:
HandleDeliveryStatusMsg (msg);
break;
break;
case eI2NPDummyMsg:
// plain RouterInfo from NTCP2 with flags for now
HandleNTCP2RouterInfoMsg (msg);
Expand Down Expand Up @@ -158,12 +158,12 @@ namespace data
if (!m_HiddenMode && i2p::transport::transports.IsOnline ())
{
bool publish = false;
if (m_PublishReplyToken)
{
if (m_PublishReplyToken)
{
if (ts - lastPublish >= NETDB_PUBLISH_CONFIRMATION_TIMEOUT) publish = true;
}
else if (i2p::context.GetLastUpdateTime () > lastPublish ||
ts - lastPublish >= NETDB_PUBLISH_INTERVAL) publish = true;
ts - lastPublish >= NETDB_PUBLISH_INTERVAL) publish = true;
if (publish) // update timestamp and publish
{
i2p::context.UpdateTimestamp (ts);
Expand Down
8 changes: 4 additions & 4 deletions libi2pd/SSU.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
*/

#include <string.h>
#include <pthread.h>
#include "Log.h"
#include "Timestamp.h"
#include "RouterContext.h"
#include "NetDb.hpp"
#include "SSU.h"
#include "util.h"

#ifdef _WIN32
#include <boost/winapi/error_codes.hpp>
Expand Down Expand Up @@ -143,7 +143,7 @@ namespace transport

void SSUServer::Run ()
{
pthread_setname_np(pthread_self(), "SSU");
i2p::util::SetThreadName("SSU");

while (m_IsRunning)
{
Expand All @@ -160,7 +160,7 @@ namespace transport

void SSUServer::RunReceivers ()
{
pthread_setname_np(pthread_self(), "SSUv4");
i2p::util::SetThreadName("SSUv4");

while (m_IsRunning)
{
Expand All @@ -184,7 +184,7 @@ namespace transport

void SSUServer::RunReceiversV6 ()
{
pthread_setname_np(pthread_self(), "SSUv6");
i2p::util::SetThreadName("SSUv6");

while (m_IsRunning)
{
Expand Down
5 changes: 3 additions & 2 deletions libi2pd/Timestamp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
#include <future>
#include <boost/asio.hpp>
#include <boost/algorithm/string.hpp>
#include <pthread.h>
#include "Config.h"
#include "Log.h"
#include "I2PEndian.h"
#include "Timestamp.h"
#include "util.h"

#ifdef _WIN32
#ifndef _WIN64
Expand Down Expand Up @@ -149,7 +149,8 @@ namespace util

void NTPTimeSync::Run ()
{
pthread_setname_np(pthread_self(), "Timesync");
i2p::util::SetThreadName("Timesync");

while (m_IsRunning)
{
try
Expand Down
6 changes: 3 additions & 3 deletions libi2pd/Transports.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
* See full license text in LICENSE file at top of project tree
*/

#include <pthread.h>
#include "Log.h"
#include "Crypto.h"
#include "RouterContext.h"
Expand All @@ -15,6 +14,7 @@
#include "Transports.h"
#include "Config.h"
#include "HTTP.h"
#include "util.h"

using namespace i2p::data;

Expand Down Expand Up @@ -60,7 +60,7 @@ namespace transport
template<typename Keys>
void EphemeralKeysSupplier<Keys>::Run ()
{
pthread_setname_np(pthread_self(), "Ephemerals");
i2p::util::SetThreadName("Ephemerals");

while (m_IsRunning)
{
Expand Down Expand Up @@ -275,7 +275,7 @@ namespace transport

void Transports::Run ()
{
pthread_setname_np(pthread_self(), "Transports");
i2p::util::SetThreadName("Transports");

while (m_IsRunning && m_Service)
{
Expand Down
4 changes: 2 additions & 2 deletions libi2pd/Tunnel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include "I2PEndian.h"
#include <random>
#include <thread>
#include <pthread.h>
#include <algorithm>
#include <vector>
#include "Crypto.h"
Expand All @@ -23,6 +22,7 @@
#include "Config.h"
#include "Tunnel.h"
#include "TunnelPool.h"
#include "util.h"

namespace i2p
{
Expand Down Expand Up @@ -473,7 +473,7 @@ namespace tunnel

void Tunnels::Run ()
{
pthread_setname_np(pthread_self(), "Tunnels");
i2p::util::SetThreadName("Tunnels");
std::this_thread::sleep_for (std::chrono::seconds(1)); // wait for other parts are ready

uint64_t lastTs = 0, lastPoolsTs = 0;
Expand Down
40 changes: 30 additions & 10 deletions libi2pd/util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@
#include "util.h"
#include "Log.h"

#if not defined (__FreeBSD__)
#include <pthread.h>
#endif

#if defined(__OpenBSD__) || defined(__FreeBSD__)
#include <pthread_np.h>
#endif


#ifdef _WIN32
#include <stdlib.h>
#include <string.h>
Expand All @@ -32,7 +41,7 @@

// inet_pton exists Windows since Vista, but XP doesn't have that function!
// This function was written by Petar Korponai?. See http://stackoverflow.com/questions/15660203/inet-pton-identifier-not-found
int inet_pton_xp(int af, const char *src, void *dst)
int inet_pton_xp (int af, const char *src, void *dst)
{
struct sockaddr_storage ss;
int size = sizeof (ss);
Expand Down Expand Up @@ -94,7 +103,8 @@ namespace util

void RunnableService::Run ()
{
pthread_setname_np(pthread_self(), m_Name.c_str());
SetThreadName(m_Name.c_str());

while (m_IsRunning)
{
try
Expand All @@ -108,10 +118,20 @@ namespace util
}
}

void SetThreadName (const char *name) {
#if defined (__APPLE__)
pthread_setname_np(name);
#elif defined(__FreeBSD__)
pthread_set_name_np(pthread_self(), name)
#else
pthread_setname_np(pthread_self(), name);
#endif
}

namespace net
{
#ifdef _WIN32
bool IsWindowsXPorLater()
bool IsWindowsXPorLater ()
{
static bool isRequested = false;
static bool isXP = false;
Expand All @@ -130,7 +150,7 @@ namespace net
return isXP;
}

int GetMTUWindowsIpv4(sockaddr_in inputAddress, int fallback)
int GetMTUWindowsIpv4 (sockaddr_in inputAddress, int fallback)
{
ULONG outBufLen = 0;
PIP_ADAPTER_ADDRESSES pAddresses = nullptr;
Expand Down Expand Up @@ -184,7 +204,7 @@ namespace net
return fallback;
}

int GetMTUWindowsIpv6(sockaddr_in6 inputAddress, int fallback)
int GetMTUWindowsIpv6 (sockaddr_in6 inputAddress, int fallback)
{
ULONG outBufLen = 0;
PIP_ADAPTER_ADDRESSES pAddresses = nullptr;
Expand Down Expand Up @@ -249,7 +269,7 @@ namespace net
return fallback;
}

int GetMTUWindows(const boost::asio::ip::address& localAddress, int fallback)
int GetMTUWindows (const boost::asio::ip::address& localAddress, int fallback)
{
#ifdef UNICODE
string localAddress_temporary = localAddress.to_string();
Expand Down Expand Up @@ -281,7 +301,7 @@ namespace net
}
}
#else // assume unix
int GetMTUUnix(const boost::asio::ip::address& localAddress, int fallback)
int GetMTUUnix (const boost::asio::ip::address& localAddress, int fallback)
{
ifaddrs* ifaddr, *ifa = nullptr;
if(getifaddrs(&ifaddr) == -1)
Expand Down Expand Up @@ -336,7 +356,7 @@ namespace net
}
#endif // _WIN32

int GetMTU(const boost::asio::ip::address& localAddress)
int GetMTU (const boost::asio::ip::address& localAddress)
{
int fallback = localAddress.is_v6 () ? 1280 : 620; // fallback MTU

Expand All @@ -348,7 +368,7 @@ namespace net
return fallback;
}

const boost::asio::ip::address GetInterfaceAddress(const std::string & ifname, bool ipv6)
const boost::asio::ip::address GetInterfaceAddress (const std::string & ifname, bool ipv6)
{
#ifdef _WIN32
LogPrint(eLogError, "NetIface: cannot get address by interface name, not implemented on WIN32");
Expand Down Expand Up @@ -396,7 +416,7 @@ namespace net
#endif
}

bool IsInReservedRange(const boost::asio::ip::address& host) {
bool IsInReservedRange (const boost::asio::ip::address& host) {
// https://en.wikipedia.org/wiki/Reserved_IP_addresses
if(host.is_v4())
{
Expand Down
6 changes: 4 additions & 2 deletions libi2pd/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -168,11 +168,13 @@ namespace util
boost::asio::io_service::work m_Work;
};

void SetThreadName (const char *name);

namespace net
{
int GetMTU (const boost::asio::ip::address& localAddress);
const boost::asio::ip::address GetInterfaceAddress(const std::string & ifname, bool ipv6=false);
bool IsInReservedRange(const boost::asio::ip::address& host);
const boost::asio::ip::address GetInterfaceAddress (const std::string & ifname, bool ipv6=false);
bool IsInReservedRange (const boost::asio::ip::address& host);
}
}
}
Expand Down
Loading

0 comments on commit 3100d4f

Please sign in to comment.