XROAD
xroad_cache.h File Reference
Include dependency graph for xroad_cache.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define __xroad_cursor_dtor__   __dtor__(xroad_cursor_destructor)
 

Typedefs

typedef struct xroad_cache_s xroad_cache_t
 

Functions

xroad_cache_t * xroad_cache_open (xroad_str_t root_dir)
 
void xroad_cache_destroy (xroad_cache_t *cache)
 
void * xroad_cache_create_object (xroad_cache_t *cache, xroad_object_type_t type)
 
void * xroad_cache_get_object (xroad_cache_t *cache, xroad_object_type_t type, xroad_object_id_t id)
 
void * xroad_cache_clone_object (xroad_cache_t *cache, const void *obj)
 
void * xroad_cache_copy_object (xroad_cache_t *cache, const void *obj, xroad_object_id_t id)
 
const xroad_storage_info_txroad_cache_get_info (xroad_cache_t *cache, xroad_object_type_t type)
 
xroad_storage_stat_t xroad_cache_get_stat (xroad_cache_t *cache, xroad_object_type_t type)
 
xroad_cursor_t * xroad_cache_create_cursor (xroad_cache_t *cache, xroad_object_type_t type)
 
void xroad_cache_destroy_cursor (xroad_cursor_t *cursor)
 
void xroad_cursor_destructor (xroad_cursor_t **cursor)
 
void * xroad_cache_cursor_get_first (xroad_cursor_t *cursor)
 
void * xroad_cache_cursor_get_last (xroad_cursor_t *cursor)
 
void * xroad_cache_cursor_get_next (xroad_cursor_t *cursor)
 
void * xroad_cache_cursor_get_prev (xroad_cursor_t *cursor)
 
void * xroad_cache_cursor_offset (xroad_cursor_t *cursor, int64_t offset)
 
xroad_errno_t xroad_cache_clear (xroad_cache_t *cache, xroad_object_type_t type, bool force)
 
storage_heap_ref_t xroad_cache_heap_alloc (xroad_cache_t *cache, xroad_object_type_t type, storage_heap_ref_t ref, const void *data, uint32_t len)
 
xroad_errno_t xroad_cache_heap_free (xroad_cache_t *cache, xroad_object_type_t type, storage_heap_ref_t ref)
 
storage_heap_data_t xroad_cache_heap_get (xroad_cache_t *cache, xroad_object_type_t type, storage_heap_ref_t ref)
 
void xroad_cache_check_fill (xroad_cache_t *cache, double fill_factor)
 
void xroad_cache_check_storage_deadlock (xroad_cache_t *cache)
 
xroad_errno_t xroad_cache_check_object_deadlocks_by_type (xroad_cache_t *cache, xroad_object_type_t type)
 
xroad_errno_t xroad_cache_check_object_deadlocks_by_pid (xroad_cache_t *cache)
 
void * xroad_cache_lock_object (xroad_cache_t *cache, void *obj)
 
void xroad_cache_unlock_object (xroad_cache_t *cache, void *obj)
 

Macro Definition Documentation

◆ __xroad_cursor_dtor__

#define __xroad_cursor_dtor__   __dtor__(xroad_cursor_destructor)

node automatic destructor

Function Documentation

◆ xroad_cache_check_fill()

void xroad_cache_check_fill ( xroad_cache_t *  cache,
double  fill_factor 
)

check storages for filling. And if fill factor exceeded, new pages added

Parameters
[in]cache- cache to check
[in]fill_factor- fill factor in percent

◆ xroad_cache_check_object_deadlocks_by_pid()

xroad_errno_t xroad_cache_check_object_deadlocks_by_pid ( xroad_cache_t *  cache)

check object cache for locks by pid using lock_by_pid table

Parameters
[in]cache- cache to check
Returns
XROAD_OK - no deadlock detected, XROAD_ERROR_CHECK_FAILED - deadlock detected

◆ xroad_cache_check_object_deadlocks_by_type()

xroad_errno_t xroad_cache_check_object_deadlocks_by_type ( xroad_cache_t *  cache,
xroad_object_type_t  type 
)

check object cache for locks by type

Parameters
[in]cache- cache to check
[in]type- object type to check
Returns
check result

◆ xroad_cache_check_storage_deadlock()

void xroad_cache_check_storage_deadlock ( xroad_cache_t *  cache)

check cache storages for deadlocks

Parameters
[in]cache- cache pointer

◆ xroad_cache_clear()

xroad_errno_t xroad_cache_clear ( xroad_cache_t *  cache,
xroad_object_type_t  type,
bool  force 
)

clear storage

Parameters
[in]cache- cache instance
[in]type- storage type
[in]force- force clear
Returns
XROAD_OK - cleared, else failed

◆ xroad_cache_clone_object()

void* xroad_cache_clone_object ( xroad_cache_t *  cache,
const void *  obj 
)

clone object in cache

Parameters
[in]cache- cache instance
[in]obj- obejct to clone
Returns
cloned object

◆ xroad_cache_copy_object()

void* xroad_cache_copy_object ( xroad_cache_t *  cache,
const void *  obj,
xroad_object_id_t  id 
)

