/ keychain / ckks / CKKSOutgoingQueueEntry.h
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 */