diff options
author | ihuerner <ihuerner@b9707d8c-442e-47db-affb-152dabb2260b> | 2012-12-05 14:23:11 +0000 |
---|---|---|
committer | ihuerner <ihuerner@b9707d8c-442e-47db-affb-152dabb2260b> | 2012-12-05 14:23:11 +0000 |
commit | b55c2f765365f3cbbe926d1f674e064c5ac400c6 (patch) | |
tree | 905576b86bdf087204ffcfeb254c3ecdf8aee151 | |
parent | ba7a3f55a7297850a511581d1db67d8fbe0b8726 (diff) | |
download | persistence-client-library-b55c2f765365f3cbbe926d1f674e064c5ac400c6.tar.gz |
New release 0.3.2, see ChangeLog for changes
18 files changed, 85 insertions, 46 deletions
@@ -1,6 +1,10 @@ +Revision 0.3.2 +- Updated dbus interface (removed error code as paramaters; requestID passed by a message will now returned to "sender") +- Moved headers used by other persistence components into include_protected folder + Revision 0.3.1 - Fixed a problem when accessing prct and key-value database -- reverted chnage of datastructure mad in revision 0.2.4 +- reverted change of datastructure mad in revision 0.2.4 Revision 0.3.0 - Switched to the MPL v2 license diff --git a/include/persistence_client_library_error_def.h b/include/persistence_client_library_error_def.h index f3c4e0d..3cb5616 100644 --- a/include/persistence_client_library_error_def.h +++ b/include/persistence_client_library_error_def.h @@ -19,6 +19,10 @@ * @see */ +#ifdef __cplusplus +extern "C" { +#endif + // common error, for this error errno will be set #define EPERS_COMMON (-1) /// file system is locked @@ -88,5 +92,8 @@ */ void* dbus_main_dispatching_loop(void* dataPtr); +#ifdef __cplusplus +} +#endif #endif /* PERSISTENCE_CLIENT_LIBRARY_ERROR_DEF_H */ diff --git a/src/crc32.h b/include_protected/crc32.h index bf7e9c1..781e7eb 100644 --- a/src/crc32.h +++ b/include_protected/crc32.h @@ -21,10 +21,20 @@ * @see */ +#ifdef __cplusplus +extern "C" { +#endif + + +#define PERSIST_CLIENT_LIBRARY_INTERFACE_VERSION (0x01000000U) #include <string.h> const unsigned int crc32(unsigned int crc, const unsigned char *buf, size_t theSize); +#ifdef __cplusplus +} +#endif + #endif /* CRC32_H */ diff --git a/src/persistence_client_library.h b/include_protected/persistence_client_library.h index 3f19f6e..d34060e 100644 --- a/src/persistence_client_library.h +++ b/include_protected/persistence_client_library.h @@ -20,7 +20,13 @@ * @see */ -#include "persistence_client_library_lc_interface.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define PERSIST_CLIENT_LIBRARY_INTERFACE_VERSION (0x01000000U) + #include "../include/persistence_client_library_error_def.h" #include "crc32.h" @@ -184,7 +190,9 @@ extern char gAppId[MaxAppNameLen]; /// max key value data size extern int gMaxKeyValDataSize; - +#ifdef __cplusplus +} +#endif #endif /* PERSISTENCY_CLIENT_LIBRARY_H */ diff --git a/src/persistence_client_library_data_access.h b/include_protected/persistence_client_library_data_access.h index a7ea907..d0ec7df 100644 --- a/src/persistence_client_library_data_access.h +++ b/include_protected/persistence_client_library_data_access.h @@ -20,6 +20,10 @@ * @see */ +#ifdef __cplusplus +extern "C" { +#endif + #define PERSIST_DATA_ACCESS_INTERFACE_VERSION (0x02100000U) @@ -179,5 +183,8 @@ int persistence_db_cursor_get_data_size(unsigned int handlerDB) ; */ int persistence_db_cursor_destroy(unsigned int handlerDB) ; +#ifdef __cplusplus +} +#endif #endif /* PERSISTENCY_CLIENT_LIBRARY_DATA_ACCESS_H */ diff --git a/src/crc32.c b/src/crc32.c index b951823..4283358 100644 --- a/src/crc32.c +++ b/src/crc32.c @@ -51,7 +51,7 @@ */ -#include "crc32.h" +#include "../include_protected/crc32.h" enum crc32ConstantDefinition diff --git a/src/persistence_client_library.c b/src/persistence_client_library.c index 1226c89..4c1da76 100644 --- a/src/persistence_client_library.c +++ b/src/persistence_client_library.c @@ -18,12 +18,14 @@ */ -#include "persistence_client_library.h" +#include "../include_protected/persistence_client_library.h" + +#include "../include_protected/persistence_client_library_data_access.h" + #include "persistence_client_library_lc_interface.h" #include "persistence_client_library_pas_interface.h" #include "persistence_client_library_dbus_service.h" #include "persistence_client_library_handle.h" -#include "persistence_client_library_data_access.h" #include "persistence_client_library_custom_loader.h" #include "persistence_client_library_access_helper.h" diff --git a/src/persistence_client_library_access_helper.h b/src/persistence_client_library_access_helper.h index 9e03bfb..3da3459 100644 --- a/src/persistence_client_library_access_helper.h +++ b/src/persistence_client_library_access_helper.h @@ -19,7 +19,7 @@ * @see */ -#include "persistence_client_library.h" +#include "../include_protected/persistence_client_library.h" #include <itzam.h> /** diff --git a/src/persistence_client_library_custom_loader.c b/src/persistence_client_library_custom_loader.c index 9cd2ed3..dea47ec 100644 --- a/src/persistence_client_library_custom_loader.c +++ b/src/persistence_client_library_custom_loader.c @@ -17,7 +17,7 @@ */ #include "persistence_client_library_custom_loader.h" -#include "persistence_client_library.h" +#include "../include_protected/persistence_client_library.h" #include <stdio.h> #include <errno.h> diff --git a/src/persistence_client_library_data_access.c b/src/persistence_client_library_data_access.c index 2133e4e..8cb38c5 100644 --- a/src/persistence_client_library_data_access.c +++ b/src/persistence_client_library_data_access.c @@ -17,7 +17,7 @@ * @see */ -#include "persistence_client_library_data_access.h" +#include "../include_protected/persistence_client_library_data_access.h" #include "persistence_client_library_custom_loader.h" #include "persistence_client_library_access_helper.h" #include "persistence_client_library_itzam_errors.h" diff --git a/src/persistence_client_library_dbus_service.c b/src/persistence_client_library_dbus_service.c index 005964a..a598317 100644 --- a/src/persistence_client_library_dbus_service.c +++ b/src/persistence_client_library_dbus_service.c @@ -382,7 +382,7 @@ int mainLoop(DBusObjectPathVTable vtable, DBusObjectPathVTable vtable2, switch (buf[0]) { case CMD_PAS_BLOCK_AND_WRITE_BACK: - process_block_and_write_data_back(); + process_block_and_write_data_back(buf[1]); break; case CMD_LC_PREPARE_SHUTDOWN: process_prepare_shutdown(buf[1]); diff --git a/src/persistence_client_library_file.c b/src/persistence_client_library_file.c index b8db05d..ea0c9c9 100644 --- a/src/persistence_client_library_file.c +++ b/src/persistence_client_library_file.c @@ -18,8 +18,9 @@ */ #include "persistence_client_library_file.h" -#include "persistence_client_library.h" -#include "persistence_client_library_data_access.h" +#include "../include_protected/persistence_client_library.h" +#include "../include_protected/persistence_client_library_data_access.h" + #include "persistence_client_library_pas_interface.h" #include "persistence_client_library_handle.h" #include "persistence_client_library_access_helper.h" diff --git a/src/persistence_client_library_handle.h b/src/persistence_client_library_handle.h index 9f76d4f..4d1a234 100644 --- a/src/persistence_client_library_handle.h +++ b/src/persistence_client_library_handle.h @@ -20,7 +20,7 @@ * @see */ -#include "persistence_client_library.h" +#include "../include_protected/persistence_client_library.h" /// handle structure definition typedef struct _PersistenceHandle_s diff --git a/src/persistence_client_library_key.c b/src/persistence_client_library_key.c index 9039b56..3772ea1 100644 --- a/src/persistence_client_library_key.c +++ b/src/persistence_client_library_key.c @@ -18,9 +18,10 @@ */ #include "persistence_client_library_key.h" -#include "persistence_client_library.h" + +#include "../include_protected/persistence_client_library_data_access.h" + #include "persistence_client_library_handle.h" -#include "persistence_client_library_data_access.h" #include "persistence_client_library_pas_interface.h" #include "persistence_client_library_access_helper.h" #include "persistence_client_library_custom_loader.h" diff --git a/src/persistence_client_library_lc_interface.c b/src/persistence_client_library_lc_interface.c index c7bb513..963132e 100644 --- a/src/persistence_client_library_lc_interface.c +++ b/src/persistence_client_library_lc_interface.c @@ -19,13 +19,14 @@ #include "persistence_client_library_lc_interface.h" -#include "persistence_client_library.h" +#include "../include_protected/persistence_client_library.h" +#include "../include_protected/persistence_client_library_data_access.h" + #include "persistence_client_library_handle.h" #include "persistence_client_library_pas_interface.h" #include "persistence_client_library_dbus_service.h" #include "persistence_client_library_custom_loader.h" #include "persistence_client_library_access_helper.h" -#include "persistence_client_library_data_access.h" #include "persistence_client_library_itzam_errors.h" #include <errno.h> @@ -36,7 +37,7 @@ static int gTimeoutMs = 500; -int check_lc_request(int request) +int check_lc_request(int request, int requestID) { int rval = 0; @@ -45,7 +46,7 @@ int check_lc_request(int request) case NsmShutdownNormal: { // add command and data to queue - unsigned long cmd = ( (request << 8) | CMD_LC_PREPARE_SHUTDOWN); + unsigned long cmd = ( (requestID << 8) | CMD_LC_PREPARE_SHUTDOWN); if(sizeof(int)!=write(gPipefds[1], &cmd, sizeof(unsigned long))) { @@ -72,7 +73,7 @@ int check_lc_request(int request) int msg_lifecycleRequest(DBusConnection *connection, DBusMessage *message) { int request = 0, - requestId = 0, + requestID = 0, msgReturn = 0; DBusMessage *reply; @@ -80,7 +81,7 @@ int msg_lifecycleRequest(DBusConnection *connection, DBusMessage *message) dbus_error_init (&error); if (!dbus_message_get_args (message, &error, DBUS_TYPE_UINT32, &request, - DBUS_TYPE_UINT32, &requestId, + DBUS_TYPE_UINT32, &requestID, DBUS_TYPE_INVALID)) { reply = dbus_message_new_error(message, error.name, error.message); @@ -102,7 +103,7 @@ int msg_lifecycleRequest(DBusConnection *connection, DBusMessage *message) return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } - msgReturn = check_lc_request(request); + msgReturn = check_lc_request(request, requestID); reply = dbus_message_new_method_return(message); @@ -248,7 +249,7 @@ int send_lifecycle_request(const char* method, int requestId, int status) int register_lifecycle() { - int shutdownMode = 88; // TODO send correct mode + int shutdownMode = 1; // TODO send correct mode return send_lifecycle_register("RegisterShutdownClient", shutdownMode); } @@ -257,7 +258,7 @@ int register_lifecycle() int unregister_lifecycle() { - int shutdownMode = 88; // TODO send correct mode + int shutdownMode = 1; // TODO send correct mode return send_lifecycle_register("UnRegisterShutdownClient", shutdownMode); } diff --git a/src/persistence_client_library_pas_interface.c b/src/persistence_client_library_pas_interface.c index 056b9a3..dd0ad7c 100644 --- a/src/persistence_client_library_pas_interface.c +++ b/src/persistence_client_library_pas_interface.c @@ -19,7 +19,8 @@ #include "persistence_client_library_pas_interface.h" #include "persistence_client_library_dbus_service.h" -#include "persistence_client_library.h" + +#include "../include_protected/persistence_client_library.h" #include <errno.h> #include <unistd.h> @@ -60,9 +61,10 @@ int check_pas_request(unsigned int request, unsigned int requestID) { case (PasMsg_Block|PasMsg_WriteBack): { - // add command to queue - static const int cmd = CMD_PAS_BLOCK_AND_WRITE_BACK; - if(sizeof(int)!=write(gPipefds[1], &cmd, sizeof(int))) + // add command and data to queue + unsigned long cmd = ( (requestID << 8) | CMD_PAS_BLOCK_AND_WRITE_BACK); + + if(sizeof(int)!=write(gPipefds[1], &cmd, sizeof(unsigned long))) { printf("write failed w/ errno %d\n", errno); rval = PasErrorStatus_FAIL; @@ -94,16 +96,16 @@ int check_pas_request(unsigned int request, unsigned int requestID) DBusHandlerResult msg_persAdminRequest(DBusConnection *connection, DBusMessage *message) { - int request = 0, requestID = 0, errorCode = 0; + int request = 0, requestID = 0; int errorReturn = 0; DBusMessage *reply; DBusError error; dbus_error_init (&error); + if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32 , &request, DBUS_TYPE_INT32 , &requestID, - DBUS_TYPE_INT32 , &errorCode, DBUS_TYPE_INVALID)) { reply = dbus_message_new_error(message, error.name, error.message); @@ -124,7 +126,6 @@ DBusHandlerResult msg_persAdminRequest(DBusConnection *connection, DBusMessage * return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } - errorReturn = check_pas_request(request, requestID); reply = dbus_message_new_method_return(message); @@ -263,7 +264,7 @@ DBusHandlerResult checkPersAdminMsg(DBusConnection * connection, DBusMessage * m int send_pas_register(const char* method, int notificationFlag) { - int rval = 0, errorCode = 0; + int rval = 0; DBusError error; dbus_error_init (&error); @@ -284,7 +285,6 @@ int send_pas_register(const char* method, int notificationFlag) DBUS_TYPE_STRING, &objName, DBUS_TYPE_INT32, ¬ificationFlag, DBUS_TYPE_UINT32, &gTimeoutMs, - DBUS_TYPE_INT32, &errorCode, DBUS_TYPE_INVALID); if(conn != NULL) @@ -373,7 +373,8 @@ int send_pas_request(const char* method, unsigned int requestID, int status) int register_pers_admin_service(void) { - int notificationFlag = 88; // TODO send correct notification flag + // register for everything + int notificationFlag = PasMsg_Block | PasMsg_WriteBack | PasMsg_Unblock; return send_pas_register("RegisterPersAdminNotification", notificationFlag); } @@ -382,31 +383,29 @@ int register_pers_admin_service(void) int unregister_pers_admin_service(void) { - int notificationFlag = 88; // TODO send correct notification flag + // register for everything + int notificationFlag = PasMsg_Block | PasMsg_WriteBack | PasMsg_Unblock; return send_pas_register("UnRegisterPersAdminNotification", notificationFlag); } -int pers_admin_service_data_sync_complete(void) +int pers_admin_service_data_sync_complete(unsigned int requestID) { - unsigned int requestID = 0; - int status = 0; - - return send_pas_request("PersistenceAdminRequestCompleted", requestID, status); + return send_pas_request("PersistenceAdminRequestCompleted", requestID, 1); } -void process_block_and_write_data_back(void) +void process_block_and_write_data_back(unsigned int requestID) { // lock persistence data access pers_lock_access(); // sync data back to memory device pers_data_sync(); // send complete notification - pers_admin_service_data_sync_complete(); + pers_admin_service_data_sync_complete(requestID); } diff --git a/src/persistence_client_library_pas_interface.h b/src/persistence_client_library_pas_interface.h index 1b087e3..e93c06e 100644 --- a/src/persistence_client_library_pas_interface.h +++ b/src/persistence_client_library_pas_interface.h @@ -60,7 +60,7 @@ int isAccessLocked(void); /// block persistence access and write data back to device -void process_block_and_write_data_back(void); +void process_block_and_write_data_back(unsigned int requestID); /** diff --git a/test/persistence_client_library_test.c b/test/persistence_client_library_test.c index 3315a25..9de9148 100644 --- a/test/persistence_client_library_test.c +++ b/test/persistence_client_library_test.c @@ -30,9 +30,8 @@ #include "../include/persistence_client_library_file.h" #include "../include/persistence_client_library_error_def.h" -// internal header, should normally not included in any application -// only for testing the cursor functionality -#include "../src/persistence_client_library_data_access.h" +// protected header, should be used only be persistence components +#include "../include_protected/persistence_client_library_data_access.h" #define BUF_SIZE 64 |