Elektra  0.8.23
Typedefs | Enumerations | Functions
kdbio.h File Reference

Elektra-I/O structures for I/O bindings, plugins and applications. More...

#include "kdb.h"
Include dependency graph for kdbio.h:
This graph shows which files directly or indirectly include this file:

Typedefs

typedef struct _ElektraIoInterface ElektraIoInterface
 I/O binding handle.
 
typedef struct _ElektraIoFdOperation ElektraIoFdOperation
 file descriptor watch operation handle
 
typedef struct _ElektraIoTimerOperation ElektraIoTimerOperation
 timer operation handle
 
typedef struct _ElektraIoIdleOperation ElektraIoIdleOperation
 idle operation handle
 
typedef void(* ElektraIoFdCallback) (ElektraIoFdOperation *fdOp, int flags)
 Callback for file descriptor watch operations. More...
 
typedef void(* ElektraIoIdleCallback) (ElektraIoIdleOperation *idleOp)
 Callback for idle operations. More...
 
typedef void(* ElektraIoTimerCallback) (ElektraIoTimerOperation *timerOp)
 Callback for timer operations. More...
 
typedef int ElektraIoBindingAddFd(ElektraIoInterface *binding, ElektraIoFdOperation *fdOp)
 Add file descriptor to be watched by I/O binding. More...
 
typedef int ElektraIoBindingUpdateFd(ElektraIoFdOperation *fdOp)
 Notify I/O binding about changes to file descriptor watch operation. More...
 
typedef int ElektraIoBindingRemoveFd(ElektraIoFdOperation *fdOp)
 Remove file descriptor from I/O binding. More...
 
typedef int ElektraIoBindingAddTimer(ElektraIoInterface *binding, ElektraIoTimerOperation *timerOp)
 Add timer to I/O binding. More...
 
typedef int ElektraIoBindingUpdateTimer(ElektraIoTimerOperation *timerOp)
 Notifiy I/O binding about changes to timer structure. More...
 
typedef int ElektraIoBindingRemoveTimer(ElektraIoTimerOperation *timerOp)
 Remove timer from I/O binding. More...
 
typedef int ElektraIoBindingAddIdle(ElektraIoInterface *binding, ElektraIoIdleOperation *idleOp)
 Add idle to I/O binding. More...
 
typedef int ElektraIoBindingUpdateIdle(ElektraIoIdleOperation *idleOp)
 Notifiy I/O binding about changes to idle structure. More...
 
typedef int ElektraIoBindingRemoveIdle(ElektraIoIdleOperation *idleOp)
 Remove idle from I/O binding. More...
 
typedef int ElektraIoBindingCleanup(ElektraIoInterface *binding)
 Free memory used by I/O binding. More...
 

Enumerations

enum  ElektraIoFdFlags { ELEKTRA_IO_READABLE = 1 << 0, ELEKTRA_IO_WRITABLE = 1 << 1 }
 Available flags for file descriptors operation bitmask. More...
 

Functions

int elektraIoBindingAddFd (ElektraIoInterface *binding, ElektraIoFdOperation *fdOp)
 Add file descriptor to be watched by I/O binding. More...
 
int elektraIoBindingUpdateFd (ElektraIoFdOperation *fdOp)
 Notify I/O binding about changes to file descriptor watch operation. More...
 
int elektraIoBindingRemoveFd (ElektraIoFdOperation *fdOp)
 Remove file descriptor from I/O binding. More...
 
int elektraIoBindingAddTimer (ElektraIoInterface *binding, ElektraIoTimerOperation *timerOp)
 Add timer to I/O binding. More...
 
int elektraIoBindingUpdateTimer (ElektraIoTimerOperation *timerOp)
 Notifiy I/O binding about changes to timer structure. More...
 
int elektraIoBindingRemoveTimer (ElektraIoTimerOperation *timerOp)
 Remove timer from I/O binding. More...
 
int elektraIoBindingAddIdle (ElektraIoInterface *binding, ElektraIoIdleOperation *idleOp)
 Add idle to I/O binding. More...
 
int elektraIoBindingUpdateIdle (ElektraIoIdleOperation *idleOp)
 Notifiy I/O binding about changes to idle structure. More...
 
int elektraIoBindingRemoveIdle (ElektraIoIdleOperation *idleOp)
 Remove idle from I/O binding. More...
 
int elektraIoBindingCleanup (ElektraIoInterface *binding)
 Free memory used by I/O binding. More...
 
ElektraIoInterface * elektraIoNewBinding (ElektraIoBindingAddFd *addFd, ElektraIoBindingUpdateFd *updateFd, ElektraIoBindingRemoveFd *removeFd, ElektraIoBindingAddTimer *addTimer, ElektraIoBindingUpdateTimer *updateTimer, ElektraIoBindingRemoveTimer *removeTimer, ElektraIoBindingAddIdle *addIdle, ElektraIoBindingUpdateIdle *updateIdle, ElektraIoBindingRemoveIdle *removeIdle, ElektraIoBindingCleanup *cleanup)
 Create a new I/O binding. More...
 
void * elektraIoBindingGetData (ElektraIoInterface *binding)
 Get private data from I/O Binding. More...
 
int elektraIoBindingSetData (ElektraIoInterface *binding, void *data)
 Set private data from I/O Binding. More...
 
ElektraIoFdOperation * elektraIoNewFdOperation (int fd, int flags, int enabled, ElektraIoFdCallback callback, void *data)
 Create a new file descriptor watch operation. More...
 
int elektraIoFdSetEnabled (ElektraIoFdOperation *fdOp, int enabled)
 Enable or disable file descriptor watch operation. More...
 
int elektraIoFdSetFlags (ElektraIoFdOperation *fdOp, int flags)
 Update flag bitmask of file descriptor watch operation. More...
 
int elektraIoFdGetFd (ElektraIoFdOperation *fdOp)
 Get file descriptor number from operation. More...
 
void * elektraIoFdGetData (ElektraIoFdOperation *fdOp)
 Get private data from operation. More...
 
int elektraIoFdSetBindingData (ElektraIoFdOperation *fdOp, void *data)
 Set private binding data for operation. More...
 
void * elektraIoFdGetBindingData (ElektraIoFdOperation *fdOp)
 Get private binding data from operation. More...
 
ElektraIoInterface * elektraIoFdGetBinding (ElektraIoFdOperation *fdOp)
 Get binding from operation. More...
 
int elektraIoFdIsEnabled (ElektraIoFdOperation *fdOp)
 Check if file descriptor watch operation is enabled or disabled. More...
 
int elektraIoFdGetFlags (ElektraIoFdOperation *fdOp)
 Get flag bitmask of file descriptor watch operation. More...
 
ElektraIoFdCallback elektraIoFdGetCallback (ElektraIoFdOperation *fdOp)
 Get callback of file descriptor watch operation. More...
 
ElektraIoTimerOperation * elektraIoNewTimerOperation (unsigned int interval, int enabled, ElektraIoTimerCallback callback, void *data)
 Create a new timer operation. More...
 
int elektraIoTimerSetEnabled (ElektraIoTimerOperation *timerOp, int enabled)
 Enable or disable timer operation. More...
 
int elektraIoTimerIsEnabled (ElektraIoTimerOperation *timerOp)
 Check if timer operation is enabled or disabled. More...
 
int elektraIoTimerSetInterval (ElektraIoTimerOperation *timerOp, unsigned int interval)
 Update interval of timer operation. More...
 
unsigned int elektraIoTimerGetInterval (ElektraIoTimerOperation *timerOp)
 Get interval of timer operation. More...
 
int elektraIoTimerSetBindingData (ElektraIoTimerOperation *timerOp, void *data)
 Set private binding data for operation. More...
 
void * elektraIoTimerGetBindingData (ElektraIoTimerOperation *timerOp)
 Get private binding data from operation. More...
 
ElektraIoInterface * elektraIoTimerGetBinding (ElektraIoTimerOperation *timerOp)
 Get binding from operation. More...
 
void * elektraIoTimerGetData (ElektraIoTimerOperation *timerOp)
 Get private data from operation. More...
 
ElektraIoTimerCallback elektraIoTimerGetCallback (ElektraIoTimerOperation *timerOp)
 Get callback of timer operation. More...
 
ElektraIoIdleOperation * elektraIoNewIdleOperation (int enabled, ElektraIoIdleCallback callback, void *data)
 Create a new idle operation. More...
 
int elektraIoIdleSetEnabled (ElektraIoIdleOperation *idleOp, int enabled)
 Enable or disable idle operation. More...
 
int elektraIoIdleIsEnabled (ElektraIoIdleOperation *idleOp)
 Check if idle operation is enabled or disabled. More...
 
int elektraIoIdleSetBindingData (ElektraIoIdleOperation *idleOp, void *data)
 Set private binding data for operation. More...
 
void * elektraIoIdleGetBindingData (ElektraIoIdleOperation *idleOp)
 Get private binding data from operation. More...
 
ElektraIoInterface * elektraIoIdleGetBinding (ElektraIoIdleOperation *idleOp)
 Get binding from operation. More...
 
void * elektraIoIdleGetData (ElektraIoIdleOperation *idleOp)
 Get private data from operation. More...
 
ElektraIoIdleCallback elektraIoIdleGetCallback (ElektraIoIdleOperation *idleOp)
 Get callback of idle operation. More...
 
void elektraIoSetBinding (KDB *kdb, ElektraIoInterface *ioBinding)
 Set I/O binding for asynchronous I/O operations for KDB instance. More...
 
ElektraIoInterface * elektraIoGetBinding (KDB *kdb)
 Get I/O binding for asynchronous I/O operations for KDB instance. More...
 

Detailed Description

Elektra-I/O structures for I/O bindings, plugins and applications.

Typedef Documentation

typedef int ElektraIoBindingAddFd(ElektraIoInterface *binding, ElektraIoFdOperation *fdOp)

Add file descriptor to be watched by I/O binding.

An operation may only be added to one binding.

Parameters
bindingI/O binding handle
fdOpfile desciptor opertation handle
Return values
1on success
0on error
typedef int ElektraIoBindingAddIdle(ElektraIoInterface *binding, ElektraIoIdleOperation *idleOp)

Add idle to I/O binding.

Idle callbacks are executed without negative effects on other IO sources or the application (e.g. next event loop iteration) An operation may only be added to one binding.

Parameters
bindingI/O binding handle
idleOpidle operation handle
Return values
1on success
0on error
typedef int ElektraIoBindingAddTimer(ElektraIoInterface *binding, ElektraIoTimerOperation *timerOp)

Add timer to I/O binding.

Timeouts callbacks are executed after the initial interval has elapsed and then repeatedly after the interval has elapsed. An operation may only be added to one binding.

Parameters
bindingI/O binding handle
timerOptimer operation handle
Return values
1on success
0on error
typedef int ElektraIoBindingCleanup(ElektraIoInterface *binding)

Free memory used by I/O binding.

All added operations have to be removed before calling this function.

Parameters
bindingI/O binding handle
Return values
1on success
0on error
typedef int ElektraIoBindingRemoveFd(ElektraIoFdOperation *fdOp)

Remove file descriptor from I/O binding.

Parameters
fdOpfile descriptor opertation handle
Return values
1on success
0on error
typedef int ElektraIoBindingRemoveIdle(ElektraIoIdleOperation *idleOp)

Remove idle from I/O binding.

Parameters
idleOpidle operation handle
Return values
1on success
0on error
typedef int ElektraIoBindingRemoveTimer(ElektraIoTimerOperation *timerOp)

Remove timer from I/O binding.

Parameters
timerOptimer operation handle
Return values
1on success
0on error
typedef int ElektraIoBindingUpdateFd(ElektraIoFdOperation *fdOp)

Notify I/O binding about changes to file descriptor watch operation.

Parameters
fdOpfile descriptor opertation handle
Return values
1on success
0on error
typedef int ElektraIoBindingUpdateIdle(ElektraIoIdleOperation *idleOp)

Notifiy I/O binding about changes to idle structure.

Parameters
idleOpidle operation handle
Return values
1on success
0on error
typedef int ElektraIoBindingUpdateTimer(ElektraIoTimerOperation *timerOp)

Notifiy I/O binding about changes to timer structure.

Parameters
timerOptimer operation handle
Return values
1on success
0on error
typedef void(* ElektraIoFdCallback) (ElektraIoFdOperation *fdOp, int flags)

Callback for file descriptor watch operations.

Called whenever a file descriptor status changes.

Parameters
fdOpoperation handle
flagscurrent file descriptor flag bitmask
typedef void(* ElektraIoIdleCallback) (ElektraIoIdleOperation *idleOp)

Callback for idle operations.

Called whenever compute intensive tasks can be execute without interfering with other operations.

Parameters
idleOpoperation handle
typedef void(* ElektraIoTimerCallback) (ElektraIoTimerOperation *timerOp)

Callback for timer operations.

Called after the timer interval has elapsed.

Parameters
timerOpoperation handle

Enumeration Type Documentation

Available flags for file descriptors operation bitmask.

Enumerator
ELEKTRA_IO_READABLE 

file descriptor is readable

ELEKTRA_IO_WRITABLE 

file descriptor is writable

Function Documentation

int elektraIoBindingAddFd ( ElektraIoInterface *  binding,
ElektraIoFdOperation *  fdOp 
)

Add file descriptor to be watched by I/O binding.

An operation may only be added to one binding.

Parameters
bindingI/O binding handle
fdOpfile desciptor opertation handle
Return values
1on success
0on error
int elektraIoBindingAddIdle ( ElektraIoInterface *  binding,
ElektraIoIdleOperation *  idleOp 
)

Add idle to I/O binding.

Idle callbacks are executed without negative effects on other IO sources or the application (e.g. next event loop iteration) An operation may only be added to one binding.

Parameters
bindingI/O binding handle
idleOpidle operation handle
Return values
1on success
0on error
int elektraIoBindingAddTimer ( ElektraIoInterface *  binding,
ElektraIoTimerOperation *  timerOp 
)

Add timer to I/O binding.

Timeouts callbacks are executed after the initial interval has elapsed and then repeatedly after the interval has elapsed. An operation may only be added to one binding.

Parameters
bindingI/O binding handle
timerOptimer operation handle
Return values
1on success
0on error
int elektraIoBindingCleanup ( ElektraIoInterface *  binding)

Free memory used by I/O binding.

All added operations have to be removed before calling this function.

Parameters
bindingI/O binding handle
Return values
1on success
0on error
void* elektraIoBindingGetData ( ElektraIoInterface *  binding)

Get private data from I/O Binding.

To be used by I/O binding implementations only.

Parameters
bindingI/O-Binding handle
Returns
pointer to data or NULL on error
int elektraIoBindingRemoveFd ( ElektraIoFdOperation *  fdOp)

Remove file descriptor from I/O binding.

Parameters
fdOpfile descriptor opertation handle
Return values
1on success
0on error
int elektraIoBindingRemoveIdle ( ElektraIoIdleOperation *  idleOp)

Remove idle from I/O binding.

Parameters
idleOpidle operation handle
Return values
1on success
0on error
int elektraIoBindingRemoveTimer ( ElektraIoTimerOperation *  timerOp)

Remove timer from I/O binding.

Parameters
timerOptimer operation handle
Return values
1on success
0on error
int elektraIoBindingSetData ( ElektraIoInterface *  binding,
void *  data 
)

Set private data from I/O Binding.

To be used by I/O binding implementations only.

Parameters
bindingI/O binding handle
dataprivate data
Return values
1on success
0on error
int elektraIoBindingUpdateFd ( ElektraIoFdOperation *  fdOp)

Notify I/O binding about changes to file descriptor watch operation.

Parameters
fdOpfile descriptor opertation handle
Return values
1on success
0on error
int elektraIoBindingUpdateIdle ( ElektraIoIdleOperation *  idleOp)

Notifiy I/O binding about changes to idle structure.

Parameters
idleOpidle operation handle
Return values
1on success
0on error
int elektraIoBindingUpdateTimer ( ElektraIoTimerOperation *  timerOp)

Notifiy I/O binding about changes to timer structure.

Parameters
timerOptimer operation handle
Return values
1on success
0on error
ElektraIoInterface* elektraIoFdGetBinding ( ElektraIoFdOperation *  fdOp)

Get binding from operation.

Parameters
fdOpfd operation handle
Returns
pointer to binding or NULL on error
void* elektraIoFdGetBindingData ( ElektraIoFdOperation *  fdOp)

Get private binding data from operation.

Parameters
fdOpfile descriptor operation handle
Returns
pointer to data or NULL on error
ElektraIoFdCallback elektraIoFdGetCallback ( ElektraIoFdOperation *  fdOp)

Get callback of file descriptor watch operation.

Parameters
fdOpfile descriptor operation handle
Returns
callback
void* elektraIoFdGetData ( ElektraIoFdOperation *  fdOp)

Get private data from operation.

Parameters
fdOpfile descriptor operation handle
Returns
pointer to data or NULL on error
int elektraIoFdGetFd ( ElektraIoFdOperation *  fdOp)

Get file descriptor number from operation.

Parameters
fdOpfile descriptor operation handle
Returns
file descriptor number or 0 on error
int elektraIoFdGetFlags ( ElektraIoFdOperation *  fdOp)

Get flag bitmask of file descriptor watch operation.

Parameters
fdOpfile descriptor operation handle
Returns
watch flag bitmask (see ElektraIoFdFlags).
int elektraIoFdIsEnabled ( ElektraIoFdOperation *  fdOp)

Check if file descriptor watch operation is enabled or disabled.

Parameters
fdOpfile descriptor operation handle
Return values
0if disabled
1if enabled
int elektraIoFdSetBindingData ( ElektraIoFdOperation *  fdOp,
void *  data 
)

Set private binding data for operation.

Parameters
fdOpfile descriptor operation handle
datapointer to data
Return values
1on success
0on error
int elektraIoFdSetEnabled ( ElektraIoFdOperation *  fdOp,
int  enabled 
)

Enable or disable file descriptor watch operation.

Parameters
fdOpfile descriptor operation handle
enabled0 to disabled, any other value for enabled
Return values
1on success
0on error
int elektraIoFdSetFlags ( ElektraIoFdOperation *  fdOp,
int  flags 
)

Update flag bitmask of file descriptor watch operation.

Parameters
fdOpfile descriptor operation handle
flagswatch flag bitmask (see ElektraIoFdFlags).
Return values
1on success
0on error
ElektraIoInterface* elektraIoGetBinding ( KDB *  kdb)

Get I/O binding for asynchronous I/O operations for KDB instance.

Returns NULL if no I/O binding was set.

Parameters
kdbKDB instance
Returns
I/O binding or NULL
ElektraIoInterface* elektraIoIdleGetBinding ( ElektraIoIdleOperation *  idleOp)

Get binding from operation.

Parameters
idleOpidle operation handle
Returns
pointer to binding or NULL on error
void* elektraIoIdleGetBindingData ( ElektraIoIdleOperation *  idleOp)

Get private binding data from operation.

Parameters
idleOpidle operation handle
Returns
pointer to data or NULL on error
ElektraIoIdleCallback elektraIoIdleGetCallback ( ElektraIoIdleOperation *  idleOp)

Get callback of idle operation.

Parameters
idleOpidle operation handle
Returns
callback
void* elektraIoIdleGetData ( ElektraIoIdleOperation *  idleOp)

Get private data from operation.

Parameters
idleOpidle operation handle
Returns
pointer to data or NULL on error
int elektraIoIdleIsEnabled ( ElektraIoIdleOperation *  idleOp)

Check if idle operation is enabled or disabled.

Parameters
idleOpidle operation handle
Return values
0if disabled
1if enabled
int elektraIoIdleSetBindingData ( ElektraIoIdleOperation *  idleOp,
void *  data 
)

Set private binding data for operation.

Parameters
idleOpidle operation handle
datapointer to data
Return values
1on success
0on error
int elektraIoIdleSetEnabled ( ElektraIoIdleOperation *  idleOp,
int  enabled 
)

Enable or disable idle operation.

Parameters
idleOpidle operation handle
enabled0 to disabled, any other value for enabled
Return values
1on success
0on error
ElektraIoInterface* elektraIoNewBinding ( ElektraIoBindingAddFd *  addFd,
ElektraIoBindingUpdateFd *  updateFd,
ElektraIoBindingRemoveFd *  removeFd,
ElektraIoBindingAddTimer *  addTimer,
ElektraIoBindingUpdateTimer *  updateTimer,
ElektraIoBindingRemoveTimer *  removeTimer,
ElektraIoBindingAddIdle *  addIdle,
ElektraIoBindingUpdateIdle *  updateIdle,
ElektraIoBindingRemoveIdle *  removeIdle,
ElektraIoBindingCleanup *  cleanup 
)

Create a new I/O binding.

Make sure to free returned data in ElektraIoBindingCleanup.

Parameters
addFdfunction for adding a file descriptor watch operation
updateFdfunction for updating a file descriptor operation
removeFdfunction for removing a file descriptor operation
addTimerfunction for adding a timer operation
updateTimerfunction for updateing a timer operation
removeTimerfunction for removing a timer operation
addIdlefunction for adding an idle operation
updateIdlefunction for updating an idle operation
removeIdlefunction for removing an idle operation
cleanupfunction for cleaning up binding data
Returns
newly created binding
ElektraIoFdOperation* elektraIoNewFdOperation ( int  fd,
int  flags,
int  enabled,
ElektraIoFdCallback  callback,
void *  data 
)

Create a new file descriptor watch operation.

Free returned data after use.

Parameters
fdfile descriptor number
flagswatch flag bitmask (see ElektraIoFdFlags). Select on which file descriptor state changes the callback should be invoked
enabled0 to disabled, any other value for enabled
callbackCalled when file descriptor state has changes
dataCustom private data
Returns
file descriptor operation handle
ElektraIoIdleOperation* elektraIoNewIdleOperation ( int  enabled,
ElektraIoIdleCallback  callback,
void *  data 
)

Create a new idle operation.

Free returned data after use.

Parameters
enabled0 to disable, any other value for enabled
callbackCalled when file descriptor state has changes
dataCustom private data
Returns
idle operation handle
ElektraIoTimerOperation* elektraIoNewTimerOperation ( unsigned int  interval,
int  enabled,
ElektraIoTimerCallback  callback,
void *  data 
)

Create a new timer operation.

Free returned data after use.

Parameters
intervaltimer interval in miliseconds
enabled0 to disable, any other value for enabled
callbackCalled when file descriptor state has changes
dataCustom private data
Returns
timer operation handle
ElektraIoInterface* elektraIoTimerGetBinding ( ElektraIoTimerOperation *  timerOp)

Get binding from operation.

Parameters
timerOptimer operation handle
Returns
pointer to binding or NULL on error
void* elektraIoTimerGetBindingData ( ElektraIoTimerOperation *  timerOp)

Get private binding data from operation.

Parameters
timerOptimer operation handle
Returns
pointer to data or NULL on error
ElektraIoTimerCallback elektraIoTimerGetCallback ( ElektraIoTimerOperation *  timerOp)

Get callback of timer operation.

Parameters
timerOptimer operation handle
Returns
callback
void* elektraIoTimerGetData ( ElektraIoTimerOperation *  timerOp)

Get private data from operation.

Parameters
timerOptimer operation handle
Returns
pointer to data or NULL on error
unsigned int elektraIoTimerGetInterval ( ElektraIoTimerOperation *  timerOp)

Get interval of timer operation.

Parameters
timerOptimer operation handle
Returns
timer interval in miliseconds, 0 on error
int elektraIoTimerIsEnabled ( ElektraIoTimerOperation *  timerOp)

Check if timer operation is enabled or disabled.

Parameters
timerOptimer operation handle
Return values
0if disabled
1if enabled
int elektraIoTimerSetBindingData ( ElektraIoTimerOperation *  timerOp,
void *  data 
)

Set private binding data for operation.

Parameters
timerOptimer operation handle
datapointer to data
Return values
1on success
0on error
int elektraIoTimerSetEnabled ( ElektraIoTimerOperation *  timerOp,
int  enabled 
)

Enable or disable timer operation.

Parameters
timerOptimer operation handle
enabled0 to disabled, any other value for enabled
Return values
1on success
0on error
int elektraIoTimerSetInterval ( ElektraIoTimerOperation *  timerOp,
unsigned int  interval 
)

Update interval of timer operation.

Parameters
timerOptimer operation handle
intervaltimer interval in miliseconds
Return values
1on success
0on error