aboutsummaryrefslogtreecommitdiff
path: root/src/core/message.c
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-01-06 08:18:50 -0800
committerGarrett D'Amore <garrett@damore.org>2017-01-06 08:21:09 -0800
commita2801adffebb6a3679e41789b38ba925ed32832b (patch)
tree8e3a743301fedb04d19d9af3e30f5622b737c337 /src/core/message.c
parent601d7a6ca95678613ca576258314f50a6e5e742c (diff)
downloadnng-a2801adffebb6a3679e41789b38ba925ed32832b.tar.gz
nng-a2801adffebb6a3679e41789b38ba925ed32832b.tar.bz2
nng-a2801adffebb6a3679e41789b38ba925ed32832b.zip
Message API was awkward.
The use of a single function to get both size and length actually turned out to be awkward to use; better to have separate functions to get each. While here, disable some of the initialization/fork checks, because it turns out they aren't needed.
Diffstat (limited to 'src/core/message.c')
-rw-r--r--src/core/message.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/core/message.c b/src/core/message.c
index 351858a4..4c666955 100644
--- a/src/core/message.c
+++ b/src/core/message.c
@@ -185,8 +185,11 @@ nni_chunk_trim(nni_chunk *ch, size_t len)
if (ch->ch_len < len) {
return (NNG_EINVAL);
}
- ch->ch_ptr += len;
ch->ch_len -= len;
+ // Don't advance the pointer if we are just removing the whole content
+ if (ch->ch_len != 0) {
+ ch->ch_ptr += len;
+ }
return (0);
}
@@ -442,25 +445,33 @@ nni_msg_realloc(nni_msg *m, size_t sz)
void *
-nni_msg_header(nni_msg *m, size_t *szp)
+nni_msg_header(nni_msg *m)
{
- if (szp != NULL) {
- *szp = m->m_header.ch_len;
- }
return (m->m_header.ch_ptr);
}
+size_t
+nni_msg_header_len(nni_msg *m)
+{
+ return (m->m_header.ch_len);
+}
+
+
void *
-nni_msg_body(nni_msg *m, size_t *szp)
+nni_msg_body(nni_msg *m)
{
- if (szp != NULL) {
- *szp = m->m_body.ch_len;
- }
return (m->m_body.ch_ptr);
}
+size_t
+nni_msg_len(nni_msg *m)
+{
+ return (m->m_body.ch_len);
+}
+
+
int
nni_msg_append(nni_msg *m, const void *data, size_t len)
{