Defold Learn logo


Message

Api for sending messages

Namespace: dmMessage
Include: #include <dmsdk/dlib/message.h>
TYPES
dmMMessage::MessageDestroyCallback A callback for messages that needs cleanup after b...
HSocket Socket handle
ENUMS
dmMessage::Result Result enum
STRUCTS
struct dmMessage::StringURL Helper struct for parsing a string of the form "so...
struct dmMessage::URL URL specifying a sender/receiver of messages
struct Message
struct Message Message data desc used at dispatch callback. When ...
FUNCTIONS
dmhash_t GetFragment (dmMessage::URL url) Get the message fragment
dmhash_t GetPath (dmMessage::URL url) Get the message path
dmMessage::HSocket GetSocket (dmMessage::URL url) Get the message socket
const char* GetSocketName (dmMessage::HSocket socket) Get socket name
dmhash_t GetSocketNameHash (dmMessage::HSocket socket) Get socket name hash
bool IsSocketValid (dmMessage::HSocket socket) Tests if a socket is valid (not deleted).
 ParseUrl (const char* uri, dmMessage::StringUrl out) Convert a string to a URL struct
 Post (dmMessage::URL* sender, dmMessage::URL* receiver, dmhash_t message_id, uintptr_t user_data1, uintptr_t user_data2, uintptr_t descriptor, void* message_data, uint32_t message_data_size, dmMessage::MessageDestroyCallback destroy_callback) Post an message to a socket
template <T>  PostDDF (T* message, dmMessage::URL* sender, dmMessage::URL* receiver, uintptr_t user_data1, uintptr_t user_data2, dmMessage::MessageDestroyCallback destroy_callback) post a ddf message to a socket
void ResetUrl (dmMessage::URL url) Resets the given URL to default values.
void SetFragment (dmMessage::URL url, dmhash_t fragment) Set the message fragment
void SetPath (dmMessage::URL url, dmhash_t path) Set the message path
void SetSocket (dmMessage::URL url, dmMessage::HSocket socket) Set the socket

Functions

GetFragment

dmhash_t GetFragment(dmMessage::URL url)

Get the message fragment

PARAMETERS

dmMessage::URL url url

RETURNS

dmhash_t

GetPath

dmhash_t GetPath(dmMessage::URL url)

Get the message path

PARAMETERS

dmMessage::URL url url

RETURNS

dmhash_t

GetSocket

dmMessage::HSocket GetSocket(dmMessage::URL url)

Get the message socket

PARAMETERS

dmMessage::URL url url

RETURNS

dmMessage::HSocket

GetSocketName

const char* GetSocketName(dmMessage::HSocket socket)

Get socket name

PARAMETERS

dmMessage::HSocket socket Socket

RETURNS

const char* socket name. 0 if it was not found

GetSocketNameHash

dmhash_t GetSocketNameHash(dmMessage::HSocket socket)

Get socket name hash

PARAMETERS

dmMessage::HSocket socket Socket

RETURNS

dmhash_t socket name hash. 0 if it was not found

IsSocketValid

bool IsSocketValid(dmMessage::HSocket socket)

Tests if a socket is valid (not deleted).

PARAMETERS

dmMessage::HSocket socket Socket

RETURNS

bool if the socket is valid or not

ParseUrl

 ParseUrl(const char* uri, dmMessage::StringUrl out)

Convert a string to a URL struct

PARAMETERS

