OctagonStateMachineObservers.h [plain text]
#if OCTAGON
#import <Foundation/Foundation.h>
#import "keychain/ckks/CKKSResultOperation.h"
#import "keychain/ckks/CKKSAnalytics.h"
#import "keychain/ot/OctagonStateMachineHelpers.h"
NS_ASSUME_NONNULL_BEGIN
@interface OctagonStateTransitionPathStep : NSObject
@property BOOL successState;
@property (readonly) NSDictionary<OctagonState*, OctagonStateTransitionPathStep*>* followStates;
- (instancetype)initAsSuccess;
- (instancetype)initWithPath:(NSDictionary<OctagonState*, OctagonStateTransitionPathStep*>*)followStates;
- (BOOL)successState;
+ (OctagonStateTransitionPathStep*)success;
+ (OctagonStateTransitionPathStep*)pathFromDictionary:(NSDictionary<OctagonState*, id>*)pathDict;
@end
@interface OctagonStateTransitionPath : NSObject
@property OctagonState* initialState;
@property OctagonStateTransitionPathStep* pathStep;
- (instancetype)initWithState:(OctagonState*)initialState
pathStep:(OctagonStateTransitionPathStep*)pathSteps;
- (OctagonStateTransitionPathStep*)asPathStep;
+ (OctagonStateTransitionPath* _Nullable)pathFromDictionary:(NSDictionary<OctagonState*, id>*)pathDict;
@end
@protocol OctagonStateTransitionWatcherProtocol
@property (readonly) CKKSResultOperation* result;
- (void)onqueueHandleTransition:(CKKSResultOperation<OctagonStateTransitionOperationProtocol>*)attempt;
@end
@interface OctagonStateTransitionWatcher : NSObject <OctagonStateTransitionWatcherProtocol>
@property (readonly) NSString* name;
@property (readonly) CKKSResultOperation* result;
@property (readonly) OctagonStateTransitionPath* intendedPath;
- (instancetype)initNamed:(NSString*)name
serialQueue:(dispatch_queue_t)queue
path:(OctagonStateTransitionPath*)path
initialRequest:(OctagonStateTransitionRequest* _Nullable)initialRequest;
- (instancetype)timeout:(dispatch_time_t)timeout;
@end
@interface OctagonStateMultiStateArrivalWatcher : NSObject <OctagonStateTransitionWatcherProtocol>
@property (readonly) NSString* name;
@property (readonly) CKKSResultOperation* result;
@property (readonly) NSSet<OctagonState*>* states;
- (instancetype)initNamed:(NSString*)name
serialQueue:(dispatch_queue_t)queue
states:(NSSet<OctagonState*>*)states;
- (void)onqueueEnterState:(OctagonState*)state;
- (instancetype)timeout:(dispatch_time_t)timeout;
@end
NS_ASSUME_NONNULL_END
#endif // OCTAGON