libcommon: Introduce notifier 59/296359/2
authorYoungjae Cho <y0.cho@samsung.com>
Tue, 25 Jul 2023 11:21:10 +0000 (20:21 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Thu, 27 Jul 2023 05:08:56 +0000 (14:08 +0900)
commit62a63fe1f111ebbd2b0f9b51b0e9955a5bcb31a0
tree7ecf2f7534e7f570d752be4056a580b26d2981e9
parent78b2e902742b129dc1bc580a75fc89febde186a4
libcommon: Introduce notifier

 The libsyscommon notifer provides mean that communicate between
different modules. And it works based on publish-subscribe pattern.

 If someone wants to listen to an event, it subscribes to notify id
that is defined by event publisher, using subscribe function such as
 - syscommon_notifier_subscribe_notify_priority()
 - syscommon_notifier_subscribe_notify()
 - syscommon_notifier_subscribe_notify_udata_priority()
 - syscommon_notifier_subscribe_notify_udata()
Obviously, it is possible to unsubscribe notify via
 - syscommon_notifier_unsubscribe_notify()
 - syscommon_notifier_unsubscribe_notify_udata()

 If someone want publish a notify, it can be done by the functions
such as
 - syscommon_notifier_emit_notify()
 - syscommon_notifier_emit_notify_once()
See below for a detailed description about libsyscommon notifier.

 int syscommon_notifier_subscribe_notify_priority()
  - Subscribe notify without user_data callback.
  - Higher number of priority will be notified first.

 int syscommon_notifier_subscribe_notify()
  - Subscribe notify without user_data callback
  - Automatically assign default priority of 0.

 int syscommon_notifier_unsubscribe_notify()
  - Unsubscribe notify callback without user_data.

 int syscommon_notifier_subscribe_notify_udata_priority()
  - Subscribe notify with user_data callback.
  - Provide destroy callback to free user_data on unsubscribing.
  - Higher number of priority will be notified first.
  - Return notify id and can be used for unsubscribing.

 int syscommon_notifier_unsubscribe_notify_udata()
  - Subscribe notify with user_data callback
  - Provide destroy callback to free user_data on unsubscribing
  - Automatically assign default priority of 0.
  - Return notify id and can be used for unsubscribing.

 int syscommon_notifier_subscribe_notify_udata()
  - Unsubscribe notify callback with user_data.
  - Invoke destroy function with user_data.

 void syscommon_notifier_emit_notify()
  - Emit notify.

 void syscommon_notifier_emit_notify_once()
  - Emit notify only once.
  - Notification after the first one is ignored.

Change-Id: I1853f5a51e999c1f20b34c9281becb9cfbdb8a8b
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
Change-Id: Iff113c8869e27a90f11156181b500d25893387a8
CMakeLists.txt
include/libsyscommon/notifier.h [new file with mode: 0644]
src/libcommon/notifier.c [new file with mode: 0644]
tests/libcommon/test-common.c