copy object in cache

Parameters
[in]cache- cache instance
[in]obj- object to copy
[in]id- id of source object
Returns
copied object, else NULL in case of error

◆ xroad_cache_create_cursor()

xroad_cursor_t* xroad_cache_create_cursor ( xroad_cache_t *  cache,
xroad_object_type_t  type 
)

create cache cursor. cusrsor MUST be destroed after usage

Parameters
[in]cache- cache instance
[in]type- storage type
Returns
cursor

◆ xroad_cache_create_object()

void* xroad_cache_create_object ( xroad_cache_t *  cache,
xroad_object_type_t  type 
)

create object in cache

Parameters
[in]cache- cache instance
[in]type- type og object to create
Returns
created object, else NULL

◆ xroad_cache_cursor_get_first()

void* xroad_cache_cursor_get_first ( xroad_cursor_t *  cursor)

get first object by cursor

Parameters
[in]cursor- cursor instance
Returns
object, if any

◆ xroad_cache_cursor_get_last()

void* xroad_cache_cursor_get_last ( xroad_cursor_t *  cursor)

get last object by cursor

Parameters
[in]cursor- cursor instance
Returns
object, if any

◆ xroad_cache_cursor_get_next()

void* xroad_cache_cursor_get_next ( xroad_cursor_t *  cursor)

get next object by cursor

Parameters
[in]cursor- cursor instance
Returns
object, if any

◆ xroad_cache_cursor_get_prev()

void* xroad_cache_cursor_get_prev ( xroad_cursor_t *  cursor)

get previous object by cursor

Parameters
[in]cursor- cursor instance
Returns
object, if any

◆ xroad_cache_cursor_offset()

void* xroad_cache_cursor_offset ( xroad_cursor_t *  cursor,
int64_t  offset 
)

offset cursor by number of rows

Parameters
[in]offset- cursor offset value. Can be negative
Returns
row, NULL - cursor reached end, begin of storage or storage of empty or something goes wrong

◆ xroad_cache_destroy()

void xroad_cache_destroy ( xroad_cache_t *  cache)

close all opened storages and destroy cache instance

Parameters
[in]cache- instance of cache to destroy

◆ xroad_cache_destroy_cursor()

void xroad_cache_destroy_cursor ( xroad_cursor_t *  cursor)

destroy cursor

Parameters
[in]cursor- cursor to destroy

◆ xroad_cache_get_info()

const xroad_storage_info_t* xroad_cache_get_info ( xroad_cache_t *  cache,
xroad_object_type_t  type 
)

returns cache storage meta

Parameters
[in]cache- cache instance
[in]type- storage type
Returns
storage meta

◆ xroad_cache_get_object()

void* xroad_cache_get_object ( xroad_cache_t *  cache,
xroad_object_type_t  type,
xroad_object_id_t  id 
)

gets object by ID

Parameters
[in]cache- cache instance
[in]type- object type
[in]id- object id
Returns
object, if found, else NULL

◆ xroad_cache_get_stat()

xroad_storage_stat_t xroad_cache_get_stat ( xroad_cache_t *  cache,
xroad_object_type_t  type 
)

returns cache storage statistic

Parameters
[in]cache- cache instance
[in]type- storage type
Returns
storage meta

◆ xroad_cache_heap_alloc()

storage_heap_ref_t xroad_cache_heap_alloc ( xroad_cache_t *  cache,
xroad_object_type_t  type,
storage_heap_ref_t  ref,
const void *  data,
uint32_t  len 
)

save data in storage heap

Parameters
[in]cache- cache instance
[in]type- object type
[in]ref- reference to already allocated data. It will be reallocated
[in]data- data to save
[in]len- data length
Returns
reference to allocated data

◆ xroad_cache_heap_free()

xroad_errno_t xroad_cache_heap_free ( xroad_cache_t *  cache,
xroad_object_type_t  type,
storage_heap_ref_t  ref 
)

free allocated data

Parameters
[in]cache- cache instance
[in]type- object type
[in]ref- reference to freed data
Returns
XROAD_OK, else failed

◆ xroad_cache_heap_get()

storage_heap_data_t xroad_cache_heap_get ( xroad_cache_t *  cache,
xroad_object_type_t  type,
storage_heap_ref_t  ref 
)

get saved data with reference in heap

Parameters
[in]cache- cache instance
[in]type- object type
[in]ref- reference to data in heap
Returns
saved data pointer

◆ xroad_cache_lock_object()

void* xroad_cache_lock_object ( xroad_cache_t *  cache,
void *  obj 
)

lock object

Parameters
[in]cache- cache pointer
[in]obj- object to lock
lockpointer, NULL - failed

◆ xroad_cache_open()

xroad_cache_t* xroad_cache_open ( xroad_str_t  root_dir)

open cache

Parameters
[in]root_dir- system root directory
Returns
cache instance

◆ xroad_cache_unlock_object()

void xroad_cache_unlock_object ( xroad_cache_t *  cache,
void *  obj 
)

unlock object

Parameters
[in]cache- cache pointer
[in]obj- object to unlock