summaryrefslogtreecommitdiff
path: root/inc/private/pers_low_level_db_access_if.h
blob: c09838ee4d552fa3917bfbe976ad3d1711ff0297 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#ifndef PERSISTENCE_LOW_LEVEL_DB_ACCESS_H

#define PERSISTENCE_LOW_LEVEL_DB_ACCESS_H



/**********************************************************************************************************************

*

* Copyright (C) 2012 Continental Automotive Systems, Inc.

*

* Author: Ionut.Ieremie@continental-corporation.com

*

* Interface TODO

*

* The file defines the interfaces TODO

*

* This Source Code Form is subject to the terms of the Mozilla Public

* License, v. 2.0. If a copy of the MPL was not distributed with this

* file, You can obtain one at http://mozilla.org/MPL/2.0/.

*

* Date       Author    Version  Reason

* 2013.02.05 uidl9757  1.0.0.0  CSP_WZ#2220:  Adaptation for open source

* 2013.01.03 uidl9757  1.0.0.0  CSP_WZ#2060:  Remove "cursor" interface

* 2012.12.17 uidl9757  1.0.0.0  CSP_WZ#2060:  Changes to allow optimized access to DB

* 2012.12.10 uidl9757  1.0.0.0  CSP_WZ#2060:  Initial version of the interface

*

**********************************************************************************************************************/



#ifdef __cplusplus

extern "C"

{

#endif  /* #ifdef __cplusplus */



#include "persComTypes.h"



#define PERSIST_LOW_LEVEL_DB_ACCESS_INTERFACE_VERSION  (0x03000000U)



/* The supported purposes of low level DBs 

 * Needed to allow different setups of DBs according to their purposes

 */

typedef enum pers_lldb_purpose_e_

{

    PersLldbPurpose_RCT = 0,    /* Resource-Configuration-Table */

    PersLldbPurpose_DB,         /* Local/Shared DB */

    /* add new entries here */

    PersLldbPurpose_LastEntry

}pers_lldb_purpose_e ;





/**

 * @brief write a key-value pair into database

 * @note : DB type is identified from dbPathname (based on extension)

 *

 * @param dbPathname                    [in] absolute path to DB

 * @param ePurpose                      [in] see pers_lldb_purpose_e

 * @param bForceCreationIfNotPresent    [in] if true, the DB is created if it does not exist

 *

 * @return >=0 for success, negative value otherway (see pers_error_codes.h)

 */

sint_t pers_lldb_open(str_t const * dbPathname, pers_lldb_purpose_e ePurpose, bool_t bForceCreationIfNotPresent) ;





/**

 * @brief write a key-value pair into database

 * @note : DB type is identified from dbPathname (based on extension)

 *

 * @param handlerDB     [in] handler obtained with pers_lldb_open

 *

 * @return 0 for success, negative value otherway (see pers_error_codes.h)

 */

sint_t pers_lldb_close(sint_t handlerDB) ;



/**

 * @brief write a key-value pair into database

 * @note : DB type is identified from dbPathname (based on extension)

 * @note : DB is created if it does not exist

 *

 * @param handlerDB     [in] handler obtained with pers_lldb_open

 * @param ePurpose      [in] see pers_lldb_purpose_e

 * @param key           [in] key's name

 * @param data          [in] buffer with key's data

 * @param dataSize      [in] size of key's data

 *

 * @return 0 for success, negative value otherway (see pers_error_codes.h)

 */

sint_t pers_lldb_write_key(sint_t handlerDB, pers_lldb_purpose_e ePurpose, str_t const * key, str_t const * data, sint_t dataSize) ;





/**

 * @brief read a key's value from database

 * @note : DB type is identified from dbPathname (based on extension)

 *

 * @param handlerDB         [in] handler obtained with pers_lldb_open

 * @param ePurpose          [in] see pers_lldb_purpose_e

 * @param key               [in] key's name

 * @param dataBuffer_out    [out]buffer where to return the read data

 * @param bufSize           [in] size of dataBuffer_out

 *

 * @return read size, or negative value in case of error (see pers_error_codes.h)

 */

sint_t pers_lldb_read_key(sint_t handlerDB, pers_lldb_purpose_e ePurpose, str_t const * key, pstr_t dataBuffer_out, sint_t bufSize) ;



/**

 * @brief read a key's value from database

 * @note : DB type is identified from dbPathname (based on extension)

 *

 * @param handlerDB         [in] handler obtained with pers_lldb_open

 * @param ePurpose          [in] see pers_lldb_purpose_e

 * @param key               [in] key's name

 * @return key's size, or negative value in case of error (see pers_error_codes.h)

 */

sint_t pers_lldb_get_key_size(sint_t handlerDB, pers_lldb_purpose_e ePurpose, str_t const * key) ;



/**

 * @brief delete key from database

 * @note : DB type is identified from dbPathname (based on extension)

 *

 * @param handlerDB         [in] handler obtained with pers_lldb_open

 * @param ePurpose          [in] see pers_lldb_purpose_e

 * @param key               [in] key's name

 *

 * @return 0 for success, negative value otherway (see pers_error_codes.h)

 */

sint_t pers_lldb_delete_key(sint_t handlerDB, pers_lldb_purpose_e ePurpose, str_t const * key) ;





/**

 * @brief Find the buffer's size needed to accomodate the listing of keys' names in database

 * @note : DB type is identified from dbPathname (based on extension)

 *

 * @param handlerDB         [in] handler obtained with pers_lldb_open

 * @param ePurpose          [in] see pers_lldb_purpose_e

 *

 * @return needed size, or negative value in case of error (see pers_error_codes.h)

 */

sint_t pers_lldb_get_size_keys_list(sint_t handlerDB, pers_lldb_purpose_e ePurpose) ;





/**

 * @brief List the keys' names in database

 * @note : DB type is identified from dbPathname (based on extension)

 * @note : keys are separated by '\0'

 *

 * @param handlerDB         [in] handler obtained with pers_lldb_open

 * @param ePurpose          [in] see pers_lldb_purpose_e

 * @param listingBuffer_out [out]buffer where to return the listing

 * @param bufSize           [in] size of listingBuffer_out

 *

 * @return listing size, or negative value in case of error (see pers_error_codes.h)

 */

 sint_t pers_lldb_get_keys_list(sint_t handlerDB, pers_lldb_purpose_e ePurpose, pstr_t listingBuffer_out, sint_t bufSize) ;







#ifdef __cplusplus

}

#endif /* extern "C" { */

/** \} */ /* End of API */

#endif /* PERSISTENCE_LOW_LEVEL_DB_ACCESS_H */