summaryrefslogtreecommitdiff
path: root/include_protected/persistence_client_library_db_access.h
diff options
context:
space:
mode:
Diffstat (limited to 'include_protected/persistence_client_library_db_access.h')
-rw-r--r--include_protected/persistence_client_library_db_access.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/include_protected/persistence_client_library_db_access.h b/include_protected/persistence_client_library_db_access.h
new file mode 100644
index 0000000..e9cf3a7
--- /dev/null
+++ b/include_protected/persistence_client_library_db_access.h
@@ -0,0 +1,191 @@
+#ifndef PERSISTENCE_CLIENT_LIBRARY_DB_ACCESS_H
+#define PERSISTENCE_CLIENT_LIBRARY_DB_ACCESS_H
+
+/******************************************************************************
+ * Project Persistency
+ * (c) copyright 2012
+ * Company XS Embedded GmbH
+ *****************************************************************************/
+/******************************************************************************
+ * 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/.
+******************************************************************************/
+ /**
+ * @file persistence_client_library_data_access.h
+ * @ingroup Persistence client library
+ * @author Ingo Huerner
+ * @brief Header of the persistence client library database access.
+ * Library provides an API to access persistent data
+ * @see
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PERSIST_DATA_ACCESS_INTERFACE_VERSION (0x03000000U)
+
+
+#include "persistence_client_library.h"
+
+
+
+/**
+ * @brief write data to a key
+ *
+ * @param dbPath the path to the database where the key is in
+ * @param key the database key
+ * @param info persistence information
+ * @param buffer the buffer holding the data
+ * @param buffer_size the size of the buffer
+ *
+ * @return the number of bytes written or a negative value if an error occured with the following error codes:
+ * EPERS_SETDTAFAILED EPERS_NOPRCTABLE EPERS_NOKEYDATA EPERS_NOKEY
+ */
+int pers_db_write_key(char* dbPath, char* key, PersistenceInfo_s* info, unsigned char* buffer, unsigned int buffer_size);
+
+
+
+/**
+ * @brief get data of a key
+ *
+ * @param dbPath the path to the database where the key is in
+ * @param key the database key
+ * @param info persistence information
+ * @param buffer the buffer holding the data
+ * @param buffer_size the size of the buffer
+ *
+ * @return the number of bytes read or a negative value if an error occured with the following error codes:
+ * EPERS_NOPRCTABLE EPERS_NOKEYDATA EPERS_NOKEY
+ */
+int pers_db_read_key(char* dbPath, char* key, PersistenceInfo_s* info, unsigned char* buffer, unsigned int buffer_size);
+
+
+
+/**
+ * @brief get the size of the data from a given key
+ *
+ * @param dbPath the path to the database where the key is in
+ * @param key the database key
+ * @param info persistence information
+ *
+ * @return size of data in bytes read from the key or on error a negative value with the following error codes:
+ * EPERS_NOPRCTABLE or EPERS_NOKEY
+ */
+int pers_db_get_key_size(char* dbPath, char* key, PersistenceInfo_s* info);
+
+
+
+/**
+ * @brief delete data
+ *
+ * @param dbPath the path to the database where the key is in
+ * @param key the database key to register on
+ * @param info persistence information
+ *
+ * @return 0 if deletion was successfull;
+ * or an error code: EPERS_DB_KEY_SIZE, EPERS_NOPRCTABLE, EPERS_DB_ERROR_INTERNAL or EPERS_NOPLUGINFUNCT
+ */
+int pers_db_delete_key(char* dbPath, char* dbKey, PersistenceInfo_s* info);
+
+
+
+/**
+ * @brief close the database for the given storage type
+ *
+ * @param info persistence information
+ */
+void pers_db_close(PersistenceInfo_s* info);
+
+
+
+/**
+ * @brief close all databases
+ */
+void pers_db_close_all();
+
+
+
+/**
+ * @brief register for change notifications of a key
+ *
+ * @param dbPath the path to the database where the key is in
+ * @param key the database key to register on
+ *
+ * @return 0 of registration was successfull; -1 if registration failes
+ */
+int persistence_reg_notify_on_change(char* dbPath, char* key);
+
+
+
+//---------------------------------------------------------------------------------------------
+// C U R S O R F U N C T I O N S
+//---------------------------------------------------------------------------------------------
+
+/**
+ * @brief create a cursor to a DB ; if success, the cursor points to (-1)
+ * to access the first entry in DB, call persistence_db_cursor_next
+ *
+ * @param dbPath[in] absolute path to the database
+ *
+ * @return handler to the DB (to be used in successive calls) or error code (< 0)
+ */
+int pers_db_cursor_create(char* dbPath);
+
+/**
+ * @brief move cursor to the next position
+ *
+ * @param handlerDB[in] handler to DB (obtained with persistence_db_cursor_create())
+ *
+ * @return 0 for success, negative value in case of error (check against EPERS_LAST_ENTRY_IN_DB)
+ */
+int pers_db_cursor_next(unsigned int handlerDB);
+
+/**
+ * @brief get the name of the key pointed by the cursor associated with the database
+ *
+ * @param handlerDB[in] handler to DB (obtained with persistence_db_cursor_create())
+ * @param bufKeyName_out[out] buffer where to pass the name of the key
+ * @param bufSize[out] size of bufKeyName_out
+ *
+ * @return read size (if >= 0), error other way
+ */
+int pers_db_cursor_get_key(unsigned int handlerDB, char * bufKeyName_out, int bufSize) ;
+
+/**
+ * @brief get the data of the key pointed by the cursor associated with the database
+ *
+ * @param handlerDB[in] handler to DB (obtained with persistence_db_cursor_create())
+ * @param bufKeyData_out[out] buffer where to pass the data of the key
+ * @param bufSize[out] size of bufKeyData_out
+ *
+ * @return read size (if >= 0), error other way
+ */
+int pers_db_cursor_get_key_data(unsigned int handlerDB, char * bufData_out, int bufSize) ;
+
+/**
+ * @brief get the data size of the key pointed by the cursor associated with the database
+ *
+ * @param handlerDB[in] handler to DB (obtained with persistence_db_cursor_create())
+ *
+ * @return positive value for data size, negative value for error
+ */
+int pers_db_cursor_get_data_size(unsigned int handlerDB) ;
+
+
+/**
+ * @brief remove the cursor
+ *
+ * @param handlerDB[in] handler to DB (obtained with persistence_db_cursor_create())
+ *
+ * @return 0 for success, negative value in case of error
+ */
+int pers_db_cursor_destroy(unsigned int handlerDB) ;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* PERSISTENCY_CLIENT_LIBRARY_DB_ACCESS_H */