Made a DataStorage for live editing in flipper

Summary: Theadsafe Data Storage for new insets in CKInsetComponent

Reviewed By: kevin0571

Differential Revision: D16338091

fbshipit-source-id: 3b77652a4d08cfebce115a606af3fc3440a1aca0
This commit is contained in:
Roman Gorbunov
2019-07-25 03:59:05 -07:00
committed by Facebook Github Bot
parent dcf8bc1799
commit 89911acd84
2 changed files with 42 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*/
#import <ComponentKit/CKTreeNodeTypes.h>
/** DataStorage uses to map global IDs of nodes to data which we want to store
to prodice live editing*/
@interface FKDataStorageForLiveEditing : NSObject
- (id)dataForTreeNodeIdentifier:(CKTreeNodeIdentifier)treeNodeIdentifier;
- (void)setData:(id)value forTreeNodeIdentifier:(CKTreeNodeIdentifier)treeNodeIdentifier;
@end

View File

@@ -0,0 +1,26 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*/
#import "FKDataStorageForLiveEditing.h"
#import <ComponentKit/CKComponentScopeTypes.h>
#import <mutex>
@implementation FKDataStorageForLiveEditing {
std::unordered_map<CKTreeNodeIdentifier, id> _data;
std::mutex _mutex;
}
- (void)setData:(id)value forTreeNodeIdentifier:(CKTreeNodeIdentifier)treeNodeIdentifier {
std::lock_guard<std::mutex> lock(_mutex);
_data[treeNodeIdentifier] = value;
}
- (id)dataForTreeNodeIdentifier:(CKTreeNodeIdentifier)treeNodeIdentifier {
std::lock_guard<std::mutex> lock(_mutex);
return (_data.count(treeNodeIdentifier) ? _data[treeNodeIdentifier] : nil);
}
@end