Asterisk - The Open Source Telephony Project
18.5.0
|
Bucket File API. More...
#include "asterisk/sorcery.h"
Go to the source code of this file.
Data Structures | |
struct | ast_bucket |
Bucket structure, contains other buckets and files. More... | |
struct | ast_bucket_file |
Bucket file structure, contains reference to file and information about it. More... | |
struct | ast_bucket_metadata |
Bucket metadata structure, AO2 key value pair. More... | |
Macros | |
#define | ast_bucket_scheme_register(name, bucket, file, create_cb, destroy_cb) __ast_bucket_scheme_register(name, bucket, file, create_cb, destroy_cb, AST_MODULE_SELF) |
Register support for a specific scheme. More... | |
Typedefs | |
typedef int(* | bucket_file_create_cb) (struct ast_bucket_file *file) |
A callback function invoked when creating a file snapshot. More... | |
typedef void(* | bucket_file_destroy_cb) (struct ast_bucket_file *file) |
A callback function invoked when destroying a file snapshot. More... | |
Functions | |
int | __ast_bucket_scheme_register (const char *name, struct ast_sorcery_wizard *bucket, struct ast_sorcery_wizard *file, bucket_file_create_cb create_cb, bucket_file_destroy_cb destroy_cb, struct ast_module *module) |
Register support for a specific scheme. More... | |
struct ast_bucket * | ast_bucket_alloc (const char *uri) |
Allocate a new bucket. More... | |
struct ast_bucket * | ast_bucket_clone (struct ast_bucket *bucket) |
Clone a bucket. More... | |
int | ast_bucket_create (struct ast_bucket *bucket) |
Create a new bucket in backend storage. More... | |
int | ast_bucket_delete (struct ast_bucket *bucket) |
Delete a bucket from backend storage. More... | |
struct ast_bucket_file * | ast_bucket_file_alloc (const char *uri) |
Allocate a new bucket file. More... | |
struct ast_bucket_file * | ast_bucket_file_clone (struct ast_bucket_file *file) |
Clone a bucket file. More... | |
struct ast_bucket_file * | ast_bucket_file_copy (struct ast_bucket_file *file, const char *uri) |
Copy a bucket file to a new URI. More... | |
int | ast_bucket_file_create (struct ast_bucket_file *file) |
Create a new bucket file in backend storage. More... | |
int | ast_bucket_file_delete (struct ast_bucket_file *file) |
Delete a bucket file from backend storage. More... | |
int | ast_bucket_file_is_stale (struct ast_bucket_file *file) |
Retrieve whether or not the backing datastore views the bucket file as stale. More... | |
struct ast_json * | ast_bucket_file_json (const struct ast_bucket_file *file) |
Get a JSON representation of a bucket file. More... | |
void | ast_bucket_file_metadata_callback (struct ast_bucket_file *file, ao2_callback_fn cb, void *arg) |
Execute a callback function on the metadata associated with a file. More... | |
struct ast_bucket_metadata * | ast_bucket_file_metadata_get (struct ast_bucket_file *file, const char *name) |
Retrieve a metadata attribute from a file. More... | |
int | ast_bucket_file_metadata_set (struct ast_bucket_file *file, const char *name, const char *value) |
Set a metadata attribute on a file to a specific value. More... | |
int | ast_bucket_file_metadata_unset (struct ast_bucket_file *file, const char *name) |
Unset a specific metadata attribute on a file. More... | |
int | ast_bucket_file_observer_add (const struct ast_sorcery_observer *callbacks) |
Add an observer for bucket file creation and deletion operations. More... | |
void | ast_bucket_file_observer_remove (const struct ast_sorcery_observer *callbacks) |
Remove an observer from bucket file creation and deletion. More... | |
struct ast_bucket_file * | ast_bucket_file_retrieve (const char *uri) |
Retrieve a bucket file. More... | |
int | ast_bucket_file_temporary_create (struct ast_bucket_file *file) |
Common file snapshot creation callback for creating a temporary file. More... | |
void | ast_bucket_file_temporary_destroy (struct ast_bucket_file *file) |
Common file snapshot destruction callback for deleting a temporary file. More... | |
int | ast_bucket_file_update (struct ast_bucket_file *file) |
Update an existing bucket file in backend storage. More... | |
int | ast_bucket_init (void) |
Initialize bucket support. More... | |
int | ast_bucket_is_stale (struct ast_bucket *bucket) |
Retrieve whether or not the backing datastore views the bucket as stale. More... | |
struct ast_json * | ast_bucket_json (const struct ast_bucket *bucket) |
Get a JSON representation of a bucket. More... | |
int | ast_bucket_observer_add (const struct ast_sorcery_observer *callbacks) |
Add an observer for bucket creation and deletion operations. More... | |
void | ast_bucket_observer_remove (const struct ast_sorcery_observer *callbacks) |
Remove an observer from bucket creation and deletion. More... | |
struct ast_bucket * | ast_bucket_retrieve (const char *uri) |
Retrieve information about a bucket. More... | |
Bucket File API.
Definition in file bucket.h.
#define ast_bucket_scheme_register | ( | name, | |
bucket, | |||
file, | |||
create_cb, | |||
destroy_cb | |||
) | __ast_bucket_scheme_register(name, bucket, file, create_cb, destroy_cb, AST_MODULE_SELF) |
Register support for a specific scheme.
name | Name of the scheme, used to find based on scheme in URIs |
bucket | Sorcery wizard used for buckets |
file | Sorcery wizard used for files |
create_cb | Required file snapshot creation callback |
destroy_cb | Optional file snapshot destruction callback |
0 | success |
-1 | failure |
Definition at line 137 of file bucket.h.
Referenced by AST_TEST_DEFINE(), and load_module().
typedef int(* bucket_file_create_cb) (struct ast_bucket_file *file) |
typedef void(* bucket_file_destroy_cb) (struct ast_bucket_file *file) |
int __ast_bucket_scheme_register | ( | const char * | name, |
struct ast_sorcery_wizard * | bucket, | ||
struct ast_sorcery_wizard * | file, | ||
bucket_file_create_cb | create_cb, | ||
bucket_file_destroy_cb | destroy_cb, | ||
struct ast_module * | module | ||
) |
Register support for a specific scheme.
name | Name of the scheme, used to find based on scheme in URIs |
bucket | Sorcery wizard used for buckets |
file | Sorcery wizard used for files |
create_cb | Required file snapshot creation callback |
destroy_cb | Optional file snapshot destruction callback |
module | The module which implements this scheme |
0 | success |
-1 | failure |
Definition at line 277 of file bucket.c.
References ao2_alloc, ao2_cleanup, ao2_find, ao2_link_flags, ast_module_shutdown_ref, ast_strlen_zero, ast_verb, ast_bucket_scheme::bucket, ast_sorcery_wizard::create, ast_sorcery_wizard::delete, ast_bucket_scheme::file, lock, NULL, OBJ_KEY, OBJ_NOLOCK, RAII_VAR, ast_sorcery_wizard::retrieve_id, and SCOPED_AO2WRLOCK.
struct ast_bucket* ast_bucket_alloc | ( | const char * | uri | ) |
Allocate a new bucket.
uri | Complete URI for the bucket |
non-NULL | success |
NULL | failure |
Definition at line 431 of file bucket.c.
References ao2_cleanup, ao2_find, ao2_ref, ast_alloca, ast_copy_string(), ast_sorcery_alloc(), ast_strdupa, ast_string_field_set, ast_strlen_zero, ast_bucket_scheme::bucket, len(), NULL, OBJ_KEY, RAII_VAR, ast_bucket::scheme, ast_bucket::scheme_impl, state, and tmp().
Referenced by AST_TEST_DEFINE(), and bucket_test_wizard_retrieve_id().
struct ast_bucket* ast_bucket_clone | ( | struct ast_bucket * | bucket | ) |
Clone a bucket.
This will create a copy of the passed in ast_bucket
structure. While all properties of the ast_bucket
structure are copied, any metadata in the original structure simply has its reference count increased.
file | The bucket to clone |
non-NULL | success |
NULL | failure |
ast_bucket
instances are immutable Definition at line 510 of file bucket.c.
References ast_sorcery_copy().
Referenced by AST_TEST_DEFINE().
int ast_bucket_create | ( | struct ast_bucket * | bucket | ) |
Create a new bucket in backend storage.
bucket | The bucket |
0 | success |
-1 | failure |
Definition at line 488 of file bucket.c.
References ast_sorcery_create().
Referenced by AST_TEST_DEFINE().
int ast_bucket_delete | ( | struct ast_bucket * | bucket | ) |
Delete a bucket from backend storage.
bucket | The bucket |
0 | success |
-1 | failure |
Definition at line 539 of file bucket.c.
References ast_sorcery_delete().
Referenced by AST_TEST_DEFINE().
struct ast_bucket_file* ast_bucket_file_alloc | ( | const char * | uri | ) |
Allocate a new bucket file.
uri | Complete URI for the bucket file |
non-NULL | success |
NULL | failure |
Definition at line 663 of file bucket.c.
References ao2_cleanup, ao2_find, ao2_ref, ast_alloca, ast_copy_string(), ast_sorcery_alloc(), ast_strdupa, ast_string_field_set, ast_strlen_zero, ast_bucket_scheme::file, len(), NULL, OBJ_KEY, RAII_VAR, ast_bucket_file::scheme, ast_bucket_file::scheme_impl, state, and tmp().
Referenced by ast_bucket_file_copy(), ast_media_cache_create_or_update(), AST_TEST_DEFINE(), bucket_http_test_wizard_retrieve_id(), bucket_http_wizard_retrieve_id(), bucket_test_wizard_retrieve_id(), and media_cache_item_populate_from_astdb().
struct ast_bucket_file* ast_bucket_file_clone | ( | struct ast_bucket_file * | file | ) |
Clone a bucket file.
This will create a copy of the passed in ast_bucket_file
structure. While all properties of the ast_bucket_file
structure are copied, any metadata in the original structure simply has its reference count increased. Note that this copies the structure, not the underlying file.
file | The bucket file to clone |
non-NULL | success |
NULL | failure |
ast_bucket_file
instances are immutable Definition at line 810 of file bucket.c.
References ast_sorcery_copy().
Referenced by ast_media_cache_create_or_update(), and AST_TEST_DEFINE().
struct ast_bucket_file* ast_bucket_file_copy | ( | struct ast_bucket_file * | file, |
const char * | uri | ||
) |
Copy a bucket file to a new URI.
file | The source bucket file |
uri | The new URI |
non-NULL | success |
NULL | failure |
Definition at line 791 of file bucket.c.
References ao2_cleanup, ao2_container_clone, ao2_ref, ast_bucket_file_alloc(), bucket_copy(), copy(), ast_bucket_file::metadata, NULL, ast_bucket_file::path, and RAII_VAR.
Referenced by AST_TEST_DEFINE().
int ast_bucket_file_create | ( | struct ast_bucket_file * | file | ) |
Create a new bucket file in backend storage.
file | The bucket file |
0 | success |
-1 | failure |
Definition at line 725 of file bucket.c.
References ast_sorcery_create().
Referenced by ast_media_cache_create_or_update(), and AST_TEST_DEFINE().
int ast_bucket_file_delete | ( | struct ast_bucket_file * | file | ) |
Delete a bucket file from backend storage.
file | The bucket file |
0 | success |
-1 | failure |
Definition at line 844 of file bucket.c.
References ast_sorcery_delete().
Referenced by ast_media_cache_delete(), ast_media_cache_retrieve(), AST_TEST_DEFINE(), and bucket_file_cleanup().
int ast_bucket_file_is_stale | ( | struct ast_bucket_file * | file | ) |
Retrieve whether or not the backing datastore views the bucket file as stale.
This function will ask whatever data storage backs the bucket file's schema type if the current instance of the object is stale. It will not update the bucket file object itself, as said objects are immutable. If the caller of this function would like to update the object, it should perform a retrieve operation.
bucket_file | The bucket file object to check |
0 | if bucket_file is not stale |
1 | if bucket_file is stale |
Definition at line 824 of file bucket.c.
References ast_sorcery_is_stale().
Referenced by ast_media_cache_retrieve(), and AST_TEST_DEFINE().
struct ast_json* ast_bucket_file_json | ( | const struct ast_bucket_file * | file | ) |
Get a JSON representation of a bucket file.
file | The specific bucket file |
non-NULL | success |
NULL | failure |
Definition at line 849 of file bucket.c.
References ao2_iterator_destroy(), ao2_iterator_init(), ao2_iterator_next, ao2_ref, ast_json_object_create(), ast_json_object_set(), ast_json_ref(), ast_json_string_create(), ast_json_unref(), ast_sorcery_object_get_id(), ast_sorcery_objectset_json_create(), id, ast_bucket_file::metadata, ast_bucket_metadata::name, NULL, RAII_VAR, value, and ast_bucket_metadata::value.
Referenced by AST_TEST_DEFINE().
void ast_bucket_file_metadata_callback | ( | struct ast_bucket_file * | file, |
ao2_callback_fn | cb, | ||
void * | arg | ||
) |
Execute a callback function on the metadata associated with a file.
file | The bucket file |
cb | An ao2 callback function that will be called with each ast_bucket_metadata associated with file |
arg | An optional argument to pass to cb |
Definition at line 364 of file bucket.c.
References ao2_callback, and ast_bucket_file::metadata.
Referenced by media_cache_item_sync_to_astdb().
struct ast_bucket_metadata* ast_bucket_file_metadata_get | ( | struct ast_bucket_file * | file, |
const char * | name | ||
) |
Retrieve a metadata attribute from a file.
file | The bucket file |
name | Name of the attribute |
non-NULL | if found |
NULL | if not found |
Definition at line 359 of file bucket.c.
References ao2_find, ast_bucket_file::metadata, and OBJ_KEY.
Referenced by AST_TEST_DEFINE(), bucket_file_always_revalidate(), bucket_file_expired(), bucket_file_set_expiration(), bucket_file_update_path(), and bucket_http_wizard_is_stale().
int ast_bucket_file_metadata_set | ( | struct ast_bucket_file * | file, |
const char * | name, | ||
const char * | value | ||
) |
Set a metadata attribute on a file to a specific value.
file | The bucket file |
name | Name of the attribute |
value | Value of the attribute |
0 | success |
-1 | failure |
Definition at line 334 of file bucket.c.
References ao2_cleanup, ao2_find, ao2_link, bucket_metadata_alloc(), ast_bucket_file::metadata, OBJ_KEY, OBJ_NODATA, OBJ_UNLINK, and RAII_VAR.
Referenced by ast_media_cache_create_or_update(), AST_TEST_DEFINE(), bucket_file_set_expiration(), bucket_file_update_path(), curl_header_callback(), and media_cache_item_populate_from_astdb().
int ast_bucket_file_metadata_unset | ( | struct ast_bucket_file * | file, |
const char * | name | ||
) |
Unset a specific metadata attribute on a file.
file | The bucket file |
name | Name of the attribute |
0 | success |
-1 | failure |
Definition at line 348 of file bucket.c.
References ao2_cleanup, ao2_find, ast_bucket_file::metadata, OBJ_KEY, OBJ_UNLINK, and RAII_VAR.
Referenced by AST_TEST_DEFINE().
int ast_bucket_file_observer_add | ( | const struct ast_sorcery_observer * | callbacks | ) |
Add an observer for bucket file creation and deletion operations.
callbacks | Implementation of the sorcery observer interface |
0 | success |
-1 | failure |
Definition at line 829 of file bucket.c.
References ast_sorcery_observer_add().
void ast_bucket_file_observer_remove | ( | const struct ast_sorcery_observer * | callbacks | ) |
Remove an observer from bucket file creation and deletion.
callbacks | Implementation of the sorcery observer interface |
Definition at line 834 of file bucket.c.
References ast_sorcery_observer_remove().
struct ast_bucket_file* ast_bucket_file_retrieve | ( | const char * | uri | ) |
Retrieve a bucket file.
uri | Complete URI of the bucket file |
non-NULL | if found |
NULL | if not found |
Definition at line 815 of file bucket.c.
References ast_sorcery_retrieve_by_id(), ast_strlen_zero, and NULL.
Referenced by ast_media_cache_exists(), ast_media_cache_retrieve(), and AST_TEST_DEFINE().
int ast_bucket_file_temporary_create | ( | struct ast_bucket_file * | file | ) |
Common file snapshot creation callback for creating a temporary file.
file | Pointer to the file snapshot |
0 | success |
-1 | failure |
Definition at line 899 of file bucket.c.
References ast_config_AST_CACHE_DIR, and ast_bucket_file::path.
Referenced by AST_TEST_DEFINE(), bucket_http_test_wizard_retrieve_id(), bucket_http_wizard_retrieve_id(), and load_module().
void ast_bucket_file_temporary_destroy | ( | struct ast_bucket_file * | file | ) |
Common file snapshot destruction callback for deleting a temporary file.
file | Pointer to the file snapshot |
Definition at line 914 of file bucket.c.
References AO2_STRING_FIELD_CMP_FN, AO2_STRING_FIELD_HASH_FN, ast_strlen_zero, ast_bucket_scheme::name, and ast_bucket_file::path.
Referenced by load_module().
int ast_bucket_file_update | ( | struct ast_bucket_file * | file | ) |
Update an existing bucket file in backend storage.
file | The bucket file |
0 | success |
-1 | failure |
Definition at line 839 of file bucket.c.
References ast_sorcery_update().
Referenced by AST_TEST_DEFINE().
int ast_bucket_init | ( | void | ) |
Initialize bucket support.
0 | success |
-1 | failure |
Definition at line 954 of file bucket.c.
References __ast_sorcery_wizard_register(), AO2_ALLOC_OPT_LOCK_RWLOCK, ao2_container_alloc_hash, ast_log, ast_register_cleanup(), ast_sorcery_apply_default, AST_SORCERY_APPLY_FAIL, ast_sorcery_object_field_register, ast_sorcery_object_field_register_custom, ast_sorcery_object_register, ast_sorcery_object_set_copy_handler(), ast_sorcery_open, bucket_alloc(), bucket_cleanup(), bucket_copy_handler(), bucket_file_alloc(), bucket_file_copy_handler(), FLDSET, LOG_ERROR, NULL, OPT_STRINGFIELD_T, SCHEME_BUCKETS, STRFLDSET, timeval_str2struct(), and timeval_struct2str().
Referenced by asterisk_daemon().
int ast_bucket_is_stale | ( | struct ast_bucket * | bucket | ) |
Retrieve whether or not the backing datastore views the bucket as stale.
This function will ask whatever data storage backs the bucket's schema type if the current instance of the object is stale. It will not update the bucket object itself, as said objects are immutable. If the caller of this function would like to update the object, it should perform a retrieve operation.
bucket | The bucket object to check |
0 | if bucket is not stale |
1 | if bucket is stale |
Definition at line 524 of file bucket.c.
References ast_sorcery_is_stale().
Referenced by AST_TEST_DEFINE().
struct ast_json* ast_bucket_json | ( | const struct ast_bucket * | bucket | ) |
Get a JSON representation of a bucket.
bucket | The specific bucket |
non-NULL | success |
NULL | failure |
Definition at line 544 of file bucket.c.
References ao2_iterator_destroy(), ao2_iterator_init(), ao2_iterator_next, ao2_ref, AO2_STRING_FIELD_CMP_FN, AO2_STRING_FIELD_HASH_FN, ast_json_array_append(), ast_json_array_create(), ast_json_object_set(), ast_json_ref(), ast_json_string_create(), ast_json_unref(), ast_sorcery_object_get_id(), ast_sorcery_objectset_json_create(), ast_bucket::buckets, ast_bucket::files, id, ast_bucket_scheme::name, NULL, and RAII_VAR.
Referenced by AST_TEST_DEFINE().
int ast_bucket_observer_add | ( | const struct ast_sorcery_observer * | callbacks | ) |
Add an observer for bucket creation and deletion operations.
callbacks | Implementation of the sorcery observer interface |
0 | success |
-1 | failure |
Definition at line 529 of file bucket.c.
References ast_sorcery_observer_add().
void ast_bucket_observer_remove | ( | const struct ast_sorcery_observer * | callbacks | ) |
Remove an observer from bucket creation and deletion.
callbacks | Implementation of the sorcery observer interface |
Definition at line 534 of file bucket.c.
References ast_sorcery_observer_remove().
struct ast_bucket* ast_bucket_retrieve | ( | const char * | uri | ) |
Retrieve information about a bucket.
uri | Complete URI of the bucket |
non-NULL | if found |
NULL | if not found |
Definition at line 515 of file bucket.c.
References ast_sorcery_retrieve_by_id(), ast_strlen_zero, and NULL.
Referenced by AST_TEST_DEFINE().