.\" Ouroboros man pages CC-BY 2017 - 2018
.\" Dimitri Staessens <dimitri.staessens@ugent.be>
.\" Sander Vrijders <sander.vrijders@ugent.be>

.TH FLOW_READ 3 2017-04-10 Ouroboros "Ouroboros Programmer's Manual"

.SH NAME

flow_read, flow_write \- read and write from/to a flow

.SH SYNOPSIS

.B #include <ouroboros/dev.h>

\fBint flow_read(int \fIfd\fB, void * \fIbuf\fB, size_t \fIcount\fB);\fR

\fBint flow_write(int \fIfd\fB, const void * \fIbuf\fB, size_t \fIcount\fB);\fR

Compile and link with \fI-louroboros-dev\fR.

.SH DESCRIPTION

The \fBflow_read\fR() function attempts to read at most \fIcount\fR
bytes from the flow associated with the allocated flow descriptor
\fIfd\fR into the buffer pointed to by buf.

The \fBflow_write\fR() function attempts to write \fIcount\fR bytes
from the supplied buffer \fIbuf\fR to the flow specified by \fIfd\fR.

.SH RETURN VALUE

On success, \fBflow_read\fR() returns the number of bytes read. On
failure, a negative value indicating the error will be returned. If
the number of bytes read equals count, a subsequent call to
\fBflow_read\fR() should be performed to check if there were more
bytes to read. This call to \fBflow_read\fR will return 0 if there was
no more data and mark the end of the datagram.

On success, \fBflow_write\fR() returns 0. On failure, a negative value
indicating the error will be returned. Passing a NULL pointer for
\fIbuf\fR returns 0 with no other effects.

.SH ERRORS
.B -EINVAL
An invalid argument was passed.

.B -EIRMD
Failed to contact an IRMd instance.

.B -EBADF
Invalid flow descriptor passed.

.B -ENOTALLOC
The flow was not allocated.

.B -EFLOWDOWN
The flow has been reported down.

.B -EMSGSIZE
The buffer was too large to be written.

.SH ATTRIBUTES

For an explanation of the terms used in this section, see \fBattributes\fR(7).

.TS
box, tab(&);
LB|LB|LB
L|L|L.
Interface & Attribute & Value
_
\fBflow_read\fR() & Thread safety & MT-Safe
_
\fBflow_write\fR() & Thread safety & MT-Safe
.TE

.SH TERMINOLOGY
Please see \fBouroboros-glossary\fR(7).

.SH SEE ALSO

.BR fccntl "(3), " flow_alloc "(3), " fqueue "(3), " fset "(3), " \
ouroboros (8)

.SH COLOPHON
This page is part of the Ouroboros project, found at
http://ouroboros.ilabt.imec.be

These man pages are licensed under the Creative Commons Attribution
4.0 International License. To view a copy of this license, visit
http://creativecommons.org/licenses/by/4.0/