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:
committed by
Facebook Github Bot
parent
dcf8bc1799
commit
89911acd84
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user