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

Function PostScriptMessage

engine/gameobject/src/gameobject/gameobject_script.cpp:498–524  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

496 }
497
498 Result PostScriptMessage(const dmDDF::Descriptor* payload_descriptor, const uint8_t* payload, uint32_t payload_size, const dmMessage::URL* sender, const dmMessage::URL* receiver, int function_ref, bool unref_function_after_call)
499 {
500 dmArray<uint8_t> msg_buffer;
501 msg_buffer.SetCapacity(sizeof(dmGameObjectDDF::ScriptMessage) + payload_size);
502 msg_buffer.SetSize(msg_buffer.Capacity());
503
504 dmGameObjectDDF::ScriptMessage* script_msg = (dmGameObjectDDF::ScriptMessage*)msg_buffer.Begin();
505 script_msg->m_PayloadSize = payload_size;
506 script_msg->m_DescriptorHash = payload_descriptor->m_NameHash;
507 script_msg->m_Function = function_ref;
508 script_msg->m_UnrefFunction = unref_function_after_call;
509
510 uint8_t* message_payload = msg_buffer.Begin() + sizeof(dmGameObjectDDF::ScriptMessage);
511 memcpy(message_payload, payload, payload_size);
512
513 dmDDF::Descriptor* descriptor = dmGameObjectDDF::ScriptMessage::m_DDFDescriptor;
514 dmMessage::Result result = Post(sender, receiver, descriptor->m_NameHash, 0, 0,
515 (uintptr_t)descriptor, msg_buffer.Begin(), msg_buffer.Size(), 0);
516
517 if (dmMessage::RESULT_OK != result)
518 {
519 DM_HASH_REVERSE_MEM(hash_ctx, 512);
520 dmLogError("Failed to send message %s to %s:%s/%s", dmHashReverseSafe64Alloc(&hash_ctx, descriptor->m_NameHash), dmMessage::GetSocketName(receiver->m_Socket), dmHashReverseSafe64Alloc(&hash_ctx, receiver->m_Path), dmHashReverseSafe64Alloc(&hash_ctx, receiver->m_Fragment));
521 return RESULT_UNKNOWN_ERROR;
522 }
523 return RESULT_OK;
524 }
525
526 Result PostScriptUnrefMessage(const dmMessage::URL* sender, const dmMessage::URL* receiver, int reference)
527 {

Callers 1

PostDDFFunction · 0.85

Calls 8

dmHashReverseSafe64AllocFunction · 0.85
GetSocketNameFunction · 0.85
PostFunction · 0.50
SetCapacityMethod · 0.45
SetSizeMethod · 0.45
CapacityMethod · 0.45
BeginMethod · 0.45
SizeMethod · 0.45

Tested by

no test coverage detected