const char* uri string of the format ][path[#fragment]
dmMessage::StringUrl out url in string format, must not be 0x0

RETURNS

RESULT_OK on success - RESULT_MALFORMED_URL if the uri could not be parsed

Post

 Post(dmMessage::URL* sender, dmMessage::URL* receiver, dmhash_t message_id, uintptr_t user_data1, uintptr_t user_data2, uintptr_t descriptor, void* message_data, uint32_t message_data_size, dmMessage::MessageDestroyCallback destroy_callback)

Post an message to a socket

PARAMETERS

dmMessage::URL* sender The sender URL if the receiver wants to respond. 0x0 is accepted
dmMessage::URL* receiver The receiver URL, must not be 0x0
dmhash_t message_id Message id
uintptr_t user_data1 User data that can be used when both the sender and receiver are known
uintptr_t user_data2 User data that can be used when both the sender and receiver are known.
uintptr_t descriptor User specified descriptor of the message data
void* message_data Message data reference
uint32_t message_data_size Message data size in bytes
dmMessage::MessageDestroyCallback destroy_callback if set, will be called after each message dispatch

RETURNS

if the message was posted

PostDDF

 PostDDF(T* message, dmMessage::URL* sender, dmMessage::URL* receiver, uintptr_t user_data1, uintptr_t user_data2, dmMessage::MessageDestroyCallback destroy_callback)

Post a DDF message to a socket. A helper wrapper for Post()'ing a DDF message

PARAMETERS

T* message Message data reference
dmMessage::URL* sender The sender URL if the receiver wants to respond. 0x0 is accepted
dmMessage::URL* receiver The receiver URL, must not be 0x0
uintptr_t user_data1 User data that can be used when both the sender and receiver are known
uintptr_t user_data2 User data that can be used when both the sender and receiver are known.
dmMessage::MessageDestroyCallback destroy_callback if set, will be called after each message dispatch

RETURNS

if the message was posted

EXAMPLES

// dmMessage::URL sender, receiver;
// dmGameObject::HInstance go;

dmGameSystemDDF::PlayAnimation msg;
msg.m_Id = animation_id;
msg.m_Offset = params.m_CursorStart;
msg.m_PlaybackRate = params.m_PlaybackRate;

dmMessage::Result result = dmMessage::Post(&msg, &sender, &receiver, (uintptr_t)go, 0, 0));

ResetUrl

void ResetUrl(dmMessage::URL url)

Resets the given URL to default values.

PARAMETERS

dmMessage::URL url URL to reset

SetFragment

void SetFragment(dmMessage::URL url, dmhash_t fragment)

Set the message fragment

PARAMETERS

dmMessage::URL url url
dmhash_t fragment

SetPath

void SetPath(dmMessage::URL url, dmhash_t path)

Set the message path

PARAMETERS

dmMessage::URL url url
dmhash_t path

SetSocket

void SetSocket(dmMessage::URL url, dmMessage::HSocket socket)

Set the socket

PARAMETERS

dmMessage::URL url url
dmMessage::HSocket socket

Structs

dmMessage::StringURL

TYPE

struct dmMessage::StringURL

Helper struct for parsing a string of the form "socket:path#fragment"

MEMBERS

const char* m_Socket The socket
uint32_t m_SocketSize The socket length
const char* m_Path The path
uint32_t m_PathSize The path length
const char* m_Fragment The fragment
uint32_t m_FragmentSize The fragment length


dmMessage::URL

TYPE

struct dmMessage::URL

URL specifying a sender/receiver of messages


Message

TYPE

struct Message


Message

TYPE

struct Message

Message data desc used at dispatch callback. When a message is posted, the actual object is copied into the sockets internal buffer.

MEMBERS

dmMessage::URL m_Sender Sender uri
dmMessage::URL m_Receiver Receiver uri
dmhash_t m_Id Unique id of message
uintptr_t m_UserData1 User data pointer
uintptr_t m_UserData2 User data pointer
uintptr_t m_Descriptor User specified descriptor of the message data
uint32_t m_DataSize Size of message data in bytes
dmMessage::Message* m_Next Ptr to next message (or 0 if last)
dmMessage::MessageDestroyCallback m_DestroyCallback If set, will be called after each dispatch
uint8_t* m_Data Payload


Types

dmMMessage::MessageDestroyCallback

void dmMMessage::MessageDestroyCallback()

A callback for messages that needs cleanup after being dispatched. E.g. for freeing resources/memory.

PARAMETERS



HSocket

void HSocket()

Socket handle

PARAMETERS



Enums

dmMessage::Result

Result enum

RESULT_OK = 0
RESULT_SOCKET_EXISTS = -1
RESULT_SOCKET_NOT_FOUND = -2
RESULT_SOCKET_OUT_OF_RESOURCES = -3
RESULT_INVALID_SOCKET_NAME = -4
RESULT_MALFORMED_URL = -5
RESULT_NAME_OK_SOCKET_NOT_FOUND = -6