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

Function Post

engine/dlib/src/dlib/message.cpp:448–510  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

446 }
447
448 Result Post(const URL* sender, const URL* receiver, dmhash_t message_id, uintptr_t user_data1, uintptr_t user_data2,
449 uintptr_t descriptor, const void* message_data, uint32_t message_data_size, MessageDestroyCallback destroy_callback)
450 {
451 DM_PROFILE("Post");
452 //Currently called out by the Thread Sanitizer: DM_PROPERTY_ADD_U32(rmtp_Messages, 1);
453
454 if (receiver == 0x0)
455 {
456 return RESULT_SOCKET_NOT_FOUND;
457 }
458
459 MessageSocket* s = AcquireSocket(receiver->m_Socket);
460 if (s == 0x0)
461 {
462 return RESULT_SOCKET_NOT_FOUND;
463 }
464
465 dmMutex::Lock(s->m_Mutex);
466
467 MemoryAllocator* allocator = &s->m_Allocator;
468 uint32_t data_size = sizeof(Message) + message_data_size;
469 Message *new_message = (Message *) AllocateMessage(allocator, data_size);
470 if (sender != 0x0)
471 {
472 new_message->m_Sender = *sender;
473 }
474 else
475 {
476 ResetURL(&new_message->m_Sender);
477 }
478 new_message->m_Receiver = *receiver;
479 new_message->m_Id = message_id;
480 new_message->m_UserData1 = user_data1;
481 new_message->m_UserData2 = user_data2;
482 new_message->m_Descriptor = descriptor;
483 new_message->m_DataSize = message_data_size;
484 new_message->m_Next = 0;
485 new_message->m_DestroyCallback = destroy_callback;
486 memcpy(&new_message->m_Data[0], message_data, message_data_size);
487
488 bool is_first_message = !s->m_Header;
489
490 if (!s->m_Header)
491 {
492 s->m_Header = new_message;
493 s->m_Tail = new_message;
494 }
495 else
496 {
497 s->m_Tail->m_Next = new_message;
498 s->m_Tail = new_message;
499 }
500
501 if (is_first_message)
502 {
503 dmConditionVariable::Signal(s->m_Condition);
504 }
505 dmMutex::Unlock(s->m_Mutex);

Callers 15

LogFinalizeFunction · 0.70
LogInternalFunction · 0.70
VerifyCacheFunction · 0.70
PostScriptMessageFunction · 0.50
PostScriptUnrefMessageFunction · 0.50
Script_SetParentFunction · 0.50
TEST_FFunction · 0.50
TEST_FFunction · 0.50
PostSetParentMessageFunction · 0.50
PostSetParentFunction · 0.50

Calls 7

AcquireSocketFunction · 0.85
AllocateMessageFunction · 0.85
ResetURLFunction · 0.85
ReleaseSocketFunction · 0.85
LockFunction · 0.70
SignalFunction · 0.70
UnlockFunction · 0.70

Tested by 15

TEST_FFunction · 0.40
TEST_FFunction · 0.40
PostSetParentMessageFunction · 0.40
PostSetParentFunction · 0.40
TEST_FFunction · 0.40
TESTFunction · 0.40
HandleMessagePostDuringFunction · 0.40
PostThreadFunction · 0.40
HttpPostMethod · 0.40
TEST_PFunction · 0.40