00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00032 #ifndef ALP_GLOBAL_SETTINGS_H_
00033 #define ALP_GLOBAL_SETTINGS_H_ 1
00034
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038
00045 #include <glib.h>
00046
00047 #include <hiker/config.h>
00048 #include <hiker/sysclass.h>
00049 #include <hiker/types.h>
00050 #include <sys/types.h>
00051
00052 #define ALP_GLOBAL_SETTINGS_RPC
00053
00054
00055 #define ALP_GLOBAL_SETTINGS_VERSION 1
00056
00057 #define GLOBAL_SETTINGS_APP_ID "com.access.sys.global_settings"
00058 #define GLOBAL_SETTINGS_CHANNEL_NAME "global settings"
00059 #define GLOBAL_SETTINGS_TIMEOUT 500000
00060
00061
00062
00063
00064 #define ALP_NOTIFY_EVENT_GLOBAL_SETTINGS_KEY_CHANGE "/alp/globalsettings/keychange"
00065
00066
00067
00068 #define ALP_STATUS_GLOBAL_SETTINGS_ERROR ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00010000)
00069 #define ALP_STATUS_GLOBAL_SETTINGS_KEY_NOT_FOUND ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00020000)
00070 #define ALP_STATUS_GLOBAL_SETTINGS_VALUE_NOT_FOUND ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00030000)
00071 #define ALP_STATUS_GLOBAL_SETTINGS_ENTRY_ITERATOR_AT_END ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00040000)
00072 #define ALP_STATUS_GLOBAL_SETTINGS_ENTRY_ITERATOR_INVALID ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00050000)
00073 #define ALP_STATUS_GLOBAL_SETTINGS_VALUE_NOT_DIR ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00060000)
00074 #define ALP_STATUS_GLOBAL_SETTINGS_INCORRECT_TYPE ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00070000)
00075 #define ALP_STATUS_GLOBAL_SETTINGS_ENTRY_INVALID ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00080000)
00076 #define ALP_STATUS_GLOBAL_SETTINGS_VALUE_INVALID ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x00090000)
00077 #define ALP_STATUS_GLOBAL_SETTINGS_ARGUMENT_INVALID ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x000a0000)
00078 #define ALP_STATUS_GLOBAL_SETTINGS_BUFFER_TOO_SMALL ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x000b0000)
00079 #define ALP_STATUS_GLOBAL_SETTINGS_PERMISSION_DENIED ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x000c0000)
00080 #define ALP_STATUS_GLOBAL_SETTINGS_KEY_EXISTS ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x000d0000)
00081 #define ALP_STATUS_GLOBAL_SETTINGS_VERSION_MISMATCH ((alp_status_t) ALP_CLASS_GLOBAL_SETTINGS | 0x000e0000)
00082
00083
00084
00085
00086
00087
00091 typedef enum {
00092 ALP_GLOBAL_SETTINGS_TYPE_INVALID = 0,
00093 ALP_GLOBAL_SETTINGS_TYPE_STRING,
00094 ALP_GLOBAL_SETTINGS_TYPE_INT,
00095 ALP_GLOBAL_SETTINGS_TYPE_FLOAT,
00096 ALP_GLOBAL_SETTINGS_TYPE_BOOL,
00097 ALP_GLOBAL_SETTINGS_TYPE_LIST,
00098 ALP_GLOBAL_SETTINGS_TYPE_DIR,
00099 ALP_GLOBAL_SETTINGS_TYPE_BLOB,
00100 } AlpGlobalSettingsValueType;
00101
00102
00103
00104
00105
00106
00110 typedef struct _AlpGlobalSettingsContext AlpGlobalSettingsContext;
00111
00112
00116 typedef struct _AlpGlobalSettingsValue AlpGlobalSettingsValue ;
00117 struct _AlpGlobalSettingsValue
00118 {
00119 AlpGlobalSettingsValueType type;
00120 int int_value;
00121 double float_value;
00122 gboolean bool_value;
00123 GList *list_value;
00124 GString *string_value;
00125 GByteArray blob_value;
00126
00127 } ;
00128
00129 #define GLOBAL_SETTINGS_VALUE_INITIALIZER { ALP_GLOBAL_SETTINGS_TYPE_INVALID, 0, 0, 0, 0, 0, { 0, 0 } }
00130
00134 typedef struct _AlpGlobalSettingsEntry AlpGlobalSettingsEntry ;
00135 struct _AlpGlobalSettingsEntry
00136 {
00137 GString *key;
00138 AlpGlobalSettingsValue value;
00139 } ;
00140
00141
00145 typedef struct _AlpGlobalSettingsEntryIterator AlpGlobalSettingsEntryIterator ;
00146
00147
00148
00154 AlpGlobalSettingsEntry*alp_global_settings_entry_alloc(void);
00155
00162 void alp_global_settings_entry_free(AlpGlobalSettingsEntry *e);
00163
00164
00170 AlpGlobalSettingsValue *alp_global_settings_value_alloc(void);
00171
00172
00179 void alp_global_settings_value_free(AlpGlobalSettingsValue *e);
00180
00181
00182
00189 void alp_global_settings_value_clean(AlpGlobalSettingsValue *e);
00190
00191
00192
00199 void alp_global_settings_value_list_free(GList *l);
00200
00209 alp_status_t
00210 alp_global_settings_init(void);
00211
00212
00213
00224 alp_status_t
00225 alp_global_settings_open(AlpGlobalSettingsContext **context);
00226
00235 alp_status_t
00236 alp_global_settings_close(AlpGlobalSettingsContext *context);
00237
00246 ALP_GLOBAL_SETTINGS_RPC
00247 alp_status_t
00248 alp_global_settings_begin_transaction(AlpGlobalSettingsContext *context);
00249
00259 ALP_GLOBAL_SETTINGS_RPC
00260 alp_status_t
00261 alp_global_settings_complete_transaction(AlpGlobalSettingsContext *context);
00262
00263
00273 ALP_GLOBAL_SETTINGS_RPC
00274 alp_status_t
00275 alp_global_settings_cancel_transaction(AlpGlobalSettingsContext *context);
00276
00277
00289 alp_status_t
00290 alp_global_settings_set_cwd(AlpGlobalSettingsContext *context, const char *cwd);
00291
00292
00306 alp_status_t
00307 alp_global_settings_get_cwd(AlpGlobalSettingsContext *context, char *buf, size_t buf_size);
00308
00319 ALP_GLOBAL_SETTINGS_RPC
00320 alp_status_t
00321 alp_global_settings_set_default_mode(AlpGlobalSettingsContext *context, mode_t mode);
00322
00323
00334 ALP_GLOBAL_SETTINGS_RPC
00335 alp_status_t
00336 alp_global_settings_get_default_mode(AlpGlobalSettingsContext *context, mode_t *mode);
00337
00338
00351 ALP_GLOBAL_SETTINGS_RPC
00352 alp_status_t
00353 alp_global_settings_set_mode(AlpGlobalSettingsContext *context, const char *key, mode_t mode);
00354
00355
00368 ALP_GLOBAL_SETTINGS_RPC
00369 alp_status_t
00370 alp_global_settings_get_mode(AlpGlobalSettingsContext *context, const char *key, mode_t *mode);
00371
00384 ALP_GLOBAL_SETTINGS_RPC
00385 alp_status_t
00386 alp_global_settings_set_uid(AlpGlobalSettingsContext *context, const char *key, uid_t id);
00387
00388
00401 ALP_GLOBAL_SETTINGS_RPC
00402 alp_status_t
00403 alp_global_settings_get_uid(AlpGlobalSettingsContext *context, const char *key, uid_t *id);
00404
00405
00418 ALP_GLOBAL_SETTINGS_RPC
00419 alp_status_t
00420 alp_global_settings_set_gid(AlpGlobalSettingsContext *context, const char *key, gid_t id);
00421
00422
00435 ALP_GLOBAL_SETTINGS_RPC
00436 alp_status_t
00437 alp_global_settings_get_gid(AlpGlobalSettingsContext *context, const char *key, gid_t *id);
00438
00439
00440
00441
00442
00457 ALP_GLOBAL_SETTINGS_RPC
00458 alp_status_t
00459 alp_global_settings_set( AlpGlobalSettingsContext *context,
00460 const char *key,
00461 const AlpGlobalSettingsValue *value);
00462
00475 ALP_GLOBAL_SETTINGS_RPC
00476 alp_status_t
00477 alp_global_settings_get( AlpGlobalSettingsContext *context,
00478 const char *key,
00479 AlpGlobalSettingsValue *value);
00480
00481
00494 ALP_GLOBAL_SETTINGS_RPC
00495 alp_status_t
00496 alp_global_settings_delete( AlpGlobalSettingsContext *context,
00497 const char *key);
00498
00499
00512 ALP_GLOBAL_SETTINGS_RPC
00513 alp_status_t
00514 alp_global_settings_delete_tree( AlpGlobalSettingsContext *context,
00515 const char *key);
00516
00517
00530 ALP_GLOBAL_SETTINGS_RPC
00531 alp_status_t
00532 alp_global_settings_delete_tree_keeping_defaults( AlpGlobalSettingsContext *context,
00533 const char *key);
00534
00535
00536
00549 ALP_GLOBAL_SETTINGS_RPC
00550 alp_status_t
00551 alp_global_settings_get_type( AlpGlobalSettingsContext *context,
00552 const char *key,
00553 AlpGlobalSettingsValueType *type);
00554
00555
00568 ALP_GLOBAL_SETTINGS_RPC
00569 alp_status_t
00570 alp_global_settings_get_value_size( AlpGlobalSettingsContext *context,
00571 const char *key,
00572 size_t *size);
00573
00574
00575
00586 ALP_GLOBAL_SETTINGS_RPC
00587 alp_status_t
00588 alp_global_settings_set_notification_on_off(AlpGlobalSettingsContext *context, int on_off);
00589
00590
00604 ALP_GLOBAL_SETTINGS_RPC
00605 alp_status_t
00606 alp_global_settings_findkeys_start( AlpGlobalSettingsContext *context,
00607 const char *dir_path,
00608 AlpGlobalSettingsEntryIterator **iterator);
00609
00610
00611
00623 alp_status_t
00624 alp_global_settings_findkeys_next(AlpGlobalSettingsEntryIterator *iterator);
00625
00636 alp_status_t
00637 alp_global_settings_findkeys_end(AlpGlobalSettingsEntryIterator *iterator);
00638
00639
00651 alp_status_t
00652 alp_global_settings_findkeys_get_key(AlpGlobalSettingsEntryIterator *iterator,
00653 char *key,
00654 unsigned int key_size);
00655
00656
00669 alp_status_t
00670 alp_global_settings_entry_get_key_value(const AlpGlobalSettingsEntry *entry,
00671 char *key,
00672 unsigned int key_size,
00673 AlpGlobalSettingsValue *value);
00674
00675
00688 alp_status_t
00689 alp_global_settings_entry_set_key_value(AlpGlobalSettingsEntry *entry,
00690 const char *key,
00691 const AlpGlobalSettingsValue *value);
00692
00693
00694
00703 alp_status_t
00704 alp_global_settings_value_set_string(AlpGlobalSettingsValue *value,
00705 const char *string);
00706
00707
00708
00717 alp_status_t
00718 alp_global_settings_value_set_int(AlpGlobalSettingsValue *value,
00719 int i);
00720
00721
00722
00731 alp_status_t
00732 alp_global_settings_value_set_float(AlpGlobalSettingsValue *value,
00733 double f);
00734
00735
00736
00745 alp_status_t
00746 alp_global_settings_value_set_bool(AlpGlobalSettingsValue *value,
00747 gboolean b);
00748
00749
00750
00759 alp_status_t
00760 alp_global_settings_value_set_list(AlpGlobalSettingsValue *value,
00761 const GList *list);
00762
00763
00764
00765
00777 alp_status_t
00778 alp_global_settings_value_get_string(AlpGlobalSettingsValue *value,
00779 char *string,
00780 unsigned int string_size);
00781
00782
00783
00794 alp_status_t
00795 alp_global_settings_value_get_int(AlpGlobalSettingsValue *value,
00796 int *i);
00797
00798
00799
00810 alp_status_t
00811 alp_global_settings_value_get_float(AlpGlobalSettingsValue *value,
00812 double *f);
00813
00814
00815
00826 alp_status_t
00827 alp_global_settings_value_get_bool(AlpGlobalSettingsValue *value,
00828 gboolean *b);
00829
00830
00831
00843 alp_status_t
00844 alp_global_settings_value_get_list(AlpGlobalSettingsValue *value,
00845 GList **list);
00846
00847
00848
00864 alp_status_t
00865 alp_global_settings_get_key_string_value(AlpGlobalSettingsContext *context,
00866 const char *key,
00867 char *value,
00868 unsigned int value_size);
00869
00870
00882 alp_status_t
00883 alp_global_settings_set_key_string_value(AlpGlobalSettingsContext *context,
00884 const char *key,
00885 const char *value);
00886
00887
00888
00901 alp_status_t
00902 alp_global_settings_get_key_bool_value(AlpGlobalSettingsContext *context,
00903 const char *key,
00904 gboolean *value);
00905
00917 alp_status_t
00918 alp_global_settings_set_key_bool_value(AlpGlobalSettingsContext *context,
00919 const char *key,
00920 gboolean value);
00921
00922
00923
00937 alp_status_t
00938 alp_global_settings_get_key_int_value(AlpGlobalSettingsContext *context,
00939 const char *key,
00940 int *value);
00941
00953 alp_status_t
00954 alp_global_settings_set_key_int_value(AlpGlobalSettingsContext *context,
00955 const char *key,
00956 int value);
00957
00958
00959
00973 alp_status_t
00974 alp_global_settings_get_key_float_value(AlpGlobalSettingsContext *context,
00975 const char *key,
00976 double *value);
00977
00978
00979
00990 alp_status_t
00991 alp_global_settings_set_key_float_value(AlpGlobalSettingsContext *context,
00992 const char *key,
00993 double value);
00994
00995
00996
00997
01014 alp_status_t
01015 alp_global_settings_get_key_blob_value(AlpGlobalSettingsContext *context,
01016 const char *key,
01017 char *value,
01018 int buffer_size,
01019 int * value_size);
01020
01032 alp_status_t
01033 alp_global_settings_set_key_blob_value(AlpGlobalSettingsContext *context,
01034 const char *key,
01035 const char *value,
01036 int value_size);
01037
01038
01051 alp_status_t
01052 alp_global_settings_set_key_directory(AlpGlobalSettingsContext *context,
01053 const char *key);
01054
01066 ALP_GLOBAL_SETTINGS_RPC
01067 alp_status_t
01068 alp_global_settings_import_from_file(AlpGlobalSettingsContext *context,
01069 const char *file);
01070
01084 ALP_GLOBAL_SETTINGS_RPC
01085 alp_status_t
01086 alp_global_settings_list_keys( AlpGlobalSettingsContext *context, const gchar *pattern, AlpGlobalSettingsEntryIterator **iterator);
01087
01088
01093 #ifdef __cplusplus
01094 }
01095 #endif
01096
01097 #endif // #ifndef ALP_GLOBAL_SETTINGS_H_