MCPcopy Create free account
hub / github.com/defold/defold / dmLogDispatch

Function dmLogDispatch

engine/dlib/src/dlib/log.cpp:350–419  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

348}
349
350static void dmLogDispatch(dmMessage::Message *message, void* user_ptr)
351{
352 dmLogServer* server = g_dmLogServer;
353
354 bool* run = (bool*) user_ptr;
355 LogMessage* log_message = (LogMessage*) &message->m_Data[0];
356 if (log_message->m_Type == LogMessage::SHUTDOWN)
357 {
358 *run = false;
359 return;
360 }
361
362 int msg_len = (int) strlen(log_message->m_Message);
363 DoLogSynchronized((LogSeverity)log_message->m_Severity, log_message->m_Domain, log_message->m_Message, msg_len);
364
365 // NOTE: Keep i as signed! See --i below after EraseSwap
366 int n = 0;
367 {
368 DM_SPINLOCK_SCOPED_LOCK(dmLog::g_LogServerLock);
369 if (!dmLog::IsServerInitialized())
370 return; // The log system may have been shut down in between
371 n = (int) server->m_Connections.Size();
372 }
373
374 for (int i = 0; i < n; ++i)
375 {
376 dmLogConnection* c = 0;
377 dmSocket::Socket socket = dmSocket::INVALID_SOCKET_HANDLE;
378 {
379 DM_SPINLOCK_SCOPED_LOCK(dmLog::g_LogServerLock);
380 if (!dmLog::IsServerInitialized())
381 return; // The log system may have been shut down in between
382 c = &server->m_Connections[i];
383 socket = c->m_Socket;
384 }
385
386 dmSocket::Result r;
387 int sent_bytes;
388 int total_sent = 0;
389 do
390 {
391 r = dmSocket::Send(socket, log_message->m_Message + total_sent, msg_len - total_sent, &sent_bytes);
392 if (r == dmSocket::RESULT_OK)
393 {
394 total_sent += sent_bytes;
395 }
396 else if (r == dmSocket::RESULT_TRY_AGAIN)
397 {
398 // Ok
399 }
400 else
401 {
402 dmSocket::Shutdown(socket, dmSocket::SHUTDOWNTYPE_READWRITE);
403 dmSocket::Delete(socket);
404
405 {
406 DM_SPINLOCK_SCOPED_LOCK(dmLog::g_LogServerLock);
407 if (!dmLog::IsServerInitialized())

Callers

nothing calls this directly

Calls 6

DoLogSynchronizedFunction · 0.85
IsServerInitializedFunction · 0.85
SendFunction · 0.70
ShutdownFunction · 0.70
DeleteFunction · 0.70
SizeMethod · 0.45

Tested by

no test coverage detected