.TH "io_doc.c" 3elektra "Fri Aug 4 2023" "Version 0.11.0" "Elektra" \" -*- nroff -*-
.ad l
.nh
.SH NAME
io_doc.c \- I/O example binding\&.  

.SH SYNOPSIS
.br
.PP
\fC#include <stdlib\&.h>\fP
.br
\fC#include <string\&.h>\fP
.br
\fC#include <kdbassert\&.h>\fP
.br
\fC#include <kdbhelper\&.h>\fP
.br
\fC#include <kdbio\&.h>\fP
.br
\fC#include <kdblogger\&.h>\fP
.br

.SS "Classes"

.in +1c
.ti -1c
.RI "struct \fBSomeIoLibHandle\fP"
.br
.RI "Example I/O management library data structure\&. "
.ti -1c
.RI "struct \fBDocOperationData\fP"
.br
.RI "[kdbio operation data] "
.ti -1c
.RI "struct \fBDocBindingData\fP"
.br
.RI "[kdbio operation data] "
.in -1c
.SS "Typedefs"

.in +1c
.ti -1c
.RI "typedef struct \fBSomeIoLibHandle\fP \fBSomeIoLibHandle\fP"
.br
.RI "Example I/O management library data structure\&. "
.ti -1c
.RI "typedef struct \fBDocOperationData\fP \fBDocOperationData\fP"
.br
.RI "[kdbio operation data] "
.ti -1c
.RI "typedef struct \fBDocBindingData\fP \fBDocBindingData\fP"
.br
.RI "[kdbio operation data] "
.in -1c
.SS "Enumerations"

.in +1c
.ti -1c
.RI "enum \fBSomeIoLibFlags\fP { \fBSOME_IOLIB_READABLE\fP = 1 << 0, \fBSOME_IOLIB_WRITABLE\fP = 1 << 1 }"
.br
.RI "Example I/O mangement library bitmask flags\&. "
.in -1c
.SS "Functions"

.in +1c
.ti -1c
.RI "\fBDocOperationData\fP * \fBnewOperationData\fP (void)"
.br
.RI "[kdbio binding data] "
.ti -1c
.RI "int \fBsomeBitMaskToElektraIoFlags\fP (int bitmask)"
.br
.RI "Convert your I/O library bit mask to Elektra's I/O flags\&. "
.ti -1c
.RI "void \fBioDocBindingFdCallback\fP (\fBSomeIoLibHandle\fP *handle, int bitmask)"
.br
.RI "Calls the associated operation callback\&. "
.ti -1c
.RI "void \fBioDocBindingTimerCallback\fP (\fBSomeIoLibHandle\fP *handle)"
.br
.RI "[kdbio operation callback] "
.ti -1c
.RI "void \fBioDocBindingIdleCallback\fP (\fBSomeIoLibHandle\fP *handle)"
.br
.RI "Calls the associated operation callback\&. "
.ti -1c
.RI "int \fBioDocBindingUpdateFd\fP (\fBElektraIoFdOperation\fP *fdOp)"
.br
.RI "Update information about a file descriptor watched by I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingAddFd\fP (\fBElektraIoInterface\fP *binding, \fBElektraIoFdOperation\fP *fdOp)"
.br
.RI "Add file descriptor to I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingRemoveFd\fP (\fBElektraIoFdOperation\fP *fdOp)"
.br
.RI "Remove file descriptor from I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingUpdateTimer\fP (\fBElektraIoTimerOperation\fP *timerOp)"
.br
.RI "Update timer in I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingAddTimer\fP (\fBElektraIoInterface\fP *binding, \fBElektraIoTimerOperation\fP *timerOp)"
.br
.RI "Add timer for I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingRemoveTimer\fP (\fBElektraIoTimerOperation\fP *timerOp)"
.br
.RI "Remove timer from I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingUpdateIdle\fP (\fBElektraIoIdleOperation\fP *idleOp)"
.br
.RI "Update idle operation in I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingAddIdle\fP (\fBElektraIoInterface\fP *binding, \fBElektraIoIdleOperation\fP *idleOp)"
.br
.RI "Add idle operation to I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingRemoveIdle\fP (\fBElektraIoIdleOperation\fP *idleOp)"
.br
.RI "Remove idle operation from I/O binding\&. "
.ti -1c
.RI "int \fBioDocBindingCleanup\fP (\fBElektraIoInterface\fP *binding)"
.br
.RI "Cleanup\&. "
.ti -1c
.RI "\fBElektraIoInterface\fP * \fBelektraIoDocNew\fP (char *foo)"
.br
.RI "Create and initialize a new doc I/O binding\&. "
.in -1c
.SH "Detailed Description"
.PP 
I/O example binding\&. 


.PP
\fBCopyright\fP
.RS 4
BSD License (see LICENSE\&.md or https://www.libelektra.org)
.RE
.PP
All functions except the I/O binding entry point (\fBelektraIoDocNew()\fP) would normally be static but for documentation purposes they are not\&. 
.SH "Typedef Documentation"
.PP 
.SS "typedef struct \fBDocBindingData\fP \fBDocBindingData\fP"

.PP
[kdbio operation data] [kdbio binding data] Container for additional information for an I/O binding\&. 
.SS "typedef struct \fBDocOperationData\fP \fBDocOperationData\fP"

.PP
[kdbio operation data] Container for additional information for I/O binding operations\&.
.PP
It is helpful to create a data structure for your binding to store additional data 
.SH "Enumeration Type Documentation"
.PP 
.SS "enum \fBSomeIoLibFlags\fP"

.PP
Example I/O mangement library bitmask flags\&. 
.PP
\fBEnumerator\fP
.in +1c
.TP
\fB\fISOME_IOLIB_READABLE \fP\fP
indicates that the file descriptor is readable 
.TP
\fB\fISOME_IOLIB_WRITABLE \fP\fP
indicates that the file descriptor is readable 
.SH "Function Documentation"
.PP 
.SS "\fBElektraIoInterface\fP* elektraIoDocNew (char * foo)"

.PP
Create and initialize a new doc I/O binding\&. 
.PP
\fBParameters\fP
.RS 4
\fIfoo\fP Some data from I/O management library (e\&.g\&. a handle) 
.RE
.PP
\fBReturns\fP
.RS 4
Populated I/O interface 
.RE
.PP
[kdbio binding create]
.PP
[kdbio binding create] [kdbio binding setdata]
.PP
[kdbio binding setdata]
.SS "int ioDocBindingAddFd (\fBElektraIoInterface\fP * binding, \fBElektraIoFdOperation\fP * fdOp)"

.PP
Add file descriptor to I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingAddFd\fP 
.RE
.PP
[kdbio binding addfd]
.PP
[kdbio binding addfd]
.SS "int ioDocBindingAddIdle (\fBElektraIoInterface\fP * binding, \fBElektraIoIdleOperation\fP * idleOp)"

.PP
Add idle operation to I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingAddIdle\fP 
.RE
.PP

.SS "int ioDocBindingAddTimer (\fBElektraIoInterface\fP * binding, \fBElektraIoTimerOperation\fP * timerOp)"

.PP
Add timer for I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingAddTimer\fP 
.RE
.PP

.SS "int ioDocBindingCleanup (\fBElektraIoInterface\fP * binding)"

.PP
Cleanup\&. 
.PP
\fBParameters\fP
.RS 4
\fIbinding\fP I/O binding 
.RE
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingCleanup\fP 
.RE
.PP

.SS "void ioDocBindingFdCallback (\fBSomeIoLibHandle\fP * handle, int bitmask)"

.PP
Calls the associated operation callback\&. Called by your I/O management library whenever a file descriptor status has changed\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP some I/O management handle 
.br
\fIflags\fP flags bit mask [kdbio operation callback] 
.RE
.PP

.SS "void ioDocBindingIdleCallback (\fBSomeIoLibHandle\fP * handle)"

.PP
Calls the associated operation callback\&. Called by your I/O management library whenever an idle operation can run without interfering with other operations\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP some I/O management handle 
.RE
.PP

.SS "int ioDocBindingRemoveFd (\fBElektraIoFdOperation\fP * fdOp)"

.PP
Remove file descriptor from I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingRemoveFd\fP 
.RE
.PP
[kdbio operation getdata]
.PP
[kdbio operation getdata]
.SS "int ioDocBindingRemoveIdle (\fBElektraIoIdleOperation\fP * idleOp)"

.PP
Remove idle operation from I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingRemoveIdle\fP 
.RE
.PP

.SS "int ioDocBindingRemoveTimer (\fBElektraIoTimerOperation\fP * timerOp)"

.PP
Remove timer from I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingRemoveTimer\fP 
.RE
.PP

.SS "void ioDocBindingTimerCallback (\fBSomeIoLibHandle\fP * handle)"

.PP
[kdbio operation callback] Calls the associated operation callback\&. Called by your I/O management library whenever a timer interval has passed\&.
.PP
\fBParameters\fP
.RS 4
\fIhandle\fP some I/O management handle 
.RE
.PP

.SS "int ioDocBindingUpdateFd (\fBElektraIoFdOperation\fP * fdOp)"

.PP
Update information about a file descriptor watched by I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingUpdateFd\fP 
.RE
.PP

.SS "int ioDocBindingUpdateIdle (\fBElektraIoIdleOperation\fP * idleOp)"

.PP
Update idle operation in I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingUpdateIdle\fP 
.RE
.PP

.SS "int ioDocBindingUpdateTimer (\fBElektraIoTimerOperation\fP * timerOp)"

.PP
Update timer in I/O binding\&. 
.PP
\fBSee also\fP
.RS 4
\fBkdbio\&.h\fP \fBElektraIoBindingUpdateTimer\fP 
.RE
.PP

.SS "\fBDocOperationData\fP* newOperationData (void)"

.PP
[kdbio binding data] A little helper function for allocating our custom operation data structure 
.PP
\fBReturns\fP
.RS 4
New data structure, remember to call \fBelektraFree()\fP 
.RE
.PP

.SS "int someBitMaskToElektraIoFlags (int bitmask)"

.PP
Convert your I/O library bit mask to Elektra's I/O flags\&. 
.PP
\fBParameters\fP
.RS 4
\fIbitmask\fP bit mask from I/O management library 
.RE
.PP
\fBReturns\fP
.RS 4
bit mask with Elektra's I/O flags (\fBElektraIoFdFlags\fP) 
.RE
.PP

.SH "Author"
.PP 
Generated automatically by Doxygen for Elektra from the source code\&.
