syslog-ng source
persist-state.c File Reference
#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>
Include dependency graph for persist-state.c:

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)
 

Macro Definition Documentation

◆ PERSIST_FILE_INITIAL_SIZE

#define PERSIST_FILE_INITIAL_SIZE   16384

◆ PERSIST_FILE_MAX_ENTRY_SIZE

#define PERSIST_FILE_MAX_ENTRY_SIZE   8448

◆ PERSIST_STATE_KEY_BLOCK_SIZE

#define PERSIST_STATE_KEY_BLOCK_SIZE   4096

Function Documentation

◆ persist_state_alloc_entry()

PersistEntryHandle persist_state_alloc_entry ( PersistState *  self,
const gchar *  persist_name,
gsize  alloc_size 
)

◆ persist_state_alloc_string()

void persist_state_alloc_string ( PersistState *  self,
const gchar *  persist_name,
const gchar *  value,
gssize  len 
)

◆ persist_state_cancel()

void persist_state_cancel ( PersistState *  self)

◆ persist_state_commit()

gboolean persist_state_commit ( PersistState *  self)

◆ persist_state_copy_entry()

gboolean persist_state_copy_entry ( PersistState *  self,
const gchar *  old_key,
const gchar *  new_key 
)

◆ persist_state_entry_exists()

gboolean persist_state_entry_exists ( PersistState *  self,
const gchar *  persist_name 
)

◆ persist_state_foreach_entry()

void persist_state_foreach_entry ( PersistState *  self,
PersistStateForeachFunc  func,
gpointer  userdata 
)

◆ persist_state_free()

void persist_state_free ( PersistState *  self)

◆ persist_state_get_filename()

const gchar* persist_state_get_filename ( PersistState *  self)

◆ persist_state_lookup_entry()

PersistEntryHandle persist_state_lookup_entry ( PersistState *  self,
const gchar *  key,
gsize *  size,
guint8 *  version 
)

◆ persist_state_lookup_string()

gchar* persist_state_lookup_string ( PersistState *  self,
const gchar *  key,
gsize *  length,
guint8 *  version 
)

◆ persist_state_map_entry()

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().

◆ persist_state_move_entry()

gboolean persist_state_move_entry ( PersistState *  self,
const gchar *  old_key,
const gchar *  new_key 
)

◆ persist_state_new()

PersistState* persist_state_new ( const gchar *  filename)

◆ persist_state_remove_entry()

gboolean persist_state_remove_entry ( PersistState *  self,
const gchar *  key 
)

◆ persist_state_rename_entry()

gboolean persist_state_rename_entry ( PersistState *  self,
const gchar *  old_key,
const gchar *  new_key 
)

◆ persist_state_set_global_error_handler()

void persist_state_set_global_error_handler ( PersistState *  self,
void(*)(gpointer user_data)  handler,
gpointer  user_data 
)

◆ persist_state_start()

gboolean persist_state_start ( PersistState *  self)

◆ persist_state_start_dump()

gboolean persist_state_start_dump ( PersistState *  self)

◆ persist_state_start_edit()

gboolean persist_state_start_edit ( PersistState *  self)

◆ persist_state_unmap_entry()

void persist_state_unmap_entry ( PersistState *  self,
PersistEntryHandle  handle 
)