Newer
Older
bremer-ios-app / Pods / Realm / include / RLMAsyncTask_Private.h
////////////////////////////////////////////////////////////////////////////
//
// Copyright 2023 Realm 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.
//
////////////////////////////////////////////////////////////////////////////

#import <Realm/RLMAsyncTask.h>

#import "RLMRealm_Private.h"

RLM_HEADER_AUDIT_BEGIN(nullability)

@interface RLMAsyncOpenTask ()
@property (nonatomic, nullable) RLMRealm *localRealm;

- (instancetype)initWithConfiguration:(RLMRealmConfiguration *)configuration
                           confinedTo:(RLMScheduler *)confinement
                             download:(bool)waitForDownloadCompletion
                           completion:(RLMAsyncOpenRealmCallback)completion
__attribute__((objc_direct));

- (instancetype)initWithConfiguration:(RLMRealmConfiguration *)configuration
                           confinedTo:(RLMScheduler *)confinement
                             download:(bool)waitForDownloadCompletion;

- (void)waitWithCompletion:(void (^)(NSError *_Nullable))completion;
- (void)waitForOpen:(RLMAsyncOpenRealmCallback)completion __attribute__((objc_direct));
@end

// A cancellable task for waiting for downloads on an already-open Realm.
RLM_SWIFT_SENDABLE
@interface RLMAsyncDownloadTask : NSObject
- (instancetype)initWithRealm:(RLMRealm *)realm;
- (void)cancel;
- (void)waitWithCompletion:(void (^)(NSError *_Nullable))completion;
@end

// A cancellable task for beginning an async write
RLM_SWIFT_SENDABLE
@interface RLMAsyncWriteTask : NSObject
// Must only be called from within the Actor
- (instancetype)initWithRealm:(RLMRealm *)realm;
- (void)setTransactionId:(RLMAsyncTransactionId)transactionID;
- (void)complete:(bool)cancel;

// Can be called from any thread
- (void)wait:(void (^)(void))completion;
@end

typedef void (^RLMAsyncRefreshCompletion)(bool);
// A cancellable task for refreshing a Realm
RLM_SWIFT_SENDABLE
@interface RLMAsyncRefreshTask : NSObject
- (void)complete:(bool)didRefresh;
- (void)wait:(RLMAsyncRefreshCompletion)completion;
+ (RLMAsyncRefreshTask *)completedRefresh;
@end

RLM_HEADER_AUDIT_END(nullability)