#include "gnunet-service-messenger_message_store.h"
#include "gnunet-service-messenger_list_messages.h"
#include "gnunet_common.h"
#include "gnunet_network_lib.h"
#include "gnunet_scheduler_lib.h"
#include "gnunet_util_lib.h"
#include "messenger_api_message.h"
#include <stdint.h>
#include <string.h>
Go to the source code of this file.
Data Structures | |
struct | GNUNET_MESSENGER_MessageEntryStorage |
struct | GNUNET_MESSENGER_MessageLinkStorage |
struct | GNUNET_MESSENGER_ClosureMessageSave |
struct | GNUNET_MESSENGER_CleanupDiscourseMessages |
Macros | |
#define | load_message_store_attribute_failed(file, attribute, size) |
#define | save_message_store_attribute_failed(file, attribute) |
Functions | |
void | init_message_store (struct GNUNET_MESSENGER_MessageStore *store, const char *directory) |
Initializes a message store as fully empty using a specific directory. More... | |
static enum GNUNET_GenericReturnValue | iterate_destroy_entries (void *cls, const struct GNUNET_HashCode *key, void *value) |
static enum GNUNET_GenericReturnValue | iterate_destroy_messages (void *cls, const struct GNUNET_HashCode *key, void *value) |
static enum GNUNET_GenericReturnValue | iterate_destroy_hashs (void *cls, const struct GNUNET_HashCode *key, void *value) |
void | clear_message_store (struct GNUNET_MESSENGER_MessageStore *store) |
Clears a message store, wipes its content and deallocates its memory. More... | |
void | move_message_store (struct GNUNET_MESSENGER_MessageStore *store, const char *directory) |
Moves all storage from a message store from its current directory to a given directory. More... | |
static int | load_message_store_attribute (const struct GNUNET_DISK_FileHandle *file, void *attribute, size_t attribute_len, uint64_t *size) |
static void | load_message_store_entries (struct GNUNET_MESSENGER_MessageStore *store, const char *filename) |
static void | load_message_store_links (struct GNUNET_MESSENGER_MessageStore *store, const char *filename) |
static void | load_message_store_epochs (struct GNUNET_MESSENGER_MessageStore *store, const char *filename) |
void | load_message_store (struct GNUNET_MESSENGER_MessageStore *store) |
Loads messages from its directory into a message store. More... | |
static enum GNUNET_GenericReturnValue | iterate_save_epochs (void *cls, const struct GNUNET_HashCode *key, void *value) |
static enum GNUNET_GenericReturnValue | iterate_save_links (void *cls, const struct GNUNET_HashCode *key, void *value) |
static enum GNUNET_GenericReturnValue | iterate_save_entries (void *cls, const struct GNUNET_HashCode *key, void *value) |
static enum GNUNET_GenericReturnValue | iterate_save_messages (void *cls, const struct GNUNET_HashCode *key, void *value) |
void | save_message_store (struct GNUNET_MESSENGER_MessageStore *store) |
Saves messages from a message store into its directory. More... | |
enum GNUNET_GenericReturnValue | contains_store_message (const struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_HashCode *hash) |
Checks if a message matching a given hash is stored in a message store. More... | |
const struct GNUNET_MESSENGER_Message * | get_store_message (struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_HashCode *hash) |
Returns the message from a message store matching a given hash. More... | |
const struct GNUNET_MESSENGER_MessageLink * | get_store_message_link (struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_HashCode *hash, enum GNUNET_GenericReturnValue deleted_only) |
Returns the message link from a message store matching a given hash. More... | |
const struct GNUNET_HashCode * | get_store_message_epoch (const struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_HashCode *hash) |
Returns the epoch hash of a message from a message store matching a given hash. More... | |
static void | add_link (struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_HashCode *hash, const struct GNUNET_MESSENGER_Message *message) |
static void | put_store_message_epoch (struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_HashCode *hash, const struct GNUNET_HashCode *epoch) |
static void | task_save_messages (void *cls) |
enum GNUNET_GenericReturnValue | put_store_message (struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_HashCode *hash, struct GNUNET_MESSENGER_Message *message) |
Stores a message into the message store. More... | |
enum GNUNET_GenericReturnValue | delete_store_message (struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_HashCode *hash) |
Deletes a message in the message store. More... | |
static enum GNUNET_GenericReturnValue | iterate_flag_for_cleanup_discourse_message (void *cls, const struct GNUNET_HashCode *key, void *value) |
void | cleanup_store_discourse_messages_before (struct GNUNET_MESSENGER_MessageStore *store, const struct GNUNET_ShortHashCode *discourse, const struct GNUNET_TIME_Absolute timestamp) |
Cleans up and deletes all discourse messages existing in the message store memory before a certain timestamp. More... | |
#define load_message_store_attribute_failed | ( | file, | |
attribute, | |||
size | |||
) |
Definition at line 207 of file gnunet-service-messenger_message_store.c.
#define save_message_store_attribute_failed | ( | file, | |
attribute | |||
) |
Definition at line 211 of file gnunet-service-messenger_message_store.c.
void init_message_store | ( | struct GNUNET_MESSENGER_MessageStore * | store, |
const char * | directory | ||
) |
Initializes a message store as fully empty using a specific directory.
[out] | store | Message store |
[in] | directory | Path to a directory |
Definition at line 40 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::directory, GNUNET_MESSENGER_MessageStore::discourses, GNUNET_MESSENGER_MessageStore::entries, GNUNET_MESSENGER_MessageStore::epochs, GNUNET_assert, GNUNET_CONTAINER_multihashmap_create(), GNUNET_NO, GNUNET_strdup, GNUNET_MESSENGER_MessageStore::links, GNUNET_MESSENGER_MessageStore::messages, GNUNET_MESSENGER_MessageStore::rewrite_entries, GNUNET_MESSENGER_MessageStore::storage_messages, GNUNET_MESSENGER_MessageStore::write_links, and GNUNET_MESSENGER_MessageStore::writing_task.
Referenced by create_srv_room().
|
static |
Definition at line 62 of file gnunet-service-messenger_message_store.c.
References GNUNET_assert, GNUNET_free, GNUNET_YES, and value.
Referenced by clear_message_store().
|
static |
Definition at line 78 of file gnunet-service-messenger_message_store.c.
References destroy_message(), GNUNET_assert, GNUNET_YES, and value.
Referenced by clear_message_store().
|
static |
Definition at line 94 of file gnunet-service-messenger_message_store.c.
References GNUNET_assert, GNUNET_free, GNUNET_YES, and value.
Referenced by clear_message_store().
void clear_message_store | ( | struct GNUNET_MESSENGER_MessageStore * | store | ) |
Clears a message store, wipes its content and deallocates its memory.
[in,out] | store | Message store |
Definition at line 110 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::directory, GNUNET_MESSENGER_MessageStore::discourses, GNUNET_MESSENGER_MessageStore::entries, GNUNET_MESSENGER_MessageStore::epochs, GNUNET_assert, GNUNET_CONTAINER_multihashmap_destroy(), GNUNET_CONTAINER_multihashmap_iterate(), GNUNET_DISK_file_close(), GNUNET_free, GNUNET_SCHEDULER_cancel(), iterate_destroy_entries(), iterate_destroy_hashs(), iterate_destroy_messages(), GNUNET_MESSENGER_MessageStore::links, GNUNET_MESSENGER_MessageStore::messages, GNUNET_MESSENGER_MessageStore::storage_messages, and GNUNET_MESSENGER_MessageStore::writing_task.
Referenced by destroy_srv_room().
void move_message_store | ( | struct GNUNET_MESSENGER_MessageStore * | store, |
const char * | directory | ||
) |
Moves all storage from a message store from its current directory to a given directory.
[in,out] | store | Message store |
[in] | directory | Path to a directory |
Definition at line 152 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::directory, GNUNET_assert, GNUNET_DISK_directory_test(), GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_log, GNUNET_NO, GNUNET_strdup, and GNUNET_YES.
Referenced by load_srv_room(), and save_srv_room().
|
static |
Definition at line 192 of file gnunet-service-messenger_message_store.c.
References GNUNET_DISK_file_read(), GNUNET_SYSERR, result, and size.
|
static |
Definition at line 216 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::entries, GNUNET_MESSENGER_MessageEntryStorage::entry, filename, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_DISK_file_close(), GNUNET_DISK_file_open(), GNUNET_DISK_file_size(), GNUNET_DISK_OPEN_READ, GNUNET_DISK_PERM_USER_READ, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_h2s(), GNUNET_log, GNUNET_memcpy, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_YES, GNUNET_MESSENGER_MessageEntryStorage::hash, GNUNET_MESSENGER_MessageEntry::length, load_message_store_attribute_failed, GNUNET_MESSENGER_MessageEntry::offset, GNUNET_MESSENGER_MessageStore::rewrite_entries, and size.
Referenced by load_message_store().
|
static |
Definition at line 298 of file gnunet-service-messenger_message_store.c.
References filename, GNUNET_MESSENGER_MessageLink::first, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_DISK_file_close(), GNUNET_DISK_file_open(), GNUNET_DISK_file_size(), GNUNET_DISK_OPEN_READ, GNUNET_DISK_PERM_USER_READ, GNUNET_free, GNUNET_memcpy, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_YES, GNUNET_MESSENGER_MessageLinkStorage::hash, GNUNET_MESSENGER_MessageLinkStorage::link, GNUNET_MESSENGER_MessageStore::links, links, load_message_store_attribute_failed, GNUNET_MESSENGER_MessageLink::multiple, GNUNET_MESSENGER_MessageLink::second, and size.
Referenced by load_message_store().
|
static |
Definition at line 365 of file gnunet-service-messenger_message_store.c.
References epochs, GNUNET_MESSENGER_MessageStore::epochs, filename, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_DISK_file_close(), GNUNET_DISK_file_open(), GNUNET_DISK_file_size(), GNUNET_DISK_OPEN_READ, GNUNET_DISK_PERM_USER_READ, GNUNET_free, GNUNET_memcpy, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_YES, load_message_store_attribute_failed, and size.
Referenced by load_message_store().
void load_message_store | ( | struct GNUNET_MESSENGER_MessageStore * | store | ) |
Loads messages from its directory into a message store.
[out] | store | Message store |
Definition at line 424 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::directory, filename, GNUNET_asprintf(), GNUNET_assert, GNUNET_DISK_file_close(), GNUNET_DISK_file_open(), GNUNET_DISK_file_test(), GNUNET_DISK_OPEN_READWRITE, GNUNET_DISK_PERM_USER_READ, GNUNET_DISK_PERM_USER_WRITE, GNUNET_free, GNUNET_YES, load_message_store_entries(), load_message_store_epochs(), load_message_store_links(), and GNUNET_MESSENGER_MessageStore::storage_messages.
Referenced by load_srv_room().
|
static |
Definition at line 487 of file gnunet-service-messenger_message_store.c.
References GNUNET_assert, GNUNET_NO, GNUNET_YES, key, save(), save_message_store_attribute_failed, and value.
Referenced by save_message_store().
|
static |
Definition at line 508 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageLink::first, GNUNET_assert, GNUNET_NO, GNUNET_YES, key, GNUNET_MESSENGER_MessageLink::multiple, save(), save_message_store_attribute_failed, GNUNET_MESSENGER_MessageLink::second, and value.
Referenced by save_message_store().
|
static |
Definition at line 534 of file gnunet-service-messenger_message_store.c.
References GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_h2s(), GNUNET_log, GNUNET_NO, GNUNET_YES, key, GNUNET_MESSENGER_MessageEntry::length, GNUNET_MESSENGER_MessageEntry::offset, save(), save_message_store_attribute_failed, and value.
Referenced by save_message_store().
|
static |
Definition at line 559 of file gnunet-service-messenger_message_store.c.
References encode_message(), GNUNET_MESSENGER_MessageEntryStorage::entry, get_message_size(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_DISK_file_seek(), GNUNET_DISK_file_write(), GNUNET_DISK_SEEK_END, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_h2s(), GNUNET_log, GNUNET_malloc, GNUNET_memcpy, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_SYSERR, GNUNET_YES, GNUNET_MESSENGER_MessageEntryStorage::hash, key, GNUNET_MESSENGER_MessageEntry::length, GNUNET_MESSENGER_MessageEntry::offset, save(), save_message_store_attribute_failed, and value.
Referenced by save_message_store().
void save_message_store | ( | struct GNUNET_MESSENGER_MessageStore * | store | ) |
Saves messages from a message store into its directory.
[in] | store | Message store |
Definition at line 643 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::directory, GNUNET_MESSENGER_MessageStore::entries, GNUNET_MESSENGER_MessageStore::epochs, filename, GNUNET_asprintf(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_iterate(), GNUNET_DISK_file_close(), GNUNET_DISK_file_open(), GNUNET_DISK_file_seek(), GNUNET_DISK_file_sync(), GNUNET_DISK_OPEN_CREATE, GNUNET_DISK_OPEN_READWRITE, GNUNET_DISK_OPEN_WRITE, GNUNET_DISK_PERM_USER_READ, GNUNET_DISK_PERM_USER_WRITE, GNUNET_DISK_SEEK_END, GNUNET_DISK_SEEK_SET, GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_log, GNUNET_NO, GNUNET_SYSERR, GNUNET_YES, iterate_save_entries(), iterate_save_epochs(), iterate_save_links(), iterate_save_messages(), GNUNET_MESSENGER_MessageStore::links, GNUNET_MESSENGER_MessageStore::messages, GNUNET_MESSENGER_MessageStore::rewrite_entries, save(), GNUNET_MESSENGER_MessageStore::storage_messages, GNUNET_MESSENGER_ClosureMessageSave::store, and GNUNET_MESSENGER_MessageStore::write_links.
Referenced by save_srv_room(), and task_save_messages().
enum GNUNET_GenericReturnValue contains_store_message | ( | const struct GNUNET_MESSENGER_MessageStore * | store, |
const struct GNUNET_HashCode * | hash | ||
) |
Checks if a message matching a given hash is stored in a message store.
The function returns GNUNET_YES if a match is found, GNUNET_NO otherwise.
The message has not to be loaded from disk into memory for this check!
[in] | store | Message store |
[in] | hash | Hash of message |
Definition at line 773 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::discourses, GNUNET_MESSENGER_MessageStore::entries, GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_YES, GNUNET_MESSENGER_MessageStore::messages, and GNUNET_MESSENGER_ClosureMessageSave::store.
Referenced by update_room_message().
const struct GNUNET_MESSENGER_Message * get_store_message | ( | struct GNUNET_MESSENGER_MessageStore * | store, |
const struct GNUNET_HashCode * | hash | ||
) |
Returns the message from a message store matching a given hash.
If no matching message is found, NULL gets returned.
This function requires the message to be loaded into memory!
[in,out] | store | Message store |
[in] | hash | Hash of message |
Definition at line 791 of file gnunet-service-messenger_message_store.c.
References create_message(), decode_message(), destroy_message(), GNUNET_MESSENGER_MessageStore::discourses, GNUNET_MESSENGER_MessageStore::entries, get_message_kind_size(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_get(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_multihashmap_remove(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_CRYPTO_hash_cmp(), GNUNET_DISK_file_read(), GNUNET_DISK_file_seek(), GNUNET_DISK_SEEK_SET, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_h2s(), GNUNET_is_zero, GNUNET_log, GNUNET_malloc, GNUNET_MESSENGER_KIND_UNKNOWN, GNUNET_OK, GNUNET_YES, hash_message(), GNUNET_MESSENGER_MessageEntry::length, GNUNET_MESSENGER_MessageStore::messages, GNUNET_MESSENGER_MessageEntry::offset, GNUNET_MESSENGER_MessageStore::rewrite_entries, and GNUNET_MESSENGER_MessageStore::storage_messages.
Referenced by check_srv_room_peer_status(), delete_srv_room_message(), delete_store_message(), forward_about_members(), get_store_message_link(), handle_room_messages(), iterate_epoch_session_members(), notify_about_members(), recv_message_info(), request_room_message_step(), traverse_epoch_message(), update_tunnel_last_message(), and verify_tunnel_message().
const struct GNUNET_MESSENGER_MessageLink * get_store_message_link | ( | struct GNUNET_MESSENGER_MessageStore * | store, |
const struct GNUNET_HashCode * | hash, | ||
enum GNUNET_GenericReturnValue | deleted_only | ||
) |
Returns the message link from a message store matching a given hash.
If the flag is set to GNUNET_YES, only links from deleted messages will be returned or NULL.
Otherwise message links will also returned for messages found in the store under the given hash. The link which will be returned copies link information from the message for temporary usage.
[in,out] | store | Message store |
[in] | hash | Hash of message |
[in] | deleted_only | Flag |
Definition at line 902 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_MessageLink::first, get_store_message(), GNUNET_CONTAINER_multihashmap_get(), GNUNET_is_zero, GNUNET_memcpy, GNUNET_MESSENGER_KIND_MERGE, GNUNET_NO, GNUNET_YES, GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_MessageStore::links, GNUNET_MESSENGER_MessageBody::merge, GNUNET_MESSENGER_MessageLink::multiple, GNUNET_MESSENGER_MessageHeader::previous, GNUNET_MESSENGER_MessageMerge::previous, and GNUNET_MESSENGER_MessageLink::second.
Referenced by check_member_session_completion(), and request_room_message_step().
const struct GNUNET_HashCode * get_store_message_epoch | ( | const struct GNUNET_MESSENGER_MessageStore * | store, |
const struct GNUNET_HashCode * | hash | ||
) |
Returns the epoch hash of a message from a message store matching a given hash.
If no matching message is found, NULL gets returned.
[in] | store | Message store |
[in] | hash | Hash of message |
Definition at line 942 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::epochs, GNUNET_assert, and GNUNET_CONTAINER_multihashmap_get().
Referenced by callback_found_message(), handle_room_messages(), notify_about_members(), pack_srv_room_message(), put_store_message(), and sync_srv_handle_messages().
|
static |
Definition at line 959 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_MessageLink::first, GNUNET_assert, GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_free, GNUNET_is_zero, GNUNET_memcpy, GNUNET_MESSENGER_KIND_MERGE, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_YES, GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_MessageStore::links, GNUNET_MESSENGER_MessageBody::merge, GNUNET_MESSENGER_MessageLink::multiple, GNUNET_MESSENGER_MessageHeader::previous, GNUNET_MESSENGER_MessageMerge::previous, GNUNET_MESSENGER_MessageLink::second, and GNUNET_MESSENGER_MessageStore::write_links.
Referenced by delete_store_message().
|
static |
Definition at line 995 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_MessageStore::epochs, GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_free, GNUNET_is_zero, GNUNET_memcpy, GNUNET_new, GNUNET_OK, and GNUNET_YES.
Referenced by put_store_message().
|
static |
Definition at line 1025 of file gnunet-service-messenger_message_store.c.
References GNUNET_assert, save_message_store(), and GNUNET_MESSENGER_MessageStore::writing_task.
Referenced by put_store_message().
enum GNUNET_GenericReturnValue put_store_message | ( | struct GNUNET_MESSENGER_MessageStore * | store, |
const struct GNUNET_HashCode * | hash, | ||
struct GNUNET_MESSENGER_Message * | message | ||
) |
Stores a message into the message store.
The result indicates if the operation was successful.
[in,out] | store | Message store |
[in] | hash | Hash of message |
[in,out] | message | Message |
Definition at line 1039 of file gnunet-service-messenger_message_store.c.
References GNUNET_MESSENGER_Message::body, GNUNET_MESSENGER_MessageStore::discourses, GNUNET_MESSENGER_MessageJoin::epoch, GNUNET_MESSENGER_MessageLeave::epoch, GNUNET_MESSENGER_MessageMerge::epochs, GNUNET_MESSENGER_MessageStore::epochs, get_message_discourse(), get_store_message_epoch(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_contains(), GNUNET_CONTAINER_multihashmap_get(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST, GNUNET_CRYPTO_hash_cmp(), GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_h2s(), GNUNET_is_zero, GNUNET_log, GNUNET_memcpy, GNUNET_MESSENGER_KIND_JOIN, GNUNET_MESSENGER_KIND_LEAVE, GNUNET_MESSENGER_KIND_MERGE, GNUNET_new, GNUNET_OK, GNUNET_SCHEDULER_add_with_priority(), GNUNET_SCHEDULER_PRIORITY_BACKGROUND, GNUNET_SYSERR, GNUNET_YES, GNUNET_MESSENGER_Message::header, GNUNET_MESSENGER_MessageBody::join, GNUNET_MESSENGER_MessageHeader::kind, GNUNET_MESSENGER_MessageBody::leave, map, GNUNET_MESSENGER_MessageBody::merge, GNUNET_MESSENGER_MessageStore::messages, GNUNET_MESSENGER_MessageHeader::previous, GNUNET_MESSENGER_MessageMerge::previous, put_store_message_epoch(), result, task_save_messages(), and GNUNET_MESSENGER_MessageStore::writing_task.
Referenced by update_room_message().
enum GNUNET_GenericReturnValue delete_store_message | ( | struct GNUNET_MESSENGER_MessageStore * | store, |
const struct GNUNET_HashCode * | hash | ||
) |
Deletes a message in the message store.
It will be removed from disk space and memory. The result indicates if the operation was successful.
[in,out] | store | Message store |
[in] | hash | Hash of message |
Definition at line 1164 of file gnunet-service-messenger_message_store.c.
References add_link(), GNUNET_MESSENGER_MessageStore::entries, get_store_message(), GNUNET_assert, GNUNET_CONTAINER_multihashmap_get(), GNUNET_CONTAINER_multihashmap_remove(), GNUNET_CONTAINER_multihashmap_remove_all(), GNUNET_CRYPTO_zero_keys(), GNUNET_DISK_file_seek(), GNUNET_DISK_file_sync(), GNUNET_DISK_file_write(), GNUNET_DISK_SEEK_SET, GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_h2s(), GNUNET_log, GNUNET_malloc, GNUNET_OK, GNUNET_SYSERR, GNUNET_YES, is_epoch_message(), GNUNET_MESSENGER_MessageEntry::length, GNUNET_MESSENGER_MessageStore::messages, GNUNET_MESSENGER_MessageEntry::offset, result, GNUNET_MESSENGER_MessageStore::rewrite_entries, and GNUNET_MESSENGER_MessageStore::storage_messages.
Referenced by callback_operation().
|
static |
Definition at line 1244 of file gnunet-service-messenger_message_store.c.
References add_to_list_messages(), cleanup(), destroy_message(), get_message_discourse(), GNUNET_assert, GNUNET_memcmp, GNUNET_TIME_absolute_cmp, GNUNET_TIME_absolute_ntoh(), GNUNET_YES, GNUNET_MESSENGER_Message::header, key, GNUNET_MESSENGER_MessageHeader::timestamp, timestamp(), and value.
Referenced by cleanup_store_discourse_messages_before().
void cleanup_store_discourse_messages_before | ( | struct GNUNET_MESSENGER_MessageStore * | store, |
const struct GNUNET_ShortHashCode * | discourse, | ||
const struct GNUNET_TIME_Absolute | timestamp | ||
) |
Cleans up and deletes all discourse messages existing in the message store memory before a certain timestamp.
[in,out] | store | Message store |
[in] | discourse | Hash of discourse |
[in] | timestamp | Timestamp |
Definition at line 1278 of file gnunet-service-messenger_message_store.c.
References cleanup(), clear_list_messages(), GNUNET_MESSENGER_CleanupDiscourseMessages::discourse, GNUNET_MESSENGER_MessageStore::discourses, GNUNET_assert, GNUNET_CONTAINER_multihashmap_iterate(), GNUNET_CONTAINER_multihashmap_remove_all(), GNUNET_memcpy, GNUNET_MESSENGER_ListMessage::hash, init_list_messages(), iterate_flag_for_cleanup_discourse_message(), list, GNUNET_MESSENGER_ListMessage::next, and timestamp().
Referenced by cleanup_srv_room_discourse_messages().