summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri.staessens@ugent.be>2018-05-14 09:20:44 +0200
committerSander Vrijders <sander.vrijders@ugent.be>2018-05-14 11:40:09 +0200
commit38cfdc212c623a46038f005b0c1604c3fdaf3762 (patch)
tree57d9c0860f014afc9cb10de022d3e72fe4fa8fbc /doc
parenteaf14819c8cdab3c5ae1d678b0a12977f8b2d9e1 (diff)
downloadouroboros-38cfdc212c623a46038f005b0c1604c3fdaf3762.tar.gz
ouroboros-38cfdc212c623a46038f005b0c1604c3fdaf3762.zip
lib: Add event types to fqueue
The event type of the current event in the fqueue can now be requested using the fqueue_type() command. Currently events for packets (FLOW_PKT), flows (FLOW_UP, FLOW_DOWN) and allocation (FLOW_ALLOC, FLOW_DEALLOC) are specified. The implementation only tracks FLOW_PKT at this point. Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be> Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
Diffstat (limited to 'doc')
-rw-r--r--doc/man/fqueue.331
1 files changed, 28 insertions, 3 deletions
diff --git a/doc/man/fqueue.3 b/doc/man/fqueue.3
index 00c28d4c..abd21cfe 100644
--- a/doc/man/fqueue.3
+++ b/doc/man/fqueue.3
@@ -19,6 +19,8 @@ on flows
\fBint fqueue_next(fqueue_t * \fIfq\fB);
+\fBint fqueue_type(fqueue_t * \fIfq\fB);
+
\fBint fevent(fset_t * \fIset\fB, fqueue_t * \fIfq\fB,
const struct timespec * \fItimeo\fB);
@@ -36,6 +38,22 @@ an \fBfqueue_t\fR \fIfq\fR.
The \fBfqueue_next\fR() function retrieves the next event (a \fIflow
descriptor\fR) that is ready within the event queue \fIfq\fR.
+The \fBfqueue_type\fR() function retrieves the type for the current
+event on the fd that was returned by \fBfqueue_next\fR(). Event types
+are:
+.RS 4
+FLOW_PKT: A new packet arrived on this flow and is ready for reading.
+
+FLOW_UP: The flow is now marked UP and ready for read/write.
+
+FLOW_DOWN: The flow is now marked DOWN and cannot be written to.
+
+FLOW_ALLOC: A pending flow is now allocated.
+
+FLOW_DEALLOC: The flow is deallocated by the other (N+1 or N-1)
+process.
+.RE
+
The \fBfevent\fR() function retrieves all events that occured on any
\fIflow descriptor\fR within \fIset\fR and returns them in the event
queue \fBfq\fR. If a \fBstruct timespec *\fI timeo\fR can be provided,
@@ -50,7 +68,14 @@ On success, \fBfqueue_create\fR() returns a pointer to an
\fBfqueue_destroy\fR() has no return value.
-On success, \fBfevent\fR() returns the number of events that occured in \fIset\fR.
+On success, \fBfevent\fR() returns the number of events that occured
+in \fIset\fR.
+
+On success, \fBfqueue_next\fR() returns the next file descriptor for
+which an event occurred.
+
+On success, \fBfqueue_type\fR() returns the event type for the last
+event returned by \fBfqueue_next\fR().
.SH ERRORS
@@ -62,10 +87,10 @@ were available to create the \fBfqueue_t\fR.
.B -EINVAL
An invalid argument was passed (\fIfq\fR or \fIset\fR was \fINULL\fR).
-In addition, \fBfqueue_next\fR() can return
+In addition, \fBfqueue_next\fR() or \fBqueue_type\fR() can return
.B -EPERM
-No more fds available in \fIfq\fR.
+No more fds available or no current event in \fIfq\fR.
and \fBfevent\fR() can return