| 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 | { |
no test coverage detected