|
|
@ -14,14 +14,30 @@ |
|
|
|
#import "PEPQueue.h" |
|
|
|
#include "keymanagement.h" |
|
|
|
|
|
|
|
int examine_identity(pEp_identity *ident, void *management) |
|
|
|
{ |
|
|
|
PEPQueue *q = (__bridge PEPQueue *)management; |
|
|
|
|
|
|
|
NSDictionary *identity = [NSDictionary dictionary]; |
|
|
|
PEP_identityFromStruct(identity, ident); |
|
|
|
|
|
|
|
[q enqueue::identity]; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static pEp_identity *retrieve_next_identity(void *management) |
|
|
|
{ |
|
|
|
PEPQueue *q = (__bridge PEPQueue *)management; |
|
|
|
|
|
|
|
while (![q count]) |
|
|
|
sleep(100); |
|
|
|
usleep(100); |
|
|
|
|
|
|
|
NSDictionary *ident = [q dequeue]; |
|
|
|
|
|
|
|
return PEP_identityToStruct([q dequeue]); |
|
|
|
if ([ident objectForKey:@"THE_END"]) |
|
|
|
return NULL; |
|
|
|
else |
|
|
|
return PEP_identityToStruct(ident); |
|
|
|
} |
|
|
|
|
|
|
|
@implementation PEPiOSAdapter |
|
|
@ -31,17 +47,14 @@ static NSThread *keyserver_thread = nil; |
|
|
|
|
|
|
|
+ (void)keyserverThread:(id)object |
|
|
|
{ |
|
|
|
|
|
|
|
do_keymanagement(retrieve_next_identity, (void *)queue); |
|
|
|
} |
|
|
|
|
|
|
|
+ (void)startKeyserverLookup |
|
|
|
{ |
|
|
|
if (!queue) { |
|
|
|
queue = [PEPQueue init]; |
|
|
|
|
|
|
|
if (!keyserver_thread) |
|
|
|
keyserver_thread = [[NSThread alloc] initWithTarget:self selector:@selector(keyserverThread:) object:nil]; |
|
|
|
|
|
|
|
keyserver_thread = [[NSThread alloc] initWithTarget:self selector:@selector(keyserverThread:) object:nil]; |
|
|
|
[keyserver_thread start]; |
|
|
|
} |
|
|
|
} |
|
|
@ -49,8 +62,15 @@ static NSThread *keyserver_thread = nil; |
|
|
|
+ (void)stopKeyserverLookup |
|
|
|
{ |
|
|
|
if (queue) { |
|
|
|
[queue queue: ] |
|
|
|
[queue enqueue:[NSDictionary dictionaryWithObject:@"THE_END" forKey:@"THE_END"]]; |
|
|
|
keyserver_thread = nil; |
|
|
|
queue = nil; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
+ (void)registerExamineFunction:(PEP_SESSION)session |
|
|
|
{ |
|
|
|
register_examine_function(session, examine_identity, (void *)queue); |
|
|
|
} |
|
|
|
|
|
|
|
@end |