sp_var.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef SP_VAR_H
  2. #define SP_VAR_H
  3. #pragma once
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #include "sp_uid.h"
  8. #define VAR_RSERVERD_KEY_TERM_STATE "{314A6884-6373-48AD-A800-AE8E866E3572}"
  9. /* variable support, sub/unsub notification support */
  10. typedef struct sp_var_client_t sp_var_client_t;
  11. typedef struct sp_var_listener_t sp_var_listener_t;
  12. typedef struct sp_var_daemon_t sp_var_daemon_t;
  13. typedef struct sp_svc_t sp_svc_t;
  14. typedef void (*sp_var_on_change)(sp_var_listener_t *listener,
  15. const char *key,
  16. const char *oldstr,
  17. const char *newstr,
  18. int client_id,
  19. void *user_data);
  20. // client
  21. SPBASE_API int sp_var_client_create(sp_svc_t *svc, sp_var_client_t **p_client);
  22. SPBASE_API void sp_var_client_destroy(sp_var_client_t *client);
  23. SPBASE_API int sp_var_client_set(sp_var_client_t *client, const char *key, const char *str, int persist);
  24. int sp_var_client_get(sp_var_client_t *client, const char *key, char *str, int *n);
  25. int sp_var_client_lock(sp_var_client_t *client);
  26. int sp_var_client_unlock(sp_var_client_t *client);
  27. // listener
  28. int sp_var_listener_create(sp_svc_t *svc, const char *key, sp_var_on_change on_change, void *user_data, sp_var_listener_t **p_listener);
  29. void sp_var_listener_destroy(sp_var_listener_t *listener);
  30. int sp_var_listener_subscribe(sp_var_listener_t *listener);
  31. int sp_var_listener_unsubscribe(sp_var_listener_t *listener);
  32. void sp_var_listener_set_tag(sp_var_listener_t *listener, void *tag);
  33. void* sp_var_listener_get_tag(sp_var_listener_t *listener);
  34. int sp_var_listener_enable(sp_var_listener_t *listener, int enabled);
  35. // daemon
  36. SPBASE_API int sp_var_daemon_create(sp_svc_t *svc, sp_var_daemon_t **p_daemon);
  37. SPBASE_API void sp_var_daemon_destroy(sp_var_daemon_t *daemon);
  38. #ifdef __cplusplus
  39. } // extern "C" {
  40. #endif
  41. #endif // SP_VAR_H