mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 18:11:28 +01:00
27 lines
624 B
C
27 lines
624 B
C
|
#include "wire/wire_sync.h"
|
||
|
#include <assert.h>
|
||
|
#include <ccan/endian/endian.h>
|
||
|
#include <ccan/read_write_all/read_write_all.h>
|
||
|
|
||
|
bool wire_sync_write(int fd, const void *msg)
|
||
|
{
|
||
|
be16 be_len = cpu_to_be16(tal_count(msg));
|
||
|
|
||
|
assert(be16_to_cpu(be_len) == tal_count(msg));
|
||
|
return write_all(fd, &be_len, sizeof(be_len))
|
||
|
&& write_all(fd, msg, tal_count(msg));
|
||
|
}
|
||
|
|
||
|
u8 *wire_sync_read(const tal_t *ctx, int fd)
|
||
|
{
|
||
|
be16 be_len;
|
||
|
u8 *msg;
|
||
|
|
||
|
if (!read_all(fd, &be_len, sizeof(be_len)))
|
||
|
return NULL;
|
||
|
msg = tal_arr(ctx, u8, be16_to_cpu(be_len));
|
||
|
if (!read_all(fd, msg, be16_to_cpu(be_len)))
|
||
|
return tal_free(msg);
|
||
|
return msg;
|
||
|
}
|