blob: bd77c43f9d5555e15b23686b8f3d3377fc603f9d [file] [log] [blame]
/*
*
* Copyright (c) 2020 Google LLC.
* 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.
*/
/**
* @file
* This file defines NLWdmClient interface.
* This is WEAVE_CONFIG_DATA_MANAGEMENT_EXPERIMENTAL feature.
*
*/
#import <Foundation/Foundation.h>
#import "NLWeaveErrorCodes.h"
#import "NLResourceIdentifier.h"
#import "NLGenericTraitUpdatableDataSink.h"
typedef void (^WdmClientCompletionBlock)(id owner, id data);
typedef void (^WdmClientFailureBlock)(id owner, NSError * error);
@interface NLWdmClient : NSObject
@property (copy, readonly) NSString * name;
@property (readonly) dispatch_queue_t resultCallbackQueue;
@property (weak) id owner;
/**
* @brief Disable default initializer inherited from NSObject
*/
- (instancetype)init NS_UNAVAILABLE;
/**
* @brief Forcefully release all resources and destroy all references.
*
* There is no way to revive this WDMClient after this call.
*/
- (void)close:(WdmClientCompletionBlock)completionHandler;
// ----- Error Logging -----
- (NSString *)toErrorString:(WEAVE_ERROR)err;
/**
* set Weave node ID in trait catalog in WdmClient
*
* @param nodeId Weave node ID
*
*/
- (void *)setNodeId:(uint64_t)nodeId;
/**
* Create the new data newDataSink
*
* @param nlResourceIdentifier resource id is a globally-unique identifier for a Weave resource
* @param profileId trait profile id
* @param instanceId trait instance id
* @param path trait path
*
*/
- (NLGenericTraitUpdatableDataSink *)newDataSink:(NLResourceIdentifier *)nlResourceIdentifier
profileId:(uint32_t)profileId
instanceId:(uint64_t)instanceId
path:(NSString *)path;
/**
* Begins a flush of all trait data. The result of this operation can be observed through the CompletionHandler and
* failureHandler
*/
- (void)flushUpdate:(WdmClientCompletionBlock)completionHandler failure:(WdmClientFailureBlock)failureHandler;
/**
* Begins a sync of all trait data. The result of this operation can be observed through the CompletionHandler and
* failureHandler
*/
- (void)refreshData:(WdmClientCompletionBlock)completionHandler failure:(WdmClientFailureBlock)failureHandler;
@end