1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- ////////////////////////////////////////////////////////////////////////////
- //
- // 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)
|