You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/SignalUtilitiesKit/OWSWebSocket.h

56 lines
1.6 KiB
Objective-C

//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
static void *OWSWebSocketStateObservationContext = &OWSWebSocketStateObservationContext;
extern NSString *const kNSNotification_OWSWebSocketStateDidChange;
typedef NS_ENUM(NSUInteger, OWSWebSocketState) {
OWSWebSocketStateClosed,
OWSWebSocketStateConnecting,
OWSWebSocketStateOpen,
};
typedef void (^TSSocketMessageSuccess)(id _Nullable responseObject);
// statusCode is zero by default, if request never made or failed.
typedef void (^TSSocketMessageFailure)(NSInteger statusCode, NSData *_Nullable responseData, NSError *error);
@class TSRequest;
@interface OWSWebSocket : NSObject
@property (nonatomic, readonly) OWSWebSocketState state;
- (instancetype)init NS_DESIGNATED_INITIALIZER;
// If the app is in the foreground, we'll try to open the socket unless it's already
// open or connecting.
//
// If the app is in the background, we'll try to open the socket unless it's already
// open or connecting _and_ keep it open for at least N seconds.
// If the app is in the background and the socket is already open or connecting this
// might prolong how long we keep the socket open.
//
// This method can be called from any thread.
- (void)requestSocketOpen;
// This can be used to force the socket to close and re-open, if it is open.
- (void)cycleSocket;
#pragma mark - Message Sending
@property (atomic, readonly) BOOL canMakeRequests;
- (void)makeRequest:(TSRequest *)request
success:(TSSocketMessageSuccess)success
failure:(TSSocketMessageFailure)failure;
@end
NS_ASSUME_NONNULL_END