Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
9fd02e18
Commit
9fd02e18
authored
Apr 20, 2014
by
Paul Sokolovsky
Browse files
modsocket: Add setblocking() method.
parent
0f836ef8
Changes
2
Hide whitespace changes
Inline
Side-by-side
unix/modsocket.c
View file @
9fd02e18
...
...
@@ -2,6 +2,7 @@
#include
<assert.h>
#include
<string.h>
#include
<unistd.h>
#include
<fcntl.h>
#include
<sys/stat.h>
#include
<sys/types.h>
#include
<sys/socket.h>
...
...
@@ -179,6 +180,22 @@ STATIC mp_obj_t socket_setsockopt(uint n_args, const mp_obj_t *args) {
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
socket_setsockopt_obj
,
4
,
4
,
socket_setsockopt
);
STATIC
mp_obj_t
socket_setblocking
(
mp_obj_t
self_in
,
mp_obj_t
flag_in
)
{
mp_obj_socket_t
*
self
=
self_in
;
int
val
=
mp_obj_is_true
(
flag_in
);
int
flags
=
fcntl
(
self
->
fd
,
F_GETFL
,
0
);
RAISE_ERRNO
(
flags
,
errno
);
if
(
val
)
{
flags
&=
~
O_NONBLOCK
;
}
else
{
flags
|=
O_NONBLOCK
;
}
flags
=
fcntl
(
self
->
fd
,
F_SETFL
,
flags
);
RAISE_ERRNO
(
flags
,
errno
);
return
mp_const_none
;
}
STATIC
MP_DEFINE_CONST_FUN_OBJ_2
(
socket_setblocking_obj
,
socket_setblocking
);
STATIC
mp_obj_t
socket_make_new
(
mp_obj_t
type_in
,
uint
n_args
,
uint
n_kw
,
const
mp_obj_t
*
args
)
{
int
family
=
AF_INET
;
int
type
=
SOCK_STREAM
;
...
...
@@ -216,6 +233,7 @@ STATIC const mp_map_elem_t microsocket_locals_dict_table[] = {
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_recv
),
(
mp_obj_t
)
&
socket_recv_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_send
),
(
mp_obj_t
)
&
socket_send_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_setsockopt
),
(
mp_obj_t
)
&
socket_setsockopt_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_setblocking
),
(
mp_obj_t
)
&
socket_setblocking_obj
},
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_close
),
(
mp_obj_t
)
&
socket_close_obj
},
#if MICROPY_SOCKET_EXTRA
{
MP_OBJ_NEW_QSTR
(
MP_QSTR_recv
),
(
mp_obj_t
)
&
mp_stream_read_obj
},
...
...
unix/qstrdefsport.h
View file @
9fd02e18
...
...
@@ -38,6 +38,7 @@ Q(listen)
Q
(
accept
)
Q
(
recv
)
Q
(
setsockopt
)
Q
(
setblocking
)
Q
(
AF_UNIX
)
Q
(
AF_INET
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment