aborting (or finishing) pending operations in GPGME

Stephane Corthesy stephane@sente.ch
Mon Jan 14 11:44:01 2002


I tried to implement async calls in GPGME ObjC wrapper classes, and  
felt on the problems you mentioned here:

> However, the gpgme_op_foobar_start form of the operations in the  
second class
> is quite unusable.  The gpgme.h header describes the gpgme_op_foobar as 
> convenient functions, but they are a necessity, because gpgme_op_foobar 
> can't be implemented using the _start form and just the public  
interface of
> gpgme.  There are two reasons for that:
>
> 1. The pending flag is never reset and not resettable.
> 2. The resulting error value of the operation is not calculable via the 
>    public interface.  It is retrieved through internal interfaces. 

(I needed to make some more tests before sending you feedback on  
this issue)

I find the op_start calls useful, combined with gpgme_wait(): user  
can start operations in a secondary thread, blocks the secondary  
thread with gpgme_wait() until end of operation, and notify back in  
the main (caller) thread; or he can cancel the operation. gpgme only  
needs to be thread-safe, and provide a way for user to get status on  
the operations. Of course, we could do the same with the sync  
calls...

> The gpgme_wait does of course not
> work for this; the scheduling must implemented in another way

Why doesn't it work? Seemed to work fine in my case.

Stephane