#include "xroad_storage_fwd.h"
#include <common/xroad_common_fwd.h>
#include <common/xroad_common_types.h>
#include <common/xroad_string.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
Go to the source code of this file.
Macros | |
#define | xroad_storage_heap_alloc(storage, sz, data, ...) xroad_storage_heap_alloc_va(storage, sz, data, ##__VA_ARGS__ , 0) |
#define | xroad_storage_heap_realloc(storage, ref, sz, data, ...) xroad_storage_heap_realloc_va(storage, ref, sz, data, ##__VA_ARGS__ ,0) |
Enumerations | |
enum | xroad_storage_flags_t { xroad_storage_flags_zero_space = 1 , xroad_storage_flags_memory_locked = 2 , xroad_storage_flags_debug = 4 , xroad_storage_flags_clear = 8 } |
Functions | |
xroad_errno_t | xroad_storage_create (uint32_t id, xroad_str_t path, uint32_t row_size, size_t rows_at_page, size_t heap_page_size, uint32_t flags) |
void | xroad_storage_destroy (xroad_storage_t *storage) |
const xroad_storage_info_t * | xroad_storage_get_info (xroad_storage_t *storage) |
xroad_storage_stat_t | xroad_storage_get_stat (xroad_storage_t *storage) |
xroad_str_t | xroad_storage_get_err () |
xroad_str_t | xroad_storage_get_name (xroad_storage_t *storage) |
xroad_storage_t * | xroad_storage_open (xroad_str_t path, uint32_t row_size) |
xroad_errno_t | xroad_storage_resize (xroad_storage_t *storage, uint32_t row_size) |
xroad_errno_t | xroad_storage_drop (xroad_str_t path) |
xroad_errno_t | xroad_storage_clear (xroad_storage_t *storage, bool force) |
void * | xroad_storage_create_row (xroad_storage_t *storage, xroad_row_id_t *id) |
void * | xroad_storage_get_row (xroad_storage_t *storage, xroad_row_id_t row_id) |
xroad_cursor_t * | xroad_storage_create_cursor (xroad_storage_t *storage) |
void | xroad_storage_destroy_cursor (xroad_cursor_t *cursor) |
void * | xroad_storage_cursor_get_next (xroad_cursor_t *cursor) |
void * | xroad_storage_cursor_get_prev (xroad_cursor_t *cursor) |
void * | xroad_storage_cursor_get_first (xroad_cursor_t *cursor) |
void * | xroad_storage_cursor_get_last (xroad_cursor_t *cursor) |
void * | xroad_storage_cursor_offset (xroad_cursor_t *cursor, int64_t offset) |
void * | xroad_storage_copy_row (xroad_storage_t *storage, xroad_row_id_t from, xroad_row_id_t to) |
storage_heap_ref_t | xroad_storage_heap_alloc_va (xroad_storage_t *storage, uint32_t sz, storage_heap_data_t *data,...) __nonnull((1)) |
xroad_errno_t | xroad_storage_heap_free (xroad_storage_t *storage, storage_heap_ref_t ref) |
storage_heap_ref_t | xroad_storage_heap_realloc_va (xroad_storage_t *storage, uint64_t ref, uint32_t sz, storage_heap_data_t *data,...) __nonnull((1)) |
storage_heap_data_t | xroad_storage_heap_get (xroad_storage_t *storage, storage_heap_ref_t ref) __nonnull((1)) |
xroad_errno_t | xroad_storage_check_deadlock (xroad_storage_t *storage, bool force_unlock) |
xroad_errno_t | xroad_storage_verify (xroad_str_t path, bool dump_heap) |
xroad_errno_t | xroad_storage_add_page (xroad_storage_t *storage, xroad_storage_page_type_t ptype) |
#define xroad_storage_heap_alloc | ( | storage, | |
sz, | |||
data, | |||
... | |||
) | xroad_storage_heap_alloc_va(storage, sz, data, ##__VA_ARGS__ , 0) |
save data to storage storage
[in] | storage | - storage to store |
[in] | sz | - data size. Up to 2^31 size |
[out] | data | - pointer to allocated space |
[in] | flags | - storage flags (optional) |
#define xroad_storage_heap_realloc | ( | storage, | |
ref, | |||
sz, | |||
data, | |||
... | |||
) | xroad_storage_heap_realloc_va(storage, ref, sz, data, ##__VA_ARGS__ ,0) |
realloc saved data
[in] | storage | - storage to store |
[in] | ref | - saved data reference |
[in] | sz | - data size |
[in] | flags | - storage flags (optional) |
[out] | data | - pointer to allocated space |
xroad_errno_t xroad_storage_add_page | ( | xroad_storage_t * | storage, |
xroad_storage_page_type_t | ptype | ||
) |
add new page to storage
[in] | storage | - storage to add page |
[in] | ptype | - page type |
xroad_errno_t xroad_storage_check_deadlock | ( | xroad_storage_t * | storage, |
bool | force_unlock | ||
) |
check for deadlocks
[in] | storage | - storage to check @apram[in] froce_unlock - force unlock storage |
xroad_errno_t xroad_storage_clear | ( | xroad_storage_t * | storage, |
bool | force | ||
) |
clear storage
[in] | storage | - storage to clear |
[in] | force | - force clear |
void* xroad_storage_copy_row | ( | xroad_storage_t * | storage, |
xroad_row_id_t | from, | ||
xroad_row_id_t | to | ||
) |
copy row
[in] | storage | - storage handler |
[in] | from | - copied row id |
[in] | to | - new row placement. Can not be greater than storage size |
xroad_errno_t xroad_storage_create | ( | uint32_t | id, |
xroad_str_t | path, | ||
uint32_t | row_size, | ||
size_t | rows_at_page, | ||
size_t | heap_page_size, | ||
uint32_t | flags | ||
) |
create new storage
[in] | id | - storage id |
[in] | path | - path of new storage |
[in] | row_size | - size of row (sizeof(data) + sizeof(xroad_row_header_t)). If size == 0, no row subsystem will be initialized |
[in] | rows_at_page | - estimated count of rows at page. It can be adjusted accoording to OS memory page size. Skipped if row_size == 0 |
[in] | heap_page_size | - size of heap page |
[in] | flags | - storage flags |
xroad_cursor_t* xroad_storage_create_cursor | ( | xroad_storage_t * | storage | ) |
create new storage cursor for rows traversal. Don't forget to call storage_free_cursor after
[in] | storage | - storage handler |
void* xroad_storage_create_row | ( | xroad_storage_t * | storage, |
xroad_row_id_t * | id | ||
) |
allocate new row in storage
[in] | storage | - storage handler |
[in] | id | - id of created row |
void* xroad_storage_cursor_get_next | ( | xroad_cursor_t * | cursor | ) |
return next, previous, first, last row from storage
[in] | cursor | - cursor of storage |
void* xroad_storage_cursor_offset | ( | xroad_cursor_t * | cursor, |
int64_t | offset | ||
) |
offset cursor by number of rows
[in] | cursor | - cursor to offset |
[in] | offset | - cursor offset value. Can be negative |
void xroad_storage_destroy | ( | xroad_storage_t * | storage | ) |
destroy storage
[in] | storage | - storage to destroy |
void xroad_storage_destroy_cursor | ( | xroad_cursor_t * | cursor | ) |
free cursor
[in] | cursor | - cursor to be freeing |
xroad_errno_t xroad_storage_drop | ( | xroad_str_t | path | ) |
drop storage
[in] | path | - storage path |
xroad_str_t xroad_storage_get_err | ( | ) |
return error description, if any
const xroad_storage_info_t* xroad_storage_get_info | ( | xroad_storage_t * | storage | ) |
return storage information @paran[in] storage - storage pointer
xroad_str_t xroad_storage_get_name | ( | xroad_storage_t * | storage | ) |
get storage name
void* xroad_storage_get_row | ( | xroad_storage_t * | storage, |
xroad_row_id_t | row_id | ||
) |
return row by its ID
[in] | storage | - storage handler |
[in] | row_id | - ID of row (started from 1) |
xroad_storage_stat_t xroad_storage_get_stat | ( | xroad_storage_t * | storage | ) |
return storage statistics @paran[in] storage - storage pointer
[in] | allocs | - get allocation statistics |
xroad_errno_t xroad_storage_heap_free | ( | xroad_storage_t * | storage, |
storage_heap_ref_t | ref | ||
) |
free saved data
[in] | storage | - storage with saved data |
[in] | ref | - saved data ref |
storage_heap_data_t xroad_storage_heap_get | ( | xroad_storage_t * | storage, |
storage_heap_ref_t | ref | ||
) |
gets payload data
[in] | storage | - storage with data |
[in] | ref | - saved data reference |
xroad_storage_t* xroad_storage_open | ( | xroad_str_t | path, |
uint32_t | row_size | ||
) |
open storage
[in] | path | - storage path |
[in] | row_size | - just for checking storage for correct row size |
xroad_errno_t xroad_storage_resize | ( | xroad_storage_t * | storage, |
uint32_t | row_size | ||
) |
resize storage
[in] | storage | - storage to resize |
[in] | row_size | - new row size |
xroad_errno_t xroad_storage_verify | ( | xroad_str_t | path, |
bool | dump_heap | ||
) |
verify storage structure
[in] | path | - path to storage file @patam[in] dump_heap - dump heap records |