3232
3333#include "py/mperrno.h"
3434#include "py/objlist.h"
35+ #include "py/objproperty.h"
3536#include "py/objtuple.h"
3637#include "py/runtime.h"
3738#include "py/stream.h"
@@ -383,7 +384,6 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socketpool_socket_setsockopt_obj, 4,
383384//| :param ~int value: timeout in seconds. 0 means non-blocking. None means block indefinitely.
384385//| """
385386//| ...
386- //|
387387STATIC mp_obj_t socketpool_socket_settimeout (mp_obj_t self_in , mp_obj_t timeout_in ) {
388388 socketpool_socket_obj_t * self = MP_OBJ_TO_PTR (self_in );
389389 mp_uint_t timeout_ms ;
@@ -401,11 +401,24 @@ STATIC mp_obj_t socketpool_socket_settimeout(mp_obj_t self_in, mp_obj_t timeout_
401401}
402402STATIC MP_DEFINE_CONST_FUN_OBJ_2 (socketpool_socket_settimeout_obj , socketpool_socket_settimeout );
403403
404+ //| type: int
405+ //| """Read-only access to the socket type"""
406+ //|
407+ STATIC mp_obj_t socketpool_socket_obj_get_type (mp_obj_t self_in ) {
408+ socketpool_socket_obj_t * self = MP_OBJ_TO_PTR (self_in );
409+ return MP_OBJ_NEW_SMALL_INT (common_hal_socketpool_socket_get_type (self ));
410+ }
411+ MP_DEFINE_CONST_FUN_OBJ_1 (socketpool_socket_get_type_obj , socketpool_socket_obj_get_type );
412+
413+ MP_PROPERTY_GETTER (socketpool_socket_type_obj ,
414+ (mp_obj_t )& socketpool_socket_get_type_obj );
415+
404416STATIC const mp_rom_map_elem_t socketpool_socket_locals_dict_table [] = {
405417 { MP_ROM_QSTR (MP_QSTR___enter__ ), MP_ROM_PTR (& default___enter___obj ) },
406418 { MP_ROM_QSTR (MP_QSTR___exit__ ), MP_ROM_PTR (& socketpool_socket___exit___obj ) },
407419 { MP_ROM_QSTR (MP_QSTR___del__ ), MP_ROM_PTR (& socketpool_socket_close_obj ) },
408420
421+
409422 { MP_ROM_QSTR (MP_QSTR_accept ), MP_ROM_PTR (& socketpool_socket_accept_obj ) },
410423 { MP_ROM_QSTR (MP_QSTR_bind ), MP_ROM_PTR (& socketpool_socket_bind_obj ) },
411424 { MP_ROM_QSTR (MP_QSTR_close ), MP_ROM_PTR (& socketpool_socket_close_obj ) },
@@ -419,6 +432,7 @@ STATIC const mp_rom_map_elem_t socketpool_socket_locals_dict_table[] = {
419432 { MP_ROM_QSTR (MP_QSTR_setblocking ), MP_ROM_PTR (& socketpool_socket_setblocking_obj ) },
420433 { MP_ROM_QSTR (MP_QSTR_setsockopt ), MP_ROM_PTR (& socketpool_socket_setsockopt_obj ) },
421434 { MP_ROM_QSTR (MP_QSTR_settimeout ), MP_ROM_PTR (& socketpool_socket_settimeout_obj ) },
435+ { MP_ROM_QSTR (MP_QSTR_type ), MP_ROM_PTR (& socketpool_socket_type_obj ) },
422436};
423437
424438STATIC MP_DEFINE_CONST_DICT (socketpool_socket_locals_dict , socketpool_socket_locals_dict_table );
@@ -472,7 +486,7 @@ STATIC const mp_stream_p_t socket_stream_p = {
472486MP_DEFINE_CONST_OBJ_TYPE (
473487 socketpool_socket_type ,
474488 MP_QSTR_Socket ,
475- MP_TYPE_FLAG_NONE ,
489+ MP_TYPE_FLAG_HAS_SPECIAL_ACCESSORS ,
476490 locals_dict , & socketpool_socket_locals_dict ,
477491 protocol , & socket_stream_p
478492 );
0 commit comments