Will create and send message using channel pointed by
.Bchannel
with data pointed by
.Bdata
with length pointed in bytes using
.Bdatalen.
If message dialog will continue pointer to the message with reply will be pushed to
.Bmsg.
This message will be sent within context of the calling thread.
.br
.Bsxmsg_send_pp
Will do exactly the same, but message sending will be postponed and sent by one of the thread serving the underlying connection link.
.br
Both calls will cause a sleep of the calling thread until reply or error will be returned. I.e. this call is blocking one. Also, message is actually atom of the dialog, that means one side sending a first message creates dialog, other side may or may not close this dialog with error code (actual a message without data) or with some data, you should track the message return code to correctly close dialogs.
.br
If dialogs will be not finished correctly the limit of active messages will be exceeded and you will be not able to create a new dialog while message poll is full with opened dialogs. It's a good practice to avoid long dialog queues in critical operations or operations required to send a lot of data, since each message can take a lot of time (SSL time, network time).
.br
.Bsxmsg_clean
will clean up the data used for closed dialog message, it should be used in case of rapid reply to avoid memory leaks.
.SHRETURNVALUE
Dialog will be closed in all cases except the following error codes returns: