Skip to content

Commit 063e6e7

Browse files
committed
py/modio: Implement io.BufferedWriter.flush().
1 parent 5d93dfb commit 063e6e7

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

py/modio.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,25 @@ STATIC mp_uint_t bufwriter_write(mp_obj_t self_in, const void *buf, mp_uint_t si
8282
return org_size;
8383
}
8484

85+
STATIC mp_obj_t bufwriter_flush(mp_obj_t self_in) {
86+
mp_obj_bufwriter_t *self = MP_OBJ_TO_PTR(self_in);
87+
88+
if (self->len != 0) {
89+
int err;
90+
mp_uint_t out_sz = mp_stream_writeall(self->stream, self->buf, self->len, &err);
91+
self->len = 0;
92+
if (out_sz == MP_STREAM_ERROR) {
93+
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(err)));
94+
}
95+
}
96+
97+
return mp_const_none;
98+
}
99+
STATIC MP_DEFINE_CONST_FUN_OBJ_1(bufwriter_flush_obj, bufwriter_flush);
100+
85101
STATIC const mp_map_elem_t bufwriter_locals_dict_table[] = {
86102
{ MP_OBJ_NEW_QSTR(MP_QSTR_write), (mp_obj_t)&mp_stream_write_obj },
103+
{ MP_OBJ_NEW_QSTR(MP_QSTR_flush), (mp_obj_t)&bufwriter_flush_obj },
87104
};
88105
STATIC MP_DEFINE_CONST_DICT(bufwriter_locals_dict, bufwriter_locals_dict_table);
89106

0 commit comments

Comments
 (0)