added quite some code to handle byte string I/O

This commit is contained in:
2019-04-21 05:44:53 +00:00
parent 07be5e22d7
commit eed3853765
18 changed files with 342 additions and 330 deletions

View File

@ -1599,14 +1599,14 @@ qse_ssize_t qse_nwio_write (qse_nwio_t* nwio, const void* data, qse_size_t size)
{
if (nwio->tio == QSE_NULL)
{
return nwio_write (nwio, data, size);
return nwio_write(nwio, data, size);
}
else
{
qse_ssize_t n;
nwio->errnum = QSE_NWIO_ENOERR;
n = qse_tio_write (nwio->tio, data, size);
nwio->errnum = QSE_NWIO_ENOERR;
n = qse_tio_write(nwio->tio, data, size);
if (n <= -1 && nwio->errnum == QSE_NWIO_ENOERR)
nwio->errnum = tio_errnum_to_nwio_errnum (nwio->tio);
@ -1614,6 +1614,16 @@ qse_ssize_t qse_nwio_write (qse_nwio_t* nwio, const void* data, qse_size_t size)
}
}
qse_ssize_t qse_nwio_writebytes (qse_nwio_t* nwio, const void* data, qse_size_t size)
{
if (nwio->tio == QSE_NULL)
return nwio_write(nwio, data, size);
else
return qse_tio_writembs(nwio->tio, data, size);
}
/* ---------------------------------------------------------- */
static qse_ssize_t socket_input (

View File

@ -131,8 +131,7 @@ static void free_param (qse_pio_t* pio, param_t* param)
if (param->mcmd) QSE_MMGR_FREE (pio->mmgr, param->mcmd);
}
static int make_param (
qse_pio_t* pio, const qse_char_t* cmd, int flags, param_t* param)
static int make_param (qse_pio_t* pio, const qse_char_t* cmd, int flags, param_t* param)
{
#if defined(QSE_CHAR_IS_MCHAR)
qse_mchar_t* mcmd = QSE_NULL;
@ -1876,8 +1875,7 @@ qse_pio_pid_t qse_pio_getchild (const qse_pio_t* pio)
return pio->child;
}
static qse_ssize_t pio_read (
qse_pio_t* pio, void* buf, qse_size_t size, qse_pio_hnd_t hnd)
static qse_ssize_t pio_read (qse_pio_t* pio, void* buf, qse_size_t size, qse_pio_hnd_t hnd)
{
#if defined(_WIN32)
DWORD count;
@ -1942,7 +1940,7 @@ static qse_ssize_t pio_read (
size = QSE_TYPE_MAX(qse_ssize_t) & QSE_TYPE_MAX(size_t);
reread:
n = QSE_READ (hnd, buf, size);
n = QSE_READ(hnd, buf, size);
if (n <= -1)
{
if (errno == EINTR)
@ -1961,17 +1959,16 @@ reread:
#endif
}
qse_ssize_t qse_pio_read (
qse_pio_t* pio, qse_pio_hid_t hid, void* buf, qse_size_t size)
qse_ssize_t qse_pio_read (qse_pio_t* pio, qse_pio_hid_t hid, void* buf, qse_size_t size)
{
if (pio->pin[hid].tio == QSE_NULL)
return pio_read (pio, buf, size, pio->pin[hid].handle);
return pio_read(pio, buf, size, pio->pin[hid].handle);
else
{
qse_ssize_t n;
pio->errnum = QSE_PIO_ENOERR;
n = qse_tio_read (pio->pin[hid].tio, buf, size);
n = qse_tio_read(pio->pin[hid].tio, buf, size);
if (n <= -1 && pio->errnum == QSE_PIO_ENOERR)
pio->errnum = tio_errnum_to_pio_errnum (pio->pin[hid].tio);
@ -1979,8 +1976,7 @@ qse_ssize_t qse_pio_read (
}
}
static qse_ssize_t pio_write (
qse_pio_t* pio, const void* data, qse_size_t size, qse_pio_hnd_t hnd)
static qse_ssize_t pio_write (qse_pio_t* pio, const void* data, qse_size_t size, qse_pio_hnd_t hnd)
{
#if defined(_WIN32)
DWORD count;
@ -2059,18 +2055,16 @@ rewrite:
#endif
}
qse_ssize_t qse_pio_write (
qse_pio_t* pio, qse_pio_hid_t hid,
const void* data, qse_size_t size)
qse_ssize_t qse_pio_write (qse_pio_t* pio, qse_pio_hid_t hid, const void* data, qse_size_t size)
{
if (pio->pin[hid].tio == QSE_NULL)
return pio_write (pio, data, size, pio->pin[hid].handle);
return pio_write(pio, data, size, pio->pin[hid].handle);
else
{
qse_ssize_t n;
pio->errnum = QSE_PIO_ENOERR;
n = qse_tio_write (pio->pin[hid].tio, data, size);
n = qse_tio_write(pio->pin[hid].tio, data, size);
if (n <= -1 && pio->errnum == QSE_PIO_ENOERR)
pio->errnum = tio_errnum_to_pio_errnum (pio->pin[hid].tio);
@ -2078,6 +2072,14 @@ qse_ssize_t qse_pio_write (
}
}
qse_ssize_t qse_pio_writebytes (qse_pio_t* pio, qse_pio_hid_t hid, const void* data, qse_size_t size)
{
if (pio->pin[hid].tio == QSE_NULL)
return pio_write(pio, data, size, pio->pin[hid].handle);
else
return qse_tio_writembs(pio->pin[hid].tio, data, size);
}
qse_ssize_t qse_pio_flush (qse_pio_t* pio, qse_pio_hid_t hid)
{
qse_ssize_t n;
@ -2085,9 +2087,9 @@ qse_ssize_t qse_pio_flush (qse_pio_t* pio, qse_pio_hid_t hid)
if (pio->pin[hid].tio == QSE_NULL) return 0;
pio->errnum = QSE_PIO_ENOERR;
n = qse_tio_flush (pio->pin[hid].tio);
n = qse_tio_flush(pio->pin[hid].tio);
if (n <= -1 && pio->errnum == QSE_PIO_ENOERR)
pio->errnum = tio_errnum_to_pio_errnum (pio->pin[hid].tio);
pio->errnum = tio_errnum_to_pio_errnum(pio->pin[hid].tio);
return n;
}
@ -2346,8 +2348,7 @@ int qse_pio_kill (qse_pio_t* pio)
#endif
}
static qse_ssize_t pio_input (
qse_tio_t* tio, qse_tio_cmd_t cmd, void* buf, qse_size_t size)
static qse_ssize_t pio_input (qse_tio_t* tio, qse_tio_cmd_t cmd, void* buf, qse_size_t size)
{
if (cmd == QSE_TIO_DATA)
{
@ -2363,8 +2364,7 @@ static qse_ssize_t pio_input (
return 0;
}
static qse_ssize_t pio_output (
qse_tio_t* tio, qse_tio_cmd_t cmd, void* buf, qse_size_t size)
static qse_ssize_t pio_output (qse_tio_t* tio, qse_tio_cmd_t cmd, void* buf, qse_size_t size)
{
if (cmd == QSE_TIO_DATA)
{