8000 extmod/modusocket.c: Add socket read/write functions. · micropython/micropython@804f837 · GitHub
[go: up one dir, main page]

Skip to content

Commit 804f837

Browse files
committed
extmod/modusocket.c: Add socket read/write functions.
1 parent c8a270a commit 804f837

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

extmod/modusocket.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,8 @@ STATIC const mp_rom_map_elem_t socket_locals_dict_table[] = {
354354
{ MP_ROM_QSTR(MP_QSTR_connect), MP_ROM_PTR(&socket_connect_obj) },
355355
{ MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&socket_send_obj) },
356356
{ MP_ROM_QSTR(MP_QSTR_recv), MP_ROM_PTR(&socket_recv_obj) },
357+
{ MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&socket_send_obj) },
358+
{ MP_ROM_QSTR(MP_QSTR_read), MP_ROM_PTR(&socket_recv_obj) },
357359
{ MP_ROM_QSTR(MP_QSTR_sendto), MP_ROM_PTR(&socket_sendto_obj) },
358360
{ MP_ROM_QSTR(MP_QSTR_recvfrom), MP_ROM_PTR(&socket_recvfrom_obj) },
359361
{ MP_ROM_QSTR(MP_QSTR_setsockopt), MP_ROM_PTR(&socket_setsockopt_obj) },
@@ -382,7 +384,35 @@ mp_uint_t socket_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *
382384
return self->nic_type->ioctl(self, request, arg, errcode);
383385
}
384386

387+
mp_uint_t socket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
388+
mod_network_socket_obj_t *self = MP_OBJ_TO_PTR(self_in);
389+
if (self->nic == MP_OBJ_NULL) {
390+
return MP_STREAM_ERROR;
391+
}
392+
mp_int_t ret = self->nic_type->recv(self, (byte*)buf, size, errcode);
393+
if (ret < 0) {
394+
ret = MP_STREAM_ERROR;
395+
*errcode = -(*errcode); // expects a positive error code
396+
}
397+
return ret;
398+
}
399+
400+
mp_uint_t socket_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errcode) {
401+
mod_network_socket_obj_t *self = MP_OBJ_TO_PTR(self_in);
402+
if (self->nic == MP_OBJ_NULL) {
403+
return MP_STREAM_ERROR;
404+
}
405+
mp_int_t ret = self->nic_type->send(self, buf, size, errcode);
406+
if (ret < 0) {
407+
ret = MP_STREAM_ERROR;
408+
*errcode = -(*errcode); // expects a positive error code
409+
}
410+
return ret;
411+
}
412+
385413
STATIC const mp_stream_p_t socket_stream_p = {
414+
.read = socket_read,
415+
.write = socket_write,
386416
.ioctl = socket_ioctl,
387417
.is_text = false,
388418
};

0 commit comments

Comments
 (0)
0