/*! * iOS SDK * * Tencent is pleased to support the open source community by making * Hippy available. * * Copyright (C) 2019 THL A29 Limited, a Tencent company. * All rights reserved. * * 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 "HippyBridgeModule.h" #import "HippyInvalidating.h" /** * A simple, asynchronous, persistent, key-value storage system designed as a * backend to the AsyncStorage JS module, which is modeled after LocalStorage. * * Current implementation stores small values in serialized dictionary and * larger values in separate files. Since we use a serial file queue * `RKFileQueue`, reading/writing from multiple threads should be perceived as * being atomic, unless someone bypasses the `HippyAsyncLocalStorage` API. * * Keys and values must always be strings or an error is returned. */ extern NSString *const HippyStorageDirectory; extern NSUInteger HPLOCALSTORAGEIOTYPEREAD; extern NSUInteger HPLOCALSTORAGEIOTYPEWRITE; @interface HippyAsyncLocalStorage : NSObject @property (nonatomic, assign) BOOL clearOnInvalidate; @property (nonatomic, readonly, getter=isValid) BOOL valid; /** * Clear the HippyAsyncLocalStorage data from native code */ + (void)clearAllData; /** * Get storage directory for HippyAsyncLocalStorage * overwrite this function to return your customized directory * *@discussion default storage directory is #{your app sand box}/document/HippyAsyncLocalStorage_V1/#{module name} * @return storage directory for HippyAsyncLocalStorage */ - (NSString *)HippyGetStorageDirectory; /** * Get maxium data read limit * * @discussion if data size exceed range, *handleDataSizeExceed* method will be invoked.Default is NSUIntegerMax * @return max read data size */ - (NSUInteger)maxReadDataSize; /** * Get maxium data write limit * * @discussion if data size exceed range, *handleDataSizeExceed* method will be invoked.Default is NSUIntegerMax * @return max write data size */ - (NSUInteger)maxWriteDataSize; /** * handle data size exceed range event * * @discussion default return YES and does nothing * @param IOType HPLOCALSTORAGEIOTYPEREAD or HPLOCALSTORAGEIOTYPEWRITE action * @param moduleName module which triggered this operation * @param length The amount of data that corresponds to this operation * @return Continue read or write if return YES */ - (BOOL)handleDataSizeExceedForIOType:(NSUInteger)IOType moduleName:(NSString *)moduleName key:(NSString *)key dataLength:(NSUInteger)length; @end