Skip to content

Commit 6eb4d76

Browse files
author
mars
committed
heavy api changes
1 parent 398f380 commit 6eb4d76

1 file changed

Lines changed: 9 additions & 41 deletions

File tree

HeavySource/HvMessage.c

Lines changed: 9 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
HvMessage *msg_init(HvMessage *m, hv_size_t numElements, hv_uint32_t timestamp) {
2121
m->timestamp = timestamp;
2222
m->numElements = (hv_uint16_t) numElements;
23-
m->numBytes = (hv_uint16_t) msg_getByteSize(numElements);
23+
m->numBytes = (hv_uint16_t) msg_getCoreSize(numElements);
2424
return m;
2525
}
2626

@@ -43,7 +43,7 @@ HvMessage *msg_initWithBang(HvMessage *m, hv_uint32_t timestamp) {
4343
HvMessage *msg_initWithSymbol(HvMessage *m, hv_uint32_t timestamp, char *s) {
4444
m->timestamp = timestamp;
4545
m->numElements = 1;
46-
m->numBytes = sizeof(HvMessage);
46+
m->numBytes = sizeof(HvMessage) + (hv_uint16_t) hv_strlen(s);
4747
msg_setSymbol(m, 0, s);
4848
return m;
4949
}
@@ -56,51 +56,18 @@ HvMessage *msg_initWithHash(HvMessage *m, hv_uint32_t timestamp, hv_uint32_t h)
5656
return m;
5757
}
5858

59-
HvMessage *msg_initV(HvMessage *const m, const hv_uint32_t timestamp, const char *format, ...) {
60-
va_list ap;
61-
va_start(ap, format);
62-
63-
const int numElem = (int) hv_strlen(format);
64-
msg_init(m, numElem, timestamp);
65-
for (int i = 0; i < numElem; i++) {
66-
switch (format[i]) {
67-
case 'b': msg_setBang(m,i); break;
68-
case 'f': msg_setFloat(m, i, (float) va_arg(ap, double)); break;
69-
case 's': msg_setSymbol(m, i, (char *) va_arg(ap, char *)); break;
70-
case 'h': // hash not supported
71-
default: break;
72-
}
73-
}
74-
va_end(ap);
75-
76-
return m;
77-
}
78-
79-
hv_size_t msg_getNumHeapBytes(const HvMessage *m) {
80-
// get the size of all symbol elements
81-
hv_size_t rsizeofsym = 0;
82-
for (int i = 0; i < msg_getNumElements(m); ++i) {
83-
if (msg_isSymbol(m,i)) {
84-
rsizeofsym += (hv_size_t) hv_strlen(msg_getSymbol(m,i)) + 1; // +1 to allow for trailing '\0'
85-
}
86-
}
87-
88-
// the total byte size on the heap
89-
return (msg_getByteSize(msg_getNumElements(m)) + rsizeofsym);
90-
}
91-
9259
void msg_copyToBuffer(const HvMessage *m, char *buffer, hv_size_t len) {
9360
HvMessage *r = (HvMessage *) buffer;
9461

62+
hv_size_t len_r = msg_getCoreSize(msg_getNumElements(m));
63+
9564
// assert that the message is not already larger than the length of the buffer
96-
hv_assert(msg_getNumBytes(m) <= len);
65+
hv_assert(len_r <= len);
9766

9867
// copy the basic message to the buffer
99-
hv_memcpy(r, m, msg_getNumBytes(m));
68+
hv_memcpy(r, m, len_r);
10069

101-
hv_size_t len_r = msg_getNumBytes(m);
102-
103-
char *p = buffer + msg_getByteSize(msg_getNumElements(m)); // points to the end of the base message
70+
char *p = buffer + len_r; // points to the end of the base message
10471
for (int i = 0; i < msg_getNumElements(m); ++i) {
10572
if (msg_isSymbol(m,i)) {
10673
const hv_size_t symLen = (hv_size_t) hv_strlen(msg_getSymbol(m,i)) + 1; // include the trailing null char
@@ -117,7 +84,7 @@ void msg_copyToBuffer(const HvMessage *m, char *buffer, hv_size_t len) {
11784

11885
// the message is serialised such that all symbol elements are placed in order at the end of the buffer
11986
HvMessage *msg_copy(const HvMessage *m) {
120-
const hv_size_t heapSize = msg_getNumHeapBytes(m);
87+
const hv_uint32_t heapSize = msg_getSize(m);
12188
char *r = (char *) hv_malloc(heapSize);
12289
hv_assert(r != NULL);
12390
msg_copyToBuffer(m, r, heapSize);
@@ -184,6 +151,7 @@ hv_uint32_t msg_symbolToHash(const char *s) {
184151
static const hv_int32_t r = 24;
185152

186153
if (s == NULL) return 0;
154+
187155
hv_uint32_t len = (hv_uint32_t) hv_strlen(s);
188156
hv_uint32_t x = len; // seed (0) ^ len
189157

0 commit comments

Comments
 (0)