CKKSOutgoingQueueEntry.h
1 /* 2 * Copyright (c) 2016 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24 #include "keychain/securityd/SecDbItem.h" 25 #include <utilities/SecDb.h> 26 #import "CKKSItem.h" 27 #import "CKKSMirrorEntry.h" 28 #import "CKKSSQLDatabaseObject.h" 29 30 #ifndef CKKSOutgoingQueueEntry_h 31 #define CKKSOutgoingQueueEntry_h 32 33 #if OCTAGON 34 #import <CloudKit/CloudKit.h> 35 #import "keychain/ckks/CKKSMemoryKeyCache.h" 36 37 NS_ASSUME_NONNULL_BEGIN 38 39 @class CKKSKeychainView; 40 @class CKKSKeychainViewState; 41 42 @interface CKKSOutgoingQueueEntry : CKKSSQLDatabaseObject 43 44 @property CKKSItem* item; 45 @property NSString* uuid; // property access to underlying CKKSItem 46 47 @property NSString* action; 48 @property NSString* state; 49 @property NSString* accessgroup; 50 @property NSDate* waitUntil; // If non-null, the time at which this entry should be processed 51 52 - (instancetype)initWithCKKSItem:(CKKSItem*)item 53 action:(NSString*)action 54 state:(NSString*)state 55 waitUntil:(NSDate* _Nullable)waitUntil 56 accessGroup:(NSString*)accessgroup; 57 58 + (instancetype _Nullable)withItem:(SecDbItemRef)item 59 action:(NSString*)action 60 zoneID:(CKRecordZoneID*)zoneID 61 keyCache:(CKKSMemoryKeyCache* _Nullable)keyCache 62 error:(NSError* __autoreleasing*)error; 63 + (instancetype _Nullable)fromDatabase:(NSString*)uuid 64 state:(NSString*)state 65 zoneID:(CKRecordZoneID*)zoneID 66 error:(NSError* __autoreleasing*)error; 67 + (instancetype _Nullable)tryFromDatabase:(NSString*)uuid zoneID:(CKRecordZoneID*)zoneID error:(NSError* __autoreleasing*)error; 68 + (instancetype _Nullable)tryFromDatabase:(NSString*)uuid 69 state:(NSString*)state 70 zoneID:(CKRecordZoneID*)zoneID 71 error:(NSError* __autoreleasing*)error; 72 73 + (NSArray<CKKSOutgoingQueueEntry*>*)fetch:(ssize_t)n 74 state:(NSString*)state 75 zoneID:(CKRecordZoneID*)zoneID 76 error:(NSError* __autoreleasing*)error; 77 + (NSArray<CKKSOutgoingQueueEntry*>*)allInState:(NSString*)state 78 zoneID:(CKRecordZoneID*)zoneID 79 error:(NSError* __autoreleasing*)error; 80 81 + (NSArray<CKKSOutgoingQueueEntry*>*)allWithUUID:(NSString*)uuid 82 states:(NSArray<NSString*>*)states 83 zoneID:(CKRecordZoneID*)zoneID 84 error:(NSError * __autoreleasing *)error; 85 86 + (NSDictionary<NSString*, NSNumber*>*)countsByStateInZone:(CKRecordZoneID*)zoneID error:(NSError* __autoreleasing*)error; 87 + (NSInteger)countByState:(CKKSItemState *)state zone:(CKRecordZoneID*)zoneID error: (NSError * __autoreleasing *) error; 88 89 - (BOOL)intransactionMoveToState:(NSString*)state 90 viewState:(CKKSKeychainViewState*)viewState 91 error:(NSError**)error; 92 - (BOOL)intransactionMarkAsError:(NSError*)itemError 93 viewState:(CKKSKeychainViewState*)viewState 94 error:(NSError**)error; 95 96 @end 97 98 NS_ASSUME_NONNULL_END 99 #endif 100 #endif /* CKKSOutgoingQueueEntry_h */