Line data Source code
1 : /*
2 : * Copyright (c) 2024 Project CHIP Authors
3 : *
4 : * Licensed under the Apache License, Version 2.0 (the "License");
5 : * you may not use this file except in compliance with the License.
6 : * You may obtain a copy of the License at
7 : *
8 : * http://www.apache.org/licenses/LICENSE-2.0
9 : *
10 : * Unless required by applicable law or agreed to in writing, software
11 : * distributed under the License is distributed on an "AS IS" BASIS,
12 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 : * See the License for the specific language governing permissions and
14 : * limitations under the License.
15 : */
16 : #pragma once
17 :
18 : #include <lib/core/CHIPPersistentStorageDelegate.h>
19 : #include <lib/support/CodeUtils.h>
20 : #include <lib/support/DefaultStorageKeyAllocator.h>
21 :
22 : namespace chip {
23 : namespace app {
24 :
25 : /**
26 : * Wraps around a PersistentStorageDelegate to perform ByteSpan I/O over StorageKey
27 : */
28 : class StorageDelegateWrapper
29 : {
30 : public:
31 : StorageDelegateWrapper() = default;
32 :
33 : // Passed-in storage must outlive this object.
34 8 : CHIP_ERROR Init(PersistentStorageDelegate * storage)
35 : {
36 8 : VerifyOrReturnError(storage != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
37 8 : mStorage = storage;
38 8 : return CHIP_NO_ERROR;
39 : }
40 :
41 : CHIP_ERROR WriteValue(const StorageKeyName & aKey, const ByteSpan & aValue);
42 : CHIP_ERROR ReadValue(const StorageKeyName & aKey, MutableByteSpan & aValue);
43 :
44 : private:
45 : PersistentStorageDelegate * mStorage;
46 : };
47 :
48 : } // namespace app
49 : } // namespace chip
|