Typedefs | |
typedef struct _MicrofeedDatabaseEnvironment | MicrofeedDatabaseEnvironment |
Opaque data type representing a database environment which contains actual databases. | |
typedef struct _MicrofeedDatabase | MicrofeedDatabase |
Opaque data type representing a database. | |
typedef struct _MicrofeedDatabaseIndex | MicrofeedDatabaseIndex |
Opaque data type representing a secondary index of a database. | |
typedef struct _MicrofeedDatabaseIterator | MicrofeedDatabaseIterator |
Opaque data type representing database iterator that iterates over the keys of the database. | |
typedef void(* | MicrofeedDatabaseIndexFunction )(void *key, const size_t key_size, void *data, const size_t data_size, void **index_key, size_t *index_key_size) |
This function is called when a new item is added into a database. | |
typedef int(* | MicrofeedDatabaseCompareFunction )(const void *key1, const size_t key1_size, const void *key2, const size_t key2_size) |
This function is called when two keys in a database are compared by the database engine. | |
Functions | |
MicrofeedDatabaseEnvironment * | microfeed_database_environment_new (const char *name, const char *directory) |
void | microfeed_database_environment_free (MicrofeedDatabaseEnvironment *database_environment) |
MicrofeedDatabaseEnvironment * | microfeed_database_environment_ref (MicrofeedDatabaseEnvironment *database_environment) |
void | microfeed_database_environment_unref (MicrofeedDatabaseEnvironment *database_environment) |
MicrofeedDatabase * | microfeed_database_environment_get_database (MicrofeedDatabaseEnvironment *database_environment, const char *name, MicrofeedDatabaseCompareFunction) |
MicrofeedDatabaseIndex * | microfeed_database_get_index (MicrofeedDatabase *database, const char *name, MicrofeedDatabaseIndexFunction index_function) |
void | microfeed_database_free (MicrofeedDatabase *database) |
MicrofeedDatabase * | microfeed_database_ref (MicrofeedDatabase *database) |
void | microfeed_database_unref (MicrofeedDatabase *database) |
const char * | microfeed_database_get_name (MicrofeedDatabase *database) |
int | microfeed_database_get_data (MicrofeedDatabase *database, const void *key, size_t key_size, void **data, size_t *data_size) |
MicrofeedDatabaseIterator * | microfeed_database_iterate (MicrofeedDatabase *database, const void *start_key, size_t start_key_size, int backwards) |
void | microfeed_database_replace_data (MicrofeedDatabase *database, const void *key, size_t key_size, const void *data, size_t data_size) |
void | microfeed_database_replace_data_partial (MicrofeedDatabase *database, const void *key, size_t key_size, const void *data, size_t data_size, size_t offset) |
void | microfeed_database_remove_data (MicrofeedDatabase *database, const void *key, const size_t key_size) |
void | microfeed_database_remove_data_range (MicrofeedDatabase *database, const void *start_key, size_t start_key_size, const void *end_key, size_t end_key_size) |
MicrofeedDatabase * | microfeed_database_index_get_database (MicrofeedDatabaseIndex *database_index) |
const char * | microfeed_database_index_get_name (MicrofeedDatabaseIndex *database_index) |
int | microfeed_database_index_get_data (MicrofeedDatabaseIndex *database_index, const void *index_key, size_t index_key_size, void **key, size_t *key_size, void **data, size_t *data_size) |
int | microfeed_database_get_data_partial (MicrofeedDatabase *database, const void *key, const size_t key_size, void *data, size_t *data_size, size_t offset) |
MicrofeedDatabaseIterator * | microfeed_database_index_iterate (MicrofeedDatabaseIndex *database_index, const void *start_key, const size_t start_key_size, int backwards) |
void | microfeed_database_index_remove_data (MicrofeedDatabaseIndex *database_index, const void *key, size_t key_size) |
void | microfeed_database_index_remove_data_range (MicrofeedDatabaseIndex *database_index, const void *start_key, const size_t start_key_size, const void *end_key, const size_t end_key_size) |
void | microfeed_database_iterator_free (MicrofeedDatabaseIterator *iterator) |
int | microfeed_database_iterator_get (MicrofeedDatabaseIterator *iterator, const void **key, size_t *key_size, const void **data, size_t *data_size) |
void | microfeed_database_iterator_next (MicrofeedDatabaseIterator *iterator) |
This module is used internally by MicrofeedFeed. It is not accessed directly when developing a provider. However, it can be also utilized outside of the library implementation.
typedef struct _MicrofeedDatabase MicrofeedDatabase |
typedef int(* MicrofeedDatabaseCompareFunction)(const void *key1, const size_t key1_size, const void *key2, const size_t key2_size) |
This function is called when two keys in a database are compared by the database engine.
The function must return negative integer if key1 is less than key2, zero if key1 is equal than key2, and positive integer if key1 is greater than key2.
key1 | The first key to compare. | |
key1_size | The size of the first key. | |
key2 | The second key to compare. | |
key2_size | The size of the second key. |
Definition at line 66 of file microfeeddatabase.h.
typedef struct _MicrofeedDatabaseEnvironment MicrofeedDatabaseEnvironment |
Opaque data type representing a database environment which contains actual databases.
Definition at line 22 of file microfeeddatabase.h.
typedef struct _MicrofeedDatabaseIndex MicrofeedDatabaseIndex |
Opaque data type representing a secondary index of a database.
Definition at line 32 of file microfeeddatabase.h.
typedef void(* MicrofeedDatabaseIndexFunction)(void *key, const size_t key_size, void *data, const size_t data_size, void **index_key, size_t *index_key_size) |
This function is called when a new item is added into a database.
The function must extract the index key from the given primary key and data and return it using the index_key and index_key_size parameters.
key | The primary key of the added item. | |
key_size | The size of the key. | |
data | The data of the added item. | |
data_size | The size of the data. | |
index_key | [return] The index key of the item. | |
index_key_size | [return] The size of the index key. |
Definition at line 52 of file microfeeddatabase.h.
typedef struct _MicrofeedDatabaseIterator MicrofeedDatabaseIterator |
Opaque data type representing database iterator that iterates over the keys of the database.
Definition at line 37 of file microfeeddatabase.h.
void microfeed_database_environment_free | ( | MicrofeedDatabaseEnvironment * | database_environment | ) |
Definition at line 84 of file microfeeddatabase.c.
References _MicrofeedDatabaseEnvironment::db_env, microfeed_memory_free(), and _MicrofeedDatabaseEnvironment::name.
Referenced by microfeed_database_environment_unref(), and microfeed_publisher_free().
MicrofeedDatabase* microfeed_database_environment_get_database | ( | MicrofeedDatabaseEnvironment * | database_environment, | |
const char * | name, | |||
MicrofeedDatabaseCompareFunction | ||||
) |
Definition at line 113 of file microfeeddatabase.c.
References _MicrofeedDatabase::compare_function, _MicrofeedDatabase::database_environment, _MicrofeedDatabaseEnvironment::databases, _MicrofeedDatabase::db, _MicrofeedDatabaseEnvironment::db_env, _MicrofeedDatabase::indices, _MicrofeedDatabase::iterators, microfeed_database_ref(), microfeed_memory_allocate, microfeed_memory_free(), microfeed_mutex_lock(), microfeed_mutex_new(), microfeed_mutex_unlock(), microfeed_store_get, microfeed_store_insert(), _MicrofeedDatabase::mutex, _MicrofeedDatabaseEnvironment::mutex, _MicrofeedDatabase::name, _MicrofeedDatabaseEnvironment::name, _MicrofeedDatabaseEnvironment::reference_count, and _MicrofeedDatabase::reference_count.
Referenced by microfeed_feed_new().
MicrofeedDatabaseEnvironment* microfeed_database_environment_new | ( | const char * | name, | |
const char * | directory | |||
) |
Definition at line 63 of file microfeeddatabase.c.
References _MicrofeedDatabaseEnvironment::databases, _MicrofeedDatabaseEnvironment::db_env, microfeed_database_get_name(), microfeed_memory_allocate, microfeed_memory_free(), microfeed_mutex_new(), microfeed_store_new_sorted(), microfeed_util_create_directory_recursively(), _MicrofeedDatabaseEnvironment::mutex, _MicrofeedDatabaseEnvironment::name, and _MicrofeedDatabaseEnvironment::reference_count.
Referenced by microfeed_publisher_new().
MicrofeedDatabaseEnvironment* microfeed_database_environment_ref | ( | MicrofeedDatabaseEnvironment * | database_environment | ) |
Definition at line 91 of file microfeeddatabase.c.
References microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedDatabaseEnvironment::mutex, and _MicrofeedDatabaseEnvironment::reference_count.
void microfeed_database_environment_unref | ( | MicrofeedDatabaseEnvironment * | database_environment | ) |
Definition at line 101 of file microfeeddatabase.c.
References microfeed_database_environment_free(), microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedDatabaseEnvironment::mutex, and _MicrofeedDatabaseEnvironment::reference_count.
Referenced by microfeed_database_free().
void microfeed_database_free | ( | MicrofeedDatabase * | database | ) |
Definition at line 186 of file microfeeddatabase.c.
References _MicrofeedDatabase::database_environment, _MicrofeedDatabaseEnvironment::databases, _MicrofeedDatabase::db, _MicrofeedDatabaseIndex::db, _MicrofeedDatabase::indices, microfeed_database_environment_unref(), microfeed_memory_free(), microfeed_mutex_free(), microfeed_mutex_lock(), microfeed_mutex_unlock(), microfeed_store_remove(), _MicrofeedDatabase::mutex, _MicrofeedDatabaseEnvironment::mutex, _MicrofeedDatabase::name, _MicrofeedDatabaseIndex::name, and _MicrofeedDatabaseIndex::next.
Referenced by microfeed_database_unref().
int microfeed_database_get_data | ( | MicrofeedDatabase * | database, | |
const void * | key, | |||
size_t | key_size, | |||
void ** | data, | |||
size_t * | data_size | |||
) |
Definition at line 242 of file microfeeddatabase.c.
References _MicrofeedDatabase::db, microfeed_mutex_lock(), microfeed_mutex_unlock(), and _MicrofeedDatabase::mutex.
Referenced by microfeed_feed_replace_item(), microfeed_feed_send_item_data(), microfeed_feed_set_item_status(), and microfeed_feed_unset_item_status().
int microfeed_database_get_data_partial | ( | MicrofeedDatabase * | database, | |
const void * | key, | |||
const size_t | key_size, | |||
void * | data, | |||
size_t * | data_size, | |||
size_t | offset | |||
) |
Definition at line 266 of file microfeeddatabase.c.
References _MicrofeedDatabase::db, microfeed_mutex_lock(), microfeed_mutex_unlock(), and _MicrofeedDatabase::mutex.
Referenced by microfeed_feed_ref_item_data(), and microfeed_feed_unref_item_data().
MicrofeedDatabaseIndex* microfeed_database_get_index | ( | MicrofeedDatabase * | database, | |
const char * | name, | |||
MicrofeedDatabaseIndexFunction | index_function | |||
) |
Definition at line 147 of file microfeeddatabase.c.
References _MicrofeedDatabaseIndex::database, _MicrofeedDatabase::database_environment, _MicrofeedDatabase::db, _MicrofeedDatabaseIndex::db, _MicrofeedDatabaseEnvironment::db_env, _MicrofeedDatabaseIndex::index_function, _MicrofeedDatabase::indices, microfeed_memory_allocate, microfeed_memory_free(), microfeed_mutex_lock(), microfeed_mutex_unlock(), microfeed_util_string_concatenate(), _MicrofeedDatabase::mutex, _MicrofeedDatabaseEnvironment::name, _MicrofeedDatabase::name, _MicrofeedDatabaseIndex::name, and _MicrofeedDatabaseIndex::next.
Referenced by microfeed_feed_new().
const char* microfeed_database_get_name | ( | MicrofeedDatabase * | database | ) |
Definition at line 237 of file microfeeddatabase.c.
References _MicrofeedDatabase::name.
Referenced by microfeed_database_environment_new().
int microfeed_database_index_get_data | ( | MicrofeedDatabaseIndex * | database_index, | |
const void * | index_key, | |||
size_t | index_key_size, | |||
void ** | key, | |||
size_t * | key_size, | |||
void ** | data, | |||
size_t * | data_size | |||
) |
Definition at line 413 of file microfeeddatabase.c.
References _MicrofeedDatabaseIndex::database, _MicrofeedDatabaseIndex::db, microfeed_mutex_lock(), microfeed_mutex_unlock(), and _MicrofeedDatabase::mutex.
Referenced by microfeed_feed_get_item(), microfeed_feed_iterator_jump_and_remove_previous_items(), microfeed_feed_remove_item(), microfeed_feed_replace_item(), microfeed_feed_send_item_data(), and microfeed_feed_set_item_status().
MicrofeedDatabase* microfeed_database_index_get_database | ( | MicrofeedDatabaseIndex * | database_index | ) |
const char* microfeed_database_index_get_name | ( | MicrofeedDatabaseIndex * | database_index | ) |
MicrofeedDatabaseIterator* microfeed_database_index_iterate | ( | MicrofeedDatabaseIndex * | database_index, | |
const void * | start_key, | |||
const size_t | start_key_size, | |||
int | backwards | |||
) |
Definition at line 443 of file microfeeddatabase.c.
References _MicrofeedDatabaseIterator::backwards, _MicrofeedDatabaseIterator::data, _MicrofeedDatabaseIterator::database, _MicrofeedDatabaseIndex::database, _MicrofeedDatabaseIndex::db, _MicrofeedDatabaseIterator::index_db, _MicrofeedDatabaseIterator::index_key, _MicrofeedDatabase::iterators, _MicrofeedDatabaseIterator::key, microfeed_memory_allocate, microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedDatabase::mutex, _MicrofeedDatabaseIterator::next, _MicrofeedDatabaseIterator::next_function, and _MicrofeedDatabaseIterator::previous.
Referenced by microfeed_feed_iterate(), and microfeed_feed_remove_items().
void microfeed_database_index_remove_data | ( | MicrofeedDatabaseIndex * | database_index, | |
const void * | key, | |||
size_t | key_size | |||
) |
Definition at line 483 of file microfeeddatabase.c.
References _MicrofeedDatabaseIndex::database, and _MicrofeedDatabaseIndex::db.
Referenced by microfeed_feed_remove_item(), microfeed_feed_remove_items(), microfeed_feed_replace_item(), and microfeed_feed_unref_item_data().
void microfeed_database_index_remove_data_range | ( | MicrofeedDatabaseIndex * | database_index, | |
const void * | start_key, | |||
const size_t | start_key_size, | |||
const void * | end_key, | |||
const size_t | end_key_size | |||
) |
Definition at line 487 of file microfeeddatabase.c.
References _MicrofeedDatabaseIndex::database, and _MicrofeedDatabaseIndex::db.
Referenced by microfeed_feed_iterator_jump_and_remove_previous_items().
MicrofeedDatabaseIterator* microfeed_database_iterate | ( | MicrofeedDatabase * | database, | |
const void * | start_key, | |||
size_t | start_key_size, | |||
int | backwards | |||
) |
Definition at line 294 of file microfeeddatabase.c.
References _MicrofeedDatabaseIterator::backwards, _MicrofeedDatabaseIterator::data, _MicrofeedDatabaseIterator::database, _MicrofeedDatabaseIterator::index_db, _MicrofeedDatabase::iterators, _MicrofeedDatabaseIterator::key, microfeed_memory_allocate, microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedDatabase::mutex, _MicrofeedDatabaseIterator::next, _MicrofeedDatabaseIterator::next_function, and _MicrofeedDatabaseIterator::previous.
Referenced by microfeed_feed_iterate_timeline(), and microfeed_feed_unset_item_statuses().
void microfeed_database_iterator_free | ( | MicrofeedDatabaseIterator * | iterator | ) |
Definition at line 491 of file microfeeddatabase.c.
References _MicrofeedDatabaseIterator::database, _MicrofeedDatabase::iterators, microfeed_memory_free(), microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedDatabase::mutex, _MicrofeedDatabaseIterator::next, and _MicrofeedDatabaseIterator::previous.
Referenced by microfeed_feed_iterator_free(), microfeed_feed_remove_items(), and microfeed_feed_unset_item_statuses().
int microfeed_database_iterator_get | ( | MicrofeedDatabaseIterator * | iterator, | |
const void ** | key, | |||
size_t * | key_size, | |||
const void ** | data, | |||
size_t * | data_size | |||
) |
Definition at line 510 of file microfeeddatabase.c.
References _MicrofeedDatabaseIterator::data, _MicrofeedDatabaseIterator::database, _MicrofeedDatabaseIterator::key, microfeed_mutex_lock(), microfeed_mutex_unlock(), and _MicrofeedDatabase::mutex.
Referenced by microfeed_feed_iterator_get_item(), microfeed_feed_iterator_jump_and_remove_previous_items(), microfeed_feed_remove_items(), and microfeed_feed_unset_item_statuses().
void microfeed_database_iterator_next | ( | MicrofeedDatabaseIterator * | iterator | ) |
Definition at line 528 of file microfeeddatabase.c.
References _MicrofeedDatabaseIterator::database, microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedDatabase::mutex, and _MicrofeedDatabaseIterator::next_function.
Referenced by microfeed_feed_iterator_jump_and_remove_previous_items(), microfeed_feed_iterator_next(), microfeed_feed_remove_items(), and microfeed_feed_unset_item_statuses().
MicrofeedDatabase* microfeed_database_ref | ( | MicrofeedDatabase * | database | ) |
Definition at line 215 of file microfeeddatabase.c.
References microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedDatabase::mutex, and _MicrofeedDatabase::reference_count.
Referenced by microfeed_database_environment_get_database().
void microfeed_database_remove_data | ( | MicrofeedDatabase * | database, | |
const void * | key, | |||
const size_t | key_size | |||
) |
Definition at line 395 of file microfeeddatabase.c.
References _MicrofeedDatabase::db.
Referenced by microfeed_feed_remove_item(), microfeed_feed_remove_items(), microfeed_feed_set_item_status(), microfeed_feed_unref_item_data(), microfeed_feed_unset_item_status(), and microfeed_feed_unset_item_statuses().
void microfeed_database_remove_data_range | ( | MicrofeedDatabase * | database, | |
const void * | start_key, | |||
size_t | start_key_size, | |||
const void * | end_key, | |||
size_t | end_key_size | |||
) |
Definition at line 399 of file microfeeddatabase.c.
References _MicrofeedDatabase::db.
Referenced by microfeed_feed_iterator_jump_and_remove_previous_items().
void microfeed_database_replace_data | ( | MicrofeedDatabase * | database, | |
const void * | key, | |||
size_t | key_size, | |||
const void * | data, | |||
size_t | data_size | |||
) |
Definition at line 348 of file microfeeddatabase.c.
References _MicrofeedDatabase::database_environment, and _MicrofeedDatabase::db.
Referenced by microfeed_feed_ref_item_data(), microfeed_feed_replace_item(), microfeed_feed_set_item_status(), microfeed_feed_unset_item_status(), and microfeed_feed_unset_item_statuses().
void microfeed_database_replace_data_partial | ( | MicrofeedDatabase * | database, | |
const void * | key, | |||
size_t | key_size, | |||
const void * | data, | |||
size_t | data_size, | |||
size_t | offset | |||
) |
Definition at line 370 of file microfeeddatabase.c.
References _MicrofeedDatabase::database_environment, and _MicrofeedDatabase::db.
Referenced by microfeed_feed_ref_item_data(), and microfeed_feed_unref_item_data().
void microfeed_database_unref | ( | MicrofeedDatabase * | database | ) |
Definition at line 225 of file microfeeddatabase.c.
References microfeed_database_free(), microfeed_mutex_lock(), microfeed_mutex_unlock(), _MicrofeedDatabase::mutex, and _MicrofeedDatabase::reference_count.
Referenced by microfeed_feed_free().