Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AFNetworking + cancelAllRequests

Tags:

afnetworking

I really have a problem when I want to stop all current requests in a sync engine built with AFNetworking.

I have 5 different URL to query. Each query is launch if the previous was correctly executed.

This works very well.

I want to stop the sync process at anytime. So my code to do that is:

- (void)cancelAllRequests
{
  NSLog(@"CancelAllRequests");

  [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull"];
  [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull_items"];
  [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull_image"];
  [[HTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"POST" path:@"ws/webapp/services/push_item"];  
  [[[HTTPClient sharedClient] operationQueue] cancelAllOperations];
}

But this code seems to do nothing. When I want to cancel, I saw all the batch operations working in my logs after the method is called.

What did I miss ? If I cancel the requests, this don't stop all active operations build with this requests ?

like image 352
alex.bour Avatar asked Mar 06 '12 12:03

alex.bour


1 Answers

You should only need to do [[[HTTPClient sharedClient] operationQueue] cancelAllOperations]. Operations when they're cancelled attempt to finish execution as possible, but there's no guarantee about exactly how that happens. In the case of batch operations, it may already be finishing by the time it gets cancelled because all of its dependency request operations have finished (by being cancelled).

like image 80
mattt Avatar answered Nov 09 '22 21:11

mattt