aboutsummaryrefslogtreecommitdiff
path: root/cc3200
diff options
context:
space:
mode:
authordanicampora2015-10-20 15:04:55 +0200
committerdanicampora2015-10-21 15:30:56 +0200
commit04db848dc7c7356a38f809b5efdd4699a41aa54f (patch)
tree7fb8a5ec866788d13e25ef313b4431c27e756cba /cc3200
parent4b630c452d238895385fb044e91b3496359a8dde (diff)
docs: Add usocket and ussl modules' documentation.
Diffstat (limited to 'cc3200')
-rw-r--r--cc3200/mods/modusocket.c17
-rw-r--r--cc3200/mods/modussl.c4
2 files changed, 18 insertions, 3 deletions
diff --git a/cc3200/mods/modusocket.c b/cc3200/mods/modusocket.c
index ad59493ea..42163b68b 100644
--- a/cc3200/mods/modusocket.c
+++ b/cc3200/mods/modusocket.c
@@ -397,6 +397,21 @@ STATIC mp_obj_t socket_setblocking(mp_obj_t self_in, mp_obj_t blocking) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_setblocking_obj, socket_setblocking);
+STATIC mp_obj_t socket_makefile(mp_uint_t n_args, const mp_obj_t *args) {
+ // TODO: CPython explicitly says that closing the returned object doesn't
+ // close the original socket (Python2 at all says that fd is dup()ed). But
+ // we save on the bloat.
+ mod_network_socket_obj_t *self = args[0];
+ if (n_args > 1) {
+ const char *mode = mp_obj_str_get_str(args[1]);
+ if (strcmp(mode, "rb") && strcmp(mode, "wb")) {
+ nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, mpexception_value_invalid_arguments));
+ }
+ }
+ return self;
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_makefile_obj, 1, 6, socket_makefile);
+
STATIC const mp_map_elem_t socket_locals_dict_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR___del__), (mp_obj_t)&socket_close_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_close), (mp_obj_t)&socket_close_obj },
@@ -412,7 +427,7 @@ STATIC const mp_map_elem_t socket_locals_dict_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_setsockopt), (mp_obj_t)&socket_setsockopt_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_settimeout), (mp_obj_t)&socket_settimeout_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_setblocking), (mp_obj_t)&socket_setblocking_obj },
- { MP_OBJ_NEW_QSTR(MP_QSTR_makefile), (mp_obj_t)&mp_identity_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_makefile), (mp_obj_t)&socket_makefile_obj },
// stream methods
{ MP_OBJ_NEW_QSTR(MP_QSTR_read), (mp_obj_t)&mp_stream_read_obj },
diff --git a/cc3200/mods/modussl.c b/cc3200/mods/modussl.c
index a11d2b2ef..ce3067d96 100644
--- a/cc3200/mods/modussl.c
+++ b/cc3200/mods/modussl.c
@@ -61,7 +61,7 @@ STATIC const mp_obj_type_t ssl_socket_type;
/******************************************************************************/
// Micro Python bindings; SSL class
-// ssl socket inherits from normal socket, so we take its
+// ssl sockets inherit from normal socket, so we take its
// locals and stream methods
STATIC const mp_obj_type_t ssl_socket_type = {
{ &mp_type_type },
@@ -116,7 +116,7 @@ STATIC mp_obj_t mod_ssl_wrap_socket(mp_uint_t n_args, const mp_obj_t *pos_args,
// create the ssl socket
mp_obj_ssl_socket_t *ssl_sock = m_new_obj(mp_obj_ssl_socket_t);
- // ssl socket inherits all properties from the original socket
+ // ssl sockets inherit all properties from the original socket
memcpy (&ssl_sock->sock_base, &((mod_network_socket_obj_t *)args[0].u_obj)->sock_base, sizeof(mod_network_socket_base_t));
ssl_sock->base.type = &ssl_socket_type;
ssl_sock->sock_base.cert_req = (args[4].u_int == SSL_CERT_REQUIRED) ? true : false;