version 1.7, 2019/02/16 16:57:17 |
version 1.8, 2019/02/16 16:57:48 |
|
|
blk_recv_ack(struct sess *sess, |
blk_recv_ack(struct sess *sess, |
int fd, const struct blkset *blocks, int32_t idx) |
int fd, const struct blkset *blocks, int32_t idx) |
{ |
{ |
|
char buf[20]; |
|
size_t pos = 0, sz; |
|
|
/* FIXME: put into static block. */ |
sz = sizeof(int32_t) + /* index */ |
|
sizeof(int32_t) + /* block count */ |
|
sizeof(int32_t) + /* block length */ |
|
sizeof(int32_t) + /* checksum length */ |
|
sizeof(int32_t); /* block remainder */ |
|
assert(sz <= sizeof(buf)); |
|
|
if (!io_write_int(sess, fd, idx)) |
io_buffer_int(sess, buf, &pos, sz, idx); |
ERRX1(sess, "io_write_int"); |
io_buffer_int(sess, buf, &pos, sz, blocks->blksz); |
else if (!io_write_int(sess, fd, blocks->blksz)) |
io_buffer_int(sess, buf, &pos, sz, blocks->len); |
ERRX1(sess, "io_write_int"); |
io_buffer_int(sess, buf, &pos, sz, blocks->csum); |
else if (!io_write_int(sess, fd, blocks->len)) |
io_buffer_int(sess, buf, &pos, sz, blocks->rem); |
ERRX1(sess, "io_write_int"); |
assert(pos == sz); |
else if (!io_write_int(sess, fd, blocks->csum)) |
|
ERRX1(sess, "io_write_int"); |
|
else if (!io_write_int(sess, fd, blocks->rem)) |
|
ERRX1(sess, "io_write_int"); |
|
else |
|
return 1; |
|
|
|
return 0; |
if (!io_write_buf(sess, fd, buf, sz)) { |
|
ERRX1(sess, "io_write_buf"); |
|
return 0; |
|
} |
|
|
|
return 1; |
} |
} |
|
|
/* |
/* |