XROAD
xroad_storage.h
Go to the documentation of this file.
1 
6 #pragma once
7 
8 #include "xroad_storage_fwd.h"
11 #include <common/xroad_string.h>
12 #include <stdlib.h>
13 #include <stdint.h>
14 #include <stdbool.h>
15 
16 #ifdef __cplusplus
17 extern "C"
18 {
19 #endif
20 
24 typedef enum
25 {
31 
44 xroad_errno_t xroad_storage_create(uint32_t id, xroad_str_t path, uint32_t row_size, size_t rows_at_page,
45  size_t heap_page_size, uint32_t flags);
46 
51 void xroad_storage_destroy(xroad_storage_t* storage);
52 
58 const xroad_storage_info_t* xroad_storage_get_info(xroad_storage_t* storage);
59 
66 xroad_storage_stat_t xroad_storage_get_stat(xroad_storage_t* storage);
67 
73 
78 xroad_str_t xroad_storage_get_name(xroad_storage_t* storage);
79 
86 xroad_storage_t* xroad_storage_open(xroad_str_t path, uint32_t row_size);
87 
94 xroad_errno_t xroad_storage_resize(xroad_storage_t* storage, uint32_t row_size);
95 
101 xroad_errno_t xroad_storage_drop(xroad_str_t path);
102 
109 xroad_errno_t xroad_storage_clear(xroad_storage_t* storage, bool force);
110 
117 void* xroad_storage_create_row(xroad_storage_t* storage, xroad_row_id_t* id);
118 
125 void* xroad_storage_get_row(xroad_storage_t* storage, xroad_row_id_t row_id);
126 
133 xroad_cursor_t* xroad_storage_create_cursor(xroad_storage_t* storage);
134 
139 void xroad_storage_destroy_cursor(xroad_cursor_t* cursor);
140 
147 void* xroad_storage_cursor_get_next(xroad_cursor_t* cursor);
148 void* xroad_storage_cursor_get_prev(xroad_cursor_t* cursor);
149 void* xroad_storage_cursor_get_first(xroad_cursor_t* cursor);
150 void* xroad_storage_cursor_get_last(xroad_cursor_t* cursor);
151 
159 void* xroad_storage_cursor_offset(xroad_cursor_t* cursor, int64_t offset);
160 
167 void* xroad_storage_copy_row(xroad_storage_t* storage, xroad_row_id_t from, xroad_row_id_t to);
168 
177 #define xroad_storage_heap_alloc(storage, sz, data, ...) \
178  xroad_storage_heap_alloc_va(storage, sz, data, ##__VA_ARGS__ , 0)
179 
180 storage_heap_ref_t xroad_storage_heap_alloc_va(
181  xroad_storage_t* storage, uint32_t sz, storage_heap_data_t* data, ...) __nonnull((1));
182 
189 xroad_errno_t xroad_storage_heap_free(xroad_storage_t* storage, storage_heap_ref_t ref);
190 
200 #define xroad_storage_heap_realloc(storage, ref, sz, data, ...) \
201  xroad_storage_heap_realloc_va(storage, ref, sz, data, ##__VA_ARGS__ ,0)
202 
203 storage_heap_ref_t xroad_storage_heap_realloc_va(
204  xroad_storage_t* storage, uint64_t ref, uint32_t sz, storage_heap_data_t* data, ...) __nonnull((1));
205 
212 storage_heap_data_t xroad_storage_heap_get(xroad_storage_t* storage, storage_heap_ref_t ref) __nonnull((1));
213 
220 xroad_errno_t xroad_storage_check_deadlock(xroad_storage_t* storage, bool force_unlock);
221 
227 xroad_errno_t xroad_storage_verify(xroad_str_t path, bool dump_heap);
228 
235 xroad_errno_t xroad_storage_add_page(xroad_storage_t* storage, xroad_storage_page_type_t ptype);
236 
237 #ifdef __cplusplus
238 }
239 #endif
Definition: xroad_storage_fwd.h:28
Definition: xroad_storage_fwd.h:37
Definition: xroad_storage_fwd.h:58
Definition: xroad_string.h:29
void * xroad_storage_copy_row(xroad_storage_t *storage, xroad_row_id_t from, xroad_row_id_t to)
xroad_errno_t xroad_storage_heap_free(xroad_storage_t *storage, storage_heap_ref_t ref)
void * xroad_storage_get_row(xroad_storage_t *storage, xroad_row_id_t row_id)
xroad_storage_stat_t xroad_storage_get_stat(xroad_storage_t *storage)
xroad_str_t xroad_storage_get_err()
xroad_errno_t xroad_storage_clear(xroad_storage_t *storage, bool force)
xroad_storage_flags_t
Definition: xroad_storage.h:25
@ xroad_storage_flags_zero_space
zero allocated space
Definition: xroad_storage.h:26
@ xroad_storage_flags_debug
write storage log into <working_dir>/<pid>.<storage_name>.log file
Definition: xroad_storage.h:28
@ xroad_storage_flags_memory_locked
lock strorage in memory
Definition: xroad_storage.h:27
@ xroad_storage_flags_clear
clear storage
Definition: xroad_storage.h:29
xroad_errno_t xroad_storage_verify(xroad_str_t path, bool dump_heap)
void * xroad_storage_cursor_offset(xroad_cursor_t *cursor, int64_t offset)
void * xroad_storage_cursor_get_next(xroad_cursor_t *cursor)
xroad_storage_t * xroad_storage_open(xroad_str_t path, uint32_t row_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)
const xroad_storage_info_t * xroad_storage_get_info(xroad_storage_t *storage)
void xroad_storage_destroy_cursor(xroad_cursor_t *cursor)
xroad_errno_t xroad_storage_resize(xroad_storage_t *storage, uint32_t row_size)
storage_heap_data_t xroad_storage_heap_get(xroad_storage_t *storage, storage_heap_ref_t ref) __nonnull((1))
xroad_cursor_t * xroad_storage_create_cursor(xroad_storage_t *storage)
xroad_errno_t xroad_storage_add_page(xroad_storage_t *storage, xroad_storage_page_type_t ptype)
xroad_str_t xroad_storage_get_name(xroad_storage_t *storage)
xroad_errno_t xroad_storage_drop(xroad_str_t path)
void xroad_storage_destroy(xroad_storage_t *storage)
void * xroad_storage_create_row(xroad_storage_t *storage, xroad_row_id_t *id)
xroad_errno_t xroad_storage_check_deadlock(xroad_storage_t *storage, bool force_unlock)