Skip to content

Commit d0c51a4

Browse files
committed
socketpool: add read & write stream protocol support
1 parent 7fbdd7f commit d0c51a4

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

shared-bindings/socketpool/Socket.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,26 @@ STATIC const mp_rom_map_elem_t socketpool_socket_locals_dict_table[] = {
423423

424424
STATIC MP_DEFINE_CONST_DICT(socketpool_socket_locals_dict, socketpool_socket_locals_dict_table);
425425

426+
STATIC mp_uint_t socket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errorcode) {
427+
socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in);
428+
mp_int_t ret = socketpool_socket_recv_into(self, buf, size);
429+
if (ret < 0) {
430+
*errorcode = -ret;
431+
return MP_STREAM_ERROR;
432+
}
433+
return ret;
434+
}
435+
436+
STATIC mp_uint_t socket_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errorcode) {
437+
socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in);
438+
mp_int_t ret = socketpool_socket_send(self, buf, size);
439+
if (ret < 0) {
440+
*errorcode = -ret;
441+
return MP_STREAM_ERROR;
442+
}
443+
return ret;
444+
}
445+
426446
STATIC mp_uint_t socket_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) {
427447
socketpool_socket_obj_t *self = MP_OBJ_TO_PTR(self_in);
428448
mp_uint_t ret;
@@ -443,6 +463,8 @@ STATIC mp_uint_t socket_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg
443463
}
444464

445465
STATIC const mp_stream_p_t socket_stream_p = {
466+
.read = socket_read,
467+
.write = socket_write,
446468
.ioctl = socket_ioctl,
447469
.is_text = false,
448470
};

0 commit comments

Comments
 (0)