#import #import "NetworkEndPoint.h" #import "Logging.h" #import "Terminable.h" #import "Queue.h" #import "PacketHandler.h" #import "HttpSocket.h" /** * * HttpManager handles asynchronously performing and responding to http requests/responses. * */ @interface HttpManager : NSObject { @private HttpSocket* httpChannel; @private Queue* eventualResponseQueue; @private bool isStarted; @private TOCCancelTokenSource* lifetime; } +(HttpManager*) httpManagerFor:(HttpSocket*)httpSocket untilCancelled:(TOCCancelToken*)untilCancelledToken; +(HttpManager*) startWithEndPoint:(id)endPoint untilCancelled:(TOCCancelToken*)untilCancelledToken; -(TOCFuture*) asyncResponseForRequest:(HttpRequest*)request unlessCancelled:(TOCCancelToken*)unlessCancelledToken; -(TOCFuture*) asyncOkResponseForRequest:(HttpRequest*)request unlessCancelled:(TOCCancelToken*)unlessCancelledToken; -(void) startWithRejectingRequestHandlerAndErrorHandler:(ErrorHandlerBlock)errorHandler untilCancelled:(TOCCancelToken*)untilCancelledToken; -(void) startWithRequestHandler:(HttpResponse*(^)(HttpRequest* remoteRequest))requestHandler andErrorHandler:(ErrorHandlerBlock)errorHandler untilCancelled:(TOCCancelToken*)untilCancelledToken; -(void) terminateWhenDoneCurrentWork; +(TOCFuture*) asyncOkResponseFromMasterServer:(HttpRequest*)request unlessCancelled:(TOCCancelToken*)unlessCancelledToken andErrorHandler:(ErrorHandlerBlock)errorHandler; @end