diff options
-rw-r--r-- | src/persistence_client_library.c | 1 | ||||
-rw-r--r-- | src/persistence_client_library_db_access.c | 19 | ||||
-rw-r--r-- | src/persistence_client_library_dbus_cmd.c | 54 | ||||
-rw-r--r-- | src/persistence_client_library_dbus_service.c | 30 | ||||
-rw-r--r-- | src/persistence_client_library_dbus_service.h | 26 | ||||
-rw-r--r-- | src/persistence_client_library_lc_interface.c | 6 | ||||
-rw-r--r-- | src/persistence_client_library_pas_interface.c | 7 |
7 files changed, 99 insertions, 44 deletions
diff --git a/src/persistence_client_library.c b/src/persistence_client_library.c index 0336a77..061433c 100644 --- a/src/persistence_client_library.c +++ b/src/persistence_client_library.c @@ -26,6 +26,7 @@ #include "persistence_client_library.h" #include "persistence_client_library_backup_filelist.h" #include "persistence_client_library_db_access.h" +#include "persistence_client_library_dbus_cmd.h" #if USE_FILECACHE #include <persistence_file_cache.h> diff --git a/src/persistence_client_library_db_access.c b/src/persistence_client_library_db_access.c index e8a5d63..3406849 100644 --- a/src/persistence_client_library_db_access.c +++ b/src/persistence_client_library_db_access.c @@ -716,18 +716,17 @@ int persistence_notify_on_change(const char* key, unsigned int ldbid, unsigned i { int rval = 0; - tMainLoopData data; - - data.message.cmd = (uint32_t)CMD_REG_NOTIFY_SIGNAL; - data.message.params[0] = ldbid; - data.message.params[1] = user_no; - data.message.params[2] = seat_no; - data.message.params[3] = regPolicy; - - snprintf(data.message.string, DbKeyMaxLen, "%s", key); - if(regPolicy < Notify_lastEntry) { + tMainLoopData data; + + data.message.cmd = (uint32_t)CMD_REG_NOTIFY_SIGNAL; + data.message.params[0] = ldbid; + data.message.params[1] = user_no; + data.message.params[2] = seat_no; + data.message.params[3] = regPolicy; + + snprintf(data.message.string, DbKeyMaxLen, "%s", key); if(regPolicy == Notify_register) { diff --git a/src/persistence_client_library_dbus_cmd.c b/src/persistence_client_library_dbus_cmd.c index a380685..4698909 100644 --- a/src/persistence_client_library_dbus_cmd.c +++ b/src/persistence_client_library_dbus_cmd.c @@ -27,6 +27,18 @@ #include "persistence_client_library_data_organization.h" #include "persistence_client_library_db_access.h" +#if USE_FILECACHE + #include <persistence_file_cache.h> + + + /** + * write back from cache to non volatile memory device + * ATTENTION: + * THIS FUNCTION IS NOT INTENDED TO BE USED BY A NORMAL APPLICATION. + * ONLY SPECIAL APPLICATION ARE ALLOWED TO USING USE THIS FUNCTION + **/ + extern int pfcWriteBackAndSync(int handle); +#endif // function prototype void msg_pending_func(DBusPendingCall *call, void *data); @@ -116,9 +128,9 @@ void process_send_notification_signal(DBusConnection* conn, unsigned int notifyL snprintf(seatArray, DbusSubMatchSize, "%u", notifySeatNo); //printf("process_send_Notification_Signal => key: %s | lbid: %d | gUserNo: %d | gSeatNo: %d | gReason: %d \n", gNotifykey, gLdbid, gUserNo, gSeatNo, gReason); - message = dbus_message_new_signal("/org/genivi/persistence/adminconsumer", // const char *path, - "org.genivi.persistence.adminconsumer", // const char *interface, - notifyReasonString); // const char *name + message = dbus_message_new_signal(gPersAdminConsumerPath, + gDbusPersAdminConsInterface, + notifyReasonString); ret = dbus_message_append_args(message, DBUS_TYPE_STRING, &pnotifyKey, DBUS_TYPE_STRING, &pldbidArra, @@ -246,9 +258,9 @@ void process_send_pas_request(DBusConnection* conn, unsigned int requestID, int DBusError error; dbus_error_init (&error); - DBusMessage* message = dbus_message_new_method_call("org.genivi.persistence.admin", // destination - "/org/genivi/persistence/admin", // path - "org.genivi.persistence.admin", // interface + DBusMessage* message = dbus_message_new_method_call(gDbusPersAdminInterface, // destination + gDbusPersAdminPath, // path + gDbusPersAdminInterface, // interface "PersistenceAdminRequestCompleted"); // method if(conn != NULL) { @@ -293,20 +305,19 @@ void process_send_pas_register(DBusConnection* conn, int regType, int notificati if(conn != NULL) { - const char* objName = "/org/genivi/persistence/adminconsumer"; const char* busName = dbus_bus_get_unique_name(conn); if(busName != NULL) { - DBusMessage* message = dbus_message_new_method_call("org.genivi.persistence.admin", // destination - "/org/genivi/persistence/admin", // path - "org.genivi.persistence.admin", // interface - method); // method + DBusMessage* message = dbus_message_new_method_call(gDbusPersAdminInterface, // destination + gDbusPersAdminPath, // path + gDbusPersAdminInterface, // interface + method); // method if(message != NULL) { dbus_message_append_args(message, DBUS_TYPE_STRING, &busName, // bus name - DBUS_TYPE_STRING, &objName, + DBUS_TYPE_STRING, &gPersAdminConsumerPath, DBUS_TYPE_INT32, ¬ificationFlag, DBUS_TYPE_UINT32, &gTimeoutMs, DBUS_TYPE_INVALID); @@ -356,26 +367,27 @@ void process_send_lifecycle_register(DBusConnection* conn, int regType, int shut if(conn != NULL) { - const char* objName = "/org/genivi/NodeStateManager/LifeCycleConsumer"; const char* busName = dbus_bus_get_unique_name(conn); - DBusMessage* message = dbus_message_new_method_call("org.genivi.NodeStateManager", // destination - "/org/genivi/NodeStateManager/Consumer", // path - "org.genivi.NodeStateManager.Consumer", // interface + printf("process_send_lifecycle_register => busName: %s\n", busName); + + DBusMessage* message = dbus_message_new_method_call(gDbusLcConsDest, // destination + gDbusLcCons, // path + gDbusLcInterface, // interface method); // method if(message != NULL) { if(regType == 1) // register { dbus_message_append_args(message, DBUS_TYPE_STRING, &busName, - DBUS_TYPE_STRING, &objName, + DBUS_TYPE_STRING, &gDbusLcConsPath, DBUS_TYPE_UINT32, &shutdownMode, DBUS_TYPE_UINT32, &gTimeoutMs, DBUS_TYPE_INVALID); } else // unregister { dbus_message_append_args(message, DBUS_TYPE_STRING, &busName, - DBUS_TYPE_STRING, &objName, + DBUS_TYPE_STRING, &gDbusLcConsPath, DBUS_TYPE_UINT32, &shutdownMode, DBUS_TYPE_INVALID); } @@ -406,9 +418,9 @@ void process_send_lifecycle_request(DBusConnection* conn, unsigned int requestId if(conn != NULL) { - DBusMessage* message = dbus_message_new_method_call("org.genivi.NodeStateManager", // destination - "/org/genivi/NodeStateManager/Consumer", // path - "org.genivi.NodeStateManager.Consumer", // interface + DBusMessage* message = dbus_message_new_method_call(gDbusLcConsDest, // destination + gDbusLcCons, // path + gDbusLcInterface, // interface "LifecycleRequestComplete"); // method if(message != NULL) { diff --git a/src/persistence_client_library_dbus_service.c b/src/persistence_client_library_dbus_service.c index 29dd912..845cc8f 100644 --- a/src/persistence_client_library_dbus_service.c +++ b/src/persistence_client_library_dbus_service.c @@ -45,7 +45,21 @@ pthread_cond_t gMainLoopCond = PTHREAD_COND_INITIALIZER; pthread_t gMainLoopThread; -//int gEfds; // communication channel int dbus mainloop +const char* gDbusLcConsDest = "org.genivi.NodeStateManager"; + +const char* gDbusLcConsterface = "org.genivi.NodeStateManager.LifeCycleConsumer"; +const char* gDbusLcConsPath = "/org/genivi/NodeStateManager/LifeCycleConsumer"; +const char* gDbusLcInterface = "org.genivi.NodeStateManager.Consumer"; +const char* gDbusLcCons = "/org/genivi/NodeStateManager/Consumer"; +const char* gDbusLcConsMsg = "LifecycleRequest"; + +const char* gDbusPersAdminConsInterface = "org.genivi.persistence.adminconsumer"; +const char* gPersAdminConsumerPath = "/org/genivi/persistence/adminconsumer"; +const char* gDbusPersAdminPath = "/org/genivi/persistence/admin"; +const char* gDbusPersAdminInterface = "org.genivi.persistence.admin"; +const char* gDbusPersAdminConsMsg = "PersistenceAdminRequest"; + + int gPipeFd[2] = {0}; // communication channel int dbus mainloop typedef enum EDBusObjectType @@ -100,7 +114,7 @@ static DBusHandlerResult handleObjectPathMessageFallback(DBusConnection * connec (void)user_data; // org.genivi.persistence.admin S I G N A L - if((0==strcmp("org.genivi.persistence.admin", dbus_message_get_interface(message)))) + if((0==strcmp(gDbusPersAdminInterface, dbus_message_get_interface(message)))) { if(dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_SIGNAL) { @@ -116,7 +130,7 @@ static DBusHandlerResult handleObjectPathMessageFallback(DBusConnection * connec } } // org.genivi.persistence.admin S I G N A L - else if((0==strcmp("org.genivi.persistence.adminconsumer", dbus_message_get_interface(message)))) + else if((0==strcmp(gDbusPersAdminConsInterface, dbus_message_get_interface(message)))) { if(dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_SIGNAL) { @@ -524,9 +538,9 @@ int mainLoop(DBusObjectPathVTable vtable, DBusObjectPathVTable vtable2, dbus_bus_add_match(conn, "type='signal',interface='org.genivi.persistence.admin',member='PersistenceModeChanged',path='/org/genivi/persistence/admin'", &err); // register for messages - if ( (TRUE==dbus_connection_register_object_path(conn, "/org/genivi/NodeStateManager/LifeCycleConsumer", &vtable2, userData)) + if ( (TRUE==dbus_connection_register_object_path(conn, gDbusLcConsPath, &vtable2, userData)) #if USE_PASINTERFACE == 1 - && (TRUE==dbus_connection_register_object_path(conn, "/org/genivi/persistence/adminconsumer", &vtable, userData)) + && (TRUE==dbus_connection_register_object_path(conn, gPersAdminConsumerPath, &vtable, userData)) #endif && (TRUE==dbus_connection_register_fallback(conn, "/", &vtableFallback, userData)) ) { @@ -545,7 +559,7 @@ int mainLoop(DBusObjectPathVTable vtable, DBusObjectPathVTable vtable2, while (DBUS_DISPATCH_DATA_REMAINS==dbus_connection_dispatch(conn)); - while ((-1==(ret=poll(gPollInfo.fds, gPollInfo.nfds, 750)))&&(EINTR==errno)); + while ((-1==(ret=poll(gPollInfo.fds, gPollInfo.nfds, -1)))&&(EINTR==errno)); if (0>ret) { @@ -664,9 +678,9 @@ int mainLoop(DBusObjectPathVTable vtable, DBusObjectPathVTable vtable2, while (0!=bContinue); } #if USE_PASINTERFACE == 1 - dbus_connection_unregister_object_path(conn, "/org/genivi/persistence/adminconsumer"); + dbus_connection_unregister_object_path(conn, gPersAdminConsumerPath); #endif - dbus_connection_unregister_object_path(conn, "/org/genivi/NodeStateManager/LifeCycleConsumer"); + dbus_connection_unregister_object_path(conn, gDbusLcConsPath); dbus_connection_unregister_object_path(conn, "/"); } //close(gEfds); diff --git a/src/persistence_client_library_dbus_service.h b/src/persistence_client_library_dbus_service.h index f03a494..43d4f6a 100644 --- a/src/persistence_client_library_dbus_service.h +++ b/src/persistence_client_library_dbus_service.h @@ -55,6 +55,32 @@ typedef enum ECmd } tCmd; + +/// lifecycle consumer interface dbus name +extern const char* gDbusLcConsterface; +/// lifecycle consumer dbus interface +extern const char* gDbusLcCons; +/// lifecycle consumer dbus destination +extern const char* gDbusLcConsDest; +/// lifecycle consumer dbus path +extern const char* gDbusLcConsPath; +/// lifecycle consumer debus message +extern const char* gDbusLcConsMsg; +/// lifecycle consumer dbus interface +extern const char* gDbusLcInterface; + +/// persistence administrator consumer dbus interface +extern const char* gDbusPersAdminConsInterface; +/// persistence administrator consumer dbus +extern const char* gDbusPersAdminPath; +/// persistence administrator consumer dbus interface message +extern const char* gDbusPersAdminConsMsg; +/// persistence administrator dbus +extern const char* gDbusPersAdminInterface; +/// persistence administrator dbus path +extern const char* gPersAdminConsumerPath; + + /// command data union definition typedef union MainLoopData{ struct { diff --git a/src/persistence_client_library_lc_interface.c b/src/persistence_client_library_lc_interface.c index 45920f7..42b11f9 100644 --- a/src/persistence_client_library_lc_interface.c +++ b/src/persistence_client_library_lc_interface.c @@ -136,9 +136,11 @@ DBusHandlerResult checkLifecycleMsg(DBusConnection * connection, DBusMessage * m (void)user_data; - if((0==strncmp("org.genivi.NodeStateManager.LifeCycleConsumer", dbus_message_get_interface(message), 46))) + printf("checkLifecycleMsg ==> \n Interface: %s \n Message: %s \n", dbus_message_get_interface(message), dbus_message_get_member(message)); + + if((0==strncmp(gDbusLcConsterface, dbus_message_get_interface(message), 46))) { - if((0==strncmp("LifecycleRequest", dbus_message_get_member(message), 16))) + if((0==strncmp(gDbusLcConsMsg, dbus_message_get_member(message), 16))) { result = msg_lifecycleRequest(connection, message); } diff --git a/src/persistence_client_library_pas_interface.c b/src/persistence_client_library_pas_interface.c index 89ce225..792f3e4 100644 --- a/src/persistence_client_library_pas_interface.c +++ b/src/persistence_client_library_pas_interface.c @@ -29,7 +29,6 @@ /// flag if access is locked static int gLockAccess = 0; - void pers_lock_access(void) { __sync_fetch_and_add(&gLockAccess,1); @@ -208,9 +207,11 @@ DBusHandlerResult checkPersAdminMsg(DBusConnection * connection, DBusMessage * m (void)user_data; - if((0==strcmp("org.genivi.persistence.adminconsumer", dbus_message_get_interface(message)))) + printf("checkPersAdminMsg => \n interface: %s\n Message: %s \n", dbus_message_get_interface(message), dbus_message_get_member(message)); + + if((0==strcmp(gDbusPersAdminConsInterface, dbus_message_get_interface(message)))) { - if((0==strcmp("PersistenceAdminRequest", dbus_message_get_member(message)))) + if((0==strcmp(gDbusPersAdminConsMsg, dbus_message_get_member(message)))) { result = msg_persAdminRequest(connection, message); } |