Now stop discovery when pairing

This commit is contained in:
Diego Waxemberg
2015-01-02 23:57:11 -05:00
parent 5aeedb894a
commit f0b145c01a
3 changed files with 12 additions and 3 deletions

View File

@@ -21,6 +21,7 @@
- (id) initWithHosts:(NSArray*)hosts andCallback:(id<DiscoveryCallback>) callback;
- (void) startDiscovery;
- (void) stopDiscovery;
- (void) stopDiscoveryBlocking;
- (BOOL) addHostToDiscovery:(Host*)host;
- (void) removeHostFromDiscovery:(Host*)host;
- (void) discoverHost:(NSString*)hostAddress withCallback:(void (^)(Host*))callback;

View File

@@ -69,8 +69,14 @@
[_mdnsMan stopSearching];
[_opQueue cancelAllOperations];
}
- (void) stopDiscoveryBlocking {
NSLog(@"Stopping discovery and waiting for workers to stop");
shouldDiscover = NO;
[_mdnsMan stopSearching];
[_opQueue cancelAllOperations];
[_opQueue waitUntilAllOperationsAreFinished];
NSLog(@"All discovery workers stopped");
}
- (BOOL) addHostToDiscovery:(Host *)host {

View File

@@ -51,6 +51,7 @@ static StreamConfiguration* streamConfig;
[_pairAlert dismissWithClickedButtonIndex:0 animated:NO];
_pairAlert = [[UIAlertView alloc] initWithTitle:@"Pairing Failed" message:message delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[_pairAlert show];
[_discMan startDiscovery];
});
}
@@ -59,6 +60,7 @@ static StreamConfiguration* streamConfig;
[_pairAlert dismissWithClickedButtonIndex:0 animated:NO];
_pairAlert = [[UIAlertView alloc] initWithTitle:@"Pairing Succesful" message:@"Successfully paired to host" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[_pairAlert show];
[_discMan startDiscovery];
});
}
@@ -107,6 +109,8 @@ static StreamConfiguration* streamConfig;
[self alreadyPaired];
} else {
NSLog(@"Trying to pair");
// Polling the server while pairing causes the server to screw up
[_discMan stopDiscoveryBlocking];
PairManager* pMan = [[PairManager alloc] initWithManager:hMan andCert:_cert callback:self];
[_opQueue addOperation:pMan];
}
@@ -322,9 +326,7 @@ static StreamConfiguration* streamConfig;
[super viewDidDisappear:animated];
// when discovery stops, we must create a new instance because you cannot restart an NSOperation when it is finished
[_discMan stopDiscovery];
@synchronized(hostList) {
_discMan = [[DiscoveryManager alloc] initWithHosts:[hostList allObjects] andCallback:self];
}
// In case the host objects were updated in the background
[[[DataManager alloc] init] saveHosts];
}