//  Copyright 2009-2010 Aurora Feint, Inc.
// 
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//  
//  	http://www.apache.org/licenses/LICENSE-2.0
//  	
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.

#pragma once

#import <Foundation/Foundation.h>
#import "OFService.h"
#import "OFCRVStompClient.h"

@class OFCRVStompClient;
@class OFPaginatedSeries;

@interface OFPresenceService : OFService <OFCRVStompClientDelegate> 
{
@private
	NSString* presenceQueue;
	NSThread* presenceThread;
	BOOL pipeHttpOverPresence;
	BOOL httpPipeAvailable;
	
	NSInteger retriesAttempted;
	BOOL isPresenceActive;
	
	NSMutableDictionary* httpRequests;
	OFCRVStompClient* stompClient;
}

OPENFEINT_DECLARE_AS_SERVICE(OFPresenceService);

+ (BOOL)isHttpPipeEnabled;

- (void)connect;
- (void)disconnect;
- (BOOL)isActive;

@property (retain) NSString* presenceQueue;
@property (assign) BOOL pipeHttpOverPresence;
@property (assign) BOOL httpPipeAvailable;

// HTTP pipelining over OFSocket, experimental, enabled via bootstrap setting...
- (void)wrapUrlConnection:(id)theUrlConnection andRequest:(id)theRequest andDelegate:(id)theDelegate;
- (void)sendHttpRequest:(NSString *)theRequest;

@end
