use super::{UuidPoolError, NamespaceString, ContextString};
use crate::registry::WriteAccess;
use crate::OwnedNamespace;
use uuid::Uuid;
#[doc(alias = "constant")]
pub const DEFAULT_UUID_BASE: u32 = 64;
#[doc(alias = "constant")]
pub const DEFAULT_MAX_RETRIES: usize = 64;
#[doc(alias = "setter")]
#[doc(alias = "reservation")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn reserve_namespace(namespace: &str) {
let _ = crate::registry::add_namespace(namespace, WriteAccess::Unowned);
}
#[doc(alias = "setter")]
#[doc(alias = "reservation")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn try_reserve_namespace(namespace: &str) -> Result<(), UuidPoolError> {
crate::registry::add_namespace(namespace, WriteAccess::Unowned)
}
#[doc(alias = "setter")]
#[doc(alias = "reservation")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn reserve_owned_namespace(namespace: &str) -> Result<OwnedNamespace, UuidPoolError> {
let signature = crate::registry::add_owned_namespace(namespace)?;
Ok(OwnedNamespace::new(namespace.to_string(), signature))
}
#[doc(alias = "setter")]
#[doc(alias = "remover")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn remove_namespace(namespace: &str) {
let _ = crate::registry::remove_namespace(namespace, WriteAccess::Unowned);
}
#[doc(alias = "setter")]
#[doc(alias = "remover")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn try_remove_namespace(namespace: &str) -> Result<(), UuidPoolError> {
crate::registry::remove_namespace(namespace, WriteAccess::Unowned)
}
#[doc(alias = "setter")]
#[doc(alias = "replacer")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn replace_namespace(old_namespace: &str, new_namespace: &str) {
let _ = crate::registry::replace_namespace(old_namespace, new_namespace, WriteAccess::Unowned);
}
#[doc(alias = "setter")]
#[doc(alias = "replacer")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn try_replace_namespace(old_namespace: &str, new_namespace: &str) -> Result<(), UuidPoolError> {
crate::registry::replace_namespace(old_namespace, new_namespace, WriteAccess::Unowned)
}
#[doc(alias = "setter")]
#[doc(alias = "reservation")]
#[doc(alias = "id")]
#[inline(always)]
pub fn reserve_id(namespace: &str, context: &str) -> Result<Uuid, UuidPoolError> {
reserve_id_with(namespace, context, DEFAULT_UUID_BASE, DEFAULT_MAX_RETRIES)
}
#[doc(alias = "setter")]
#[doc(alias = "reservation")]
#[doc(alias = "id")]
#[inline(always)]
pub fn reserve_id_with_base(
namespace: &str,
context: &str,
base: u32,
) -> Result<Uuid, UuidPoolError> {
reserve_id_with(namespace, context, base, DEFAULT_MAX_RETRIES)
}
#[inline(always)]
#[doc(alias = "setter")]
#[doc(alias = "reservation")]
#[doc(alias = "id")]
pub fn reserve_id_with(
namespace: &str,
context: &str,
base: u32,
max_retries: usize,
) -> Result<Uuid, UuidPoolError> {
crate::registry::random_uuid(namespace, context, base, max_retries, 0, WriteAccess::Unowned)
}
#[doc(alias = "setter")]
#[doc(alias = "adder")]
#[doc(alias = "id")]
#[inline(always)]
pub fn add_id(namespace: &str, context: &str, uuid: Uuid) -> Result<(), UuidPoolError> {
crate::registry::add_uuid_to_pool(namespace, context, &uuid, WriteAccess::Unowned)
}
#[doc(alias = "setter")]
#[doc(alias = "remover")]
#[doc(alias = "id")]
#[inline(always)]
pub fn remove_id(namespace: &str, context: &str, uuid: Uuid) -> Result<(), UuidPoolError> {
crate::registry::remove_uuid_from_pool(namespace, context, &uuid, WriteAccess::Unowned)
}
#[doc(alias = "setter")]
#[doc(alias = "remover")]
#[doc(alias = "id")]
#[inline(always)]
pub fn try_remove_id(namespace: &str, context: &str, uuid: Uuid) -> bool {
crate::registry::remove_uuid_from_pool(namespace, context, &uuid, WriteAccess::Unowned).is_ok()
}
#[doc(alias = "setter")]
#[doc(alias = "replacer")]
#[doc(alias = "id")]
#[inline(always)]
pub fn replace_id(
namespace: &str,
context: &str,
old_uuid: Uuid,
new_uuid: Uuid,
) -> Result<(), UuidPoolError> {
crate::registry::replace_uuid_in_pool(namespace, context, &old_uuid, &new_uuid, WriteAccess::Unowned)
}
#[doc(alias = "getter")]
#[doc(alias = "id")]
#[inline(always)]
pub fn get_random_uuid_with_base(base: u32) -> Uuid {
crate::registry::make_uuid_with_base(base)
}
#[inline(always)]
#[doc(alias = "getter")]
#[doc(alias = "context")]
pub fn get_context_entries(namespace: &str, context: &str) -> Result<Vec<(NamespaceString, ContextString, Uuid)>, UuidPoolError> {
crate::registry::get_context_entries(namespace, context)
}
#[inline(always)]
#[doc(alias = "getter")]
#[doc(alias = "namespace")]
pub fn get_namespace_entries(
namespace: &str,
) -> Result<Vec<(NamespaceString, ContextString, Uuid)>, UuidPoolError> {
crate::registry::get_namespace_entries(namespace)
}
#[inline(always)]
#[doc(alias = "getter")]
#[doc(alias = "namespace")]
pub fn get_all_namespace_entries() -> Result<Vec<(NamespaceString, ContextString, Uuid)>, UuidPoolError> {
crate::registry::get_all_namespace_entries()
}
#[doc(alias = "getter")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn list_namespaces() -> Vec<NamespaceString> {
crate::registry::list_namespaces()
}
#[doc(alias = "getter")]
#[doc(alias = "context")]
#[inline(always)]
pub fn list_contexts(namespace: &str) -> Vec<ContextString> {
crate::registry::list_contexts(namespace)
}
#[doc(alias = "getter")]
#[doc(alias = "id")]
#[inline(always)]
pub fn list_ids(namespace: &str, context: &str) -> Vec<Uuid> {
crate::registry::list_ids(namespace, context)
}
#[doc(alias = "clear")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn clear_namespace(namespace: &str) {
let _ = crate::registry::clear_namespace(namespace, WriteAccess::Unowned);
}
#[doc(alias = "clear")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn try_clear_namespace(namespace: &str) -> Result<(), UuidPoolError> {
crate::registry::clear_namespace(namespace, WriteAccess::Unowned)
}
#[doc(alias = "clear")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn clear_all_namespaces() {
crate::registry::clear_all_namespaces()
}
#[doc(alias = "clear")]
#[doc(alias = "context")]
#[inline(always)]
pub fn clear_context(namespace: &str, context: &str) {
let _ = crate::registry::clear_context(namespace, context, WriteAccess::Unowned);
}
#[doc(alias = "clear")]
#[doc(alias = "context")]
#[inline(always)]
pub fn try_clear_context(namespace: &str, context: &str) -> Result<(), UuidPoolError> {
crate::registry::clear_context(namespace, context, WriteAccess::Unowned)
}
#[doc(alias = "clear")]
#[doc(alias = "context")]
#[inline(always)]
pub fn clear_all_contexts(namespace: &str) {
let _ = crate::registry::clear_all_contexts(namespace, WriteAccess::Unowned);
}
#[doc(alias = "clear")]
#[doc(alias = "context")]
#[inline(always)]
pub fn try_clear_all_contexts(namespace: &str) -> Result<(), UuidPoolError> {
crate::registry::clear_all_contexts(namespace, WriteAccess::Unowned)
}
#[doc(alias = "drain")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn drain_namespace(
namespace: &str,
) -> Result<Vec<(String, String, Uuid)>, UuidPoolError> {
crate::registry::drain_namespace(namespace, WriteAccess::Unowned)
}
#[doc(alias = "drain")]
#[doc(alias = "namespace")]
#[inline(always)]
pub fn drain_all_namespaces() -> Result<Vec<(String, String, Uuid)>, UuidPoolError> {
crate::registry::drain_all_namespaces()
}
#[doc(alias = "drain")]
#[doc(alias = "context")]
#[inline(always)]
pub fn drain_context(
namespace: &str,
context: &str,
) -> Result<Vec<(String, Uuid)>, UuidPoolError> {
crate::registry::drain_context(namespace, context, WriteAccess::Unowned)
}
#[doc(alias = "drain")]
#[doc(alias = "context")]
#[inline(always)]
pub fn drain_all_contexts(
namespace: &str,
) -> Result<Vec<(String, String, Uuid)>, UuidPoolError> {
crate::registry::drain_all_contexts(namespace, WriteAccess::Unowned)
}