1/*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16package ohos.hdi.display.buffer.v1_1;
17
18interface IMetadata {
19    /**
20     * @brief Init Buffer after IPC
21     *
22     * @param handle The input buffer handle
23     *
24     * @return Returns <b>0</b> if the operation is successful; returns an error code defined
25     * in {@link DispErrCode} otherwise.
26     * @since 4.1
27     * @version 1.1
28     */
29    RegisterBuffer([in] NativeBuffer handle);
30
31    /**
32     * @brief set metadata
33     *
34     * @param handle The input buffer handle
35     * @param key metadata key
36     * @param value metadata value
37     *
38     * @return Returns <b>0</b> if the operation is successful; returns an error code defined
39     * in {@link DispErrCode} otherwise.
40     * @since 4.1
41     * @version 1.1
42     */
43    SetMetadata([in] NativeBuffer handle, [in] unsigned int key, [in] unsigned char[] value);
44
45    /**
46     * @brief get metadata
47     *
48     * @param handle The input buffer handle
49     * @param key metadata key
50     * @param value metadata value
51     *
52     * @return Returns <b>0</b> if the operation is successful; returns an error code defined
53     * in {@link DispErrCode} otherwise.
54     * @since 4.1
55     * @version 1.1
56     */
57    GetMetadata([in] NativeBuffer handle, [in] unsigned int key, [out] unsigned char[] value);
58
59    /**
60     * @brief list metadata keys
61     *
62     * @param handle The input buffer handle
63     * @param keys metadata keys
64     *
65     * @return Returns <b>0</b> if the operation is successful; returns an error code defined
66     * in {@link DispErrCode} otherwise.
67     * @since 4.1
68     * @version 1.1
69     */
70    ListMetadataKeys([in] NativeBuffer handle, [out] unsigned int[] keys);
71
72    /**
73     * @brief erase metadata by key
74     *
75     * @param handle The input buffer handle
76     * @param key the metadata key to be erased
77     *
78     * @return Returns <b>0</b> if the operation is successful; returns an error code defined
79     * in {@link DispErrCode} otherwise.
80     * @since 4.1
81     * @version 1.1
82     */
83    EraseMetadataKey([in] NativeBuffer handle, [in] unsigned int key);
84}
85