#include "persist-state.h"#include "serialize.h"#include "messages.h"#include "fdhelpers.h"#include <sys/types.h>#include <unistd.h>#include <fcntl.h>#include <sys/mman.h>#include <errno.h>#include <string.h>#include <signal.h>
Classes | |
| struct | PersistValueHeader |
| struct | PersistStateKeysForeachData |
Macros | |
| #define | PERSIST_FILE_INITIAL_SIZE 16384 |
| #define | PERSIST_STATE_KEY_BLOCK_SIZE 4096 |
| #define | PERSIST_FILE_MAX_ENTRY_SIZE 8448 |
Functions | |
| gboolean | persist_state_rename_entry (PersistState *self, const gchar *old_key, const gchar *new_key) |
| gboolean | persist_state_copy_entry (PersistState *self, const gchar *old_key, const gchar *new_key) |
| gboolean | persist_state_move_entry (PersistState *self, const gchar *old_key, const gchar *new_key) |
| gpointer | persist_state_map_entry (PersistState *self, PersistEntryHandle handle) |
| void | persist_state_unmap_entry (PersistState *self, PersistEntryHandle handle) |
| PersistEntryHandle | persist_state_alloc_entry (PersistState *self, const gchar *persist_name, gsize alloc_size) |
| PersistEntryHandle | persist_state_lookup_entry (PersistState *self, const gchar *key, gsize *size, guint8 *version) |
| gboolean | persist_state_entry_exists (PersistState *self, const gchar *persist_name) |
| gboolean | persist_state_remove_entry (PersistState *self, const gchar *key) |
| void | persist_state_foreach_entry (PersistState *self, PersistStateForeachFunc func, gpointer userdata) |
| gchar * | persist_state_lookup_string (PersistState *self, const gchar *key, gsize *length, guint8 *version) |
| void | persist_state_alloc_string (PersistState *self, const gchar *persist_name, const gchar *value, gssize len) |
| const gchar * | persist_state_get_filename (PersistState *self) |
| gboolean | persist_state_start_dump (PersistState *self) |
| gboolean | persist_state_start_edit (PersistState *self) |
| gboolean | persist_state_start (PersistState *self) |
| gboolean | persist_state_commit (PersistState *self) |
| void | persist_state_cancel (PersistState *self) |
| PersistState * | persist_state_new (const gchar *filename) |
| void | persist_state_free (PersistState *self) |
| void | persist_state_set_global_error_handler (PersistState *self, void(*handler)(gpointer user_data), gpointer user_data) |
| #define PERSIST_FILE_INITIAL_SIZE 16384 |
| #define PERSIST_FILE_MAX_ENTRY_SIZE 8448 |
| #define PERSIST_STATE_KEY_BLOCK_SIZE 4096 |
| PersistEntryHandle persist_state_alloc_entry | ( | PersistState * | self, |
| const gchar * | persist_name, | ||
| gsize | alloc_size | ||
| ) |
| void persist_state_alloc_string | ( | PersistState * | self, |
| const gchar * | persist_name, | ||
| const gchar * | value, | ||
| gssize | len | ||
| ) |
| void persist_state_cancel | ( | PersistState * | self | ) |
| gboolean persist_state_commit | ( | PersistState * | self | ) |
| gboolean persist_state_copy_entry | ( | PersistState * | self, |
| const gchar * | old_key, | ||
| const gchar * | new_key | ||
| ) |
| gboolean persist_state_entry_exists | ( | PersistState * | self, |
| const gchar * | persist_name | ||
| ) |
| void persist_state_foreach_entry | ( | PersistState * | self, |
| PersistStateForeachFunc | func, | ||
| gpointer | userdata | ||
| ) |
| void persist_state_free | ( | PersistState * | self | ) |
| const gchar* persist_state_get_filename | ( | PersistState * | self | ) |
| PersistEntryHandle persist_state_lookup_entry | ( | PersistState * | self, |
| const gchar * | key, | ||
| gsize * | size, | ||
| guint8 * | version | ||
| ) |
| gchar* persist_state_lookup_string | ( | PersistState * | self, |
| const gchar * | key, | ||
| gsize * | length, | ||
| guint8 * | version | ||
| ) |
| gpointer persist_state_map_entry | ( | PersistState * | self, |
| PersistEntryHandle | handle | ||
| ) |
All persistent data accesses must be guarded by a _map and _unmap call in order to get a dereferencable pointer. It is not safe to save this pointer for longer terms as the underlying mapping may change when the file grows.
Threading NOTE: this can be called from any kind of threads.
NOTE: it is not safe to keep an entry mapped while synchronizing with the main thread (e.g. mutexes, condvars, main_loop_call()), because map_entry() may block the main thread in _grow_store().
| gboolean persist_state_move_entry | ( | PersistState * | self, |
| const gchar * | old_key, | ||
| const gchar * | new_key | ||
| ) |
| PersistState* persist_state_new | ( | const gchar * | filename | ) |
| gboolean persist_state_remove_entry | ( | PersistState * | self, |
| const gchar * | key | ||
| ) |
| gboolean persist_state_rename_entry | ( | PersistState * | self, |
| const gchar * | old_key, | ||
| const gchar * | new_key | ||
| ) |
| void persist_state_set_global_error_handler | ( | PersistState * | self, |
| void(*)(gpointer user_data) | handler, | ||
| gpointer | user_data | ||
| ) |
| gboolean persist_state_start | ( | PersistState * | self | ) |
| gboolean persist_state_start_dump | ( | PersistState * | self | ) |
| gboolean persist_state_start_edit | ( | PersistState * | self | ) |
| void persist_state_unmap_entry | ( | PersistState * | self, |
| PersistEntryHandle | handle | ||
| ) |