static net_message_t* receive(void* handle, net_message_t* msg, void* payload, uint8_t len) { DEBUGOUT("receive__receive(%p, %p, %p, %u)", handle, msg, payload, len); DEBUGOUT("receive__receive: state = %d", state); assert (state == WAIT_RECEIVE); assert (handle == receive_handle); assert (len == 2 * sizeof(uint32_t)); cur_payload = payload; cur_len = len; error_t error = logw_append(logw_handle, payload, len); assert (error == SUCCESS); (void)error; state = WAIT_LOG; net_message_t* res = my_msg; my_msg = msg; return res; }
CTEST(log, write) { int i; char kbuf[KEY_SIZE]; char vbuf[VAL_SIZE]; uint32_t tbn = 0U; uint64_t lsn = 112; struct options *opts = options_new(); struct logw *lgw = logw_open(opts, lsn); for (i = 0; i < R; i++) { memset(kbuf, 0 , KEY_SIZE); memset(vbuf, 0 , VAL_SIZE); snprintf(kbuf, KEY_SIZE, "key-%d", i); snprintf(vbuf, VAL_SIZE, "val-%d", i); struct msg k = {.data = kbuf, .size = KEY_SIZE}; struct msg v = {.data = vbuf, .size = VAL_SIZE}; logw_append(lgw, &k, &v, MSG_PUT, tbn); } uint32_t all_size; uint32_t one_size = 4 /* first length */ + 4 /* tid */ + 2 /* type */ + 4 /* key length */ + KEY_SIZE /* key */ + 4 /*val length */ + VAL_SIZE /* val */ + 4; /* crc */ all_size = R * one_size; ASSERT_EQUAL(all_size, lgw->size); logw_close(lgw); options_free(opts); }