mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Make logging cost free when there is no output target (#12247)
The logging streams now do almost no work when there is no output target for them. For example, if LL_VERBOSE has no output targets, then `verbosestream << x` will return a StreamProxy with a null target. Any further `<<` operations applied to it will do nothing.
This commit is contained in:
parent
ae7664597e
commit
0704ca0550
14 changed files with 336 additions and 192 deletions
|
@ -230,14 +230,14 @@ void Address::setPort(u16 port)
|
|||
m_port = port;
|
||||
}
|
||||
|
||||
void Address::print(std::ostream *s) const
|
||||
void Address::print(std::ostream& s) const
|
||||
{
|
||||
if (m_addr_family == AF_INET6)
|
||||
*s << "[" << serializeString() << "]:" << m_port;
|
||||
s << "[" << serializeString() << "]:" << m_port;
|
||||
else if (m_addr_family == AF_INET)
|
||||
*s << serializeString() << ":" << m_port;
|
||||
s << serializeString() << ":" << m_port;
|
||||
else
|
||||
*s << "(undefined)";
|
||||
s << "(undefined)";
|
||||
}
|
||||
|
||||
bool Address::isLocalhost() const
|
||||
|
|
|
@ -59,7 +59,7 @@ public:
|
|||
int getFamily() const { return m_addr_family; }
|
||||
bool isIPv6() const { return m_addr_family == AF_INET6; }
|
||||
bool isZero() const;
|
||||
void print(std::ostream *s) const;
|
||||
void print(std::ostream &s) const;
|
||||
std::string serializeString() const;
|
||||
bool isLocalhost() const;
|
||||
|
||||
|
|
|
@ -41,25 +41,14 @@ namespace con
|
|||
/* defines used for debugging and profiling */
|
||||
/******************************************************************************/
|
||||
#ifdef NDEBUG
|
||||
#define LOG(a) a
|
||||
#define PROFILE(a)
|
||||
#else
|
||||
#if 0
|
||||
/* this mutex is used to achieve log message consistency */
|
||||
std::mutex log_message_mutex;
|
||||
#define LOG(a) \
|
||||
{ \
|
||||
MutexAutoLock loglock(log_message_mutex); \
|
||||
a; \
|
||||
}
|
||||
#else
|
||||
// Prevent deadlocks until a solution is found after 5.2.0 (TODO)
|
||||
#define LOG(a) a
|
||||
#endif
|
||||
|
||||
#define PROFILE(a) a
|
||||
#endif
|
||||
|
||||
// TODO: Clean this up.
|
||||
#define LOG(a) a
|
||||
|
||||
#define PING_TIMEOUT 5.0
|
||||
|
||||
u16 BufferedPacket::getSeqnum() const
|
||||
|
|
|
@ -32,22 +32,18 @@ namespace con
|
|||
/* defines used for debugging and profiling */
|
||||
/******************************************************************************/
|
||||
#ifdef NDEBUG
|
||||
#define LOG(a) a
|
||||
#define PROFILE(a)
|
||||
#undef DEBUG_CONNECTION_KBPS
|
||||
#else
|
||||
/* this mutex is used to achieve log message consistency */
|
||||
std::mutex log_conthread_mutex;
|
||||
#define LOG(a) \
|
||||
{ \
|
||||
MutexAutoLock loglock(log_conthread_mutex); \
|
||||
a; \
|
||||
}
|
||||
#define PROFILE(a) a
|
||||
//#define DEBUG_CONNECTION_KBPS
|
||||
#undef DEBUG_CONNECTION_KBPS
|
||||
#endif
|
||||
|
||||
// TODO: Clean this up.
|
||||
#define LOG(a) a
|
||||
|
||||
#define WINDOW_SIZE 5
|
||||
|
||||
static session_t readPeerId(const u8 *packetdata)
|
||||
|
|
|
@ -198,7 +198,7 @@ void UDPSocket::Send(const Address &destination, const void *data, int size)
|
|||
if (socket_enable_debug_output) {
|
||||
// Print packet destination and size
|
||||
dstream << (int)m_handle << " -> ";
|
||||
destination.print(&dstream);
|
||||
destination.print(dstream);
|
||||
dstream << ", size=" << size;
|
||||
|
||||
// Print packet contents
|
||||
|
@ -295,7 +295,7 @@ int UDPSocket::Receive(Address &sender, void *data, int size)
|
|||
if (socket_enable_debug_output) {
|
||||
// Print packet sender and size
|
||||
dstream << (int)m_handle << " <- ";
|
||||
sender.print(&dstream);
|
||||
sender.print(dstream);
|
||||
dstream << ", size=" << received;
|
||||
|
||||
// Print packet contents
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue