manpagez: man pages & more
info gpgme
Home | html | info | man

File: gpgme.info,  Node: Using External Event Loops,  Next: Cancellation,  Prev: Waiting For Completion,  Up: Run Control

7.8.2 Using External Event Loops
--------------------------------

GPGME hides the complexity of the communication between the library and
the crypto engine.  The price of this convenience is that the calling
thread can block arbitrary long waiting for the data returned by the
crypto engine.  In single-threaded programs, in particular if they are
interactive, this is an unwanted side-effect.  OTOH, if ‘gpgme_wait’ is
used without the HANG option being enabled, it might be called
unnecessarily often, wasting CPU time that could be used otherwise.

   The I/O callback interface described in this section lets the user
take control over what happens when.  GPGME will provide the user with
the file descriptors that should be monitored, and the callback
functions that should be invoked when a file descriptor is ready for
reading or writing.  It is then the user’s responsibility to decide when
to check the file descriptors and when to invoke the callback functions.
Usually this is done in an event loop, that also checks for events in
other parts of the program.  If the callback functions are only called
when the file descriptors are ready, GPGME will never block.  This gives
the user more control over the program flow, and allows to perform other
tasks when GPGME would block otherwise.

   By using this advanced mechanism, GPGME can be integrated smoothly
into GUI toolkits like GTK+ even for single-threaded programs.

* Menu:

* I/O Callback Interface::        How I/O callbacks are registered.
* Registering I/O Callbacks::     How to use I/O callbacks for a context.
* I/O Callback Example::          An example how to use I/O callbacks.
* I/O Callback Example GTK++::     How to use GPGME with GTK+.
* I/O Callback Example GDK::      How to use GPGME with GDK.
* I/O Callback Example Qt::       How to use GPGME with Qt.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.