diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/message.c | 13 | ||||
| -rw-r--r-- | src/core/message.h | 12 |
2 files changed, 23 insertions, 2 deletions
diff --git a/src/core/message.c b/src/core/message.c index 5fdad109..64a63201 100644 --- a/src/core/message.c +++ b/src/core/message.c @@ -29,6 +29,7 @@ struct nng_msg { nni_chunk m_body; uint32_t m_pipe; // set on receive nni_atomic_int m_refcnt; + nng_sockaddr m_addr; // set on receive, transport use }; #if 0 @@ -656,3 +657,15 @@ nni_msg_get_pipe(const nni_msg *m) { return (m->m_pipe); } + +const nng_sockaddr * +nni_msg_address(const nni_msg *msg) +{ + return (&msg->m_addr); +} + +void +nni_msg_set_address(nng_msg *msg, const nng_sockaddr *addr) +{ + msg->m_addr = *addr; +} diff --git a/src/core/message.h b/src/core/message.h index 7e35ba75..9f88cbe8 100644 --- a/src/core/message.h +++ b/src/core/message.h @@ -20,9 +20,9 @@ extern int nni_msg_realloc(nni_msg *, size_t); extern int nni_msg_reserve(nni_msg *, size_t); extern size_t nni_msg_capacity(nni_msg *); extern int nni_msg_dup(nni_msg **, const nni_msg *); -extern void * nni_msg_header(nni_msg *); +extern void *nni_msg_header(nni_msg *); extern size_t nni_msg_header_len(const nni_msg *); -extern void * nni_msg_body(nni_msg *); +extern void *nni_msg_body(nni_msg *); extern size_t nni_msg_len(const nni_msg *); extern int nni_msg_append(nni_msg *, const void *, size_t); extern int nni_msg_insert(nni_msg *, const void *, size_t); @@ -55,6 +55,14 @@ extern void nni_msg_clone(nni_msg *); extern nni_msg *nni_msg_unique(nni_msg *); extern bool nni_msg_shared(nni_msg *); +// Socket address access. Principally useful for transports like UDP, +// which may need to remember or add the socket address later. +// SP transports will generally not support upper layers setting the +// address on send, but will take the information from the pipe. +// It may be set on receive, depending upon the transport. +extern const nng_sockaddr *nni_msg_address(const nni_msg *); +extern void nni_msg_set_address(nng_msg *, const nng_sockaddr *); + // nni_msg_pull_up ensures that the message is unique, and that any // header present is "pulled up" into the message body. If the function // cannot do this for any reason (out of space in the body), then NULL |
