Struct btlib::atomic_file::AtomicFileWriteGuard
source · pub struct AtomicFileWriteGuard<'a, T> { /* private fields */ }
Implementations§
source§impl<'a, T: Serialize> AtomicFileWriteGuard<'a, T>
impl<'a, T: Serialize> AtomicFileWriteGuard<'a, T>
sourcepub fn save(&mut self) -> Result<()>
pub fn save(&mut self) -> Result<()>
Saves the current value of T
to the file.
If another process calls save
concurrently, then one will block waiting for the other
to finish. Note that in this case one process will overwrite the value written
by the other, but whichever value is contained in the file after both have finished
is internally consistent.
Trait Implementations§
source§impl<'a, T> Deref for AtomicFileWriteGuard<'a, T>
impl<'a, T> Deref for AtomicFileWriteGuard<'a, T>
Auto Trait Implementations§
impl<'a, T> RefUnwindSafe for AtomicFileWriteGuard<'a, T>where T: RefUnwindSafe,
impl<'a, T> !Send for AtomicFileWriteGuard<'a, T>
impl<'a, T> Sync for AtomicFileWriteGuard<'a, T>where T: Sync,
impl<'a, T> Unpin for AtomicFileWriteGuard<'a, T>
impl<'a, T> UnwindSafe for AtomicFileWriteGuard<'a, T>where T: RefUnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T, P> CredStore for Pwhere
T: CredStore + ?Sized,
P: Deref<Target = T>,
impl<T, P> CredStore for Pwhere T: CredStore + ?Sized, P: Deref<Target = T>,
§type CredHandle = <T as CredStore>::CredHandle
type CredHandle = <T as CredStore>::CredHandle
The type of the credential handle returned by this store.
§type ExportedCreds = <T as CredStore>::ExportedCreds
type ExportedCreds = <T as CredStore>::ExportedCreds
The type of the exported credentials returned by this store.
source§fn node_creds(&self) -> Result<<P as CredStore>::CredHandle, Error>
fn node_creds(&self) -> Result<<P as CredStore>::CredHandle, Error>
Returns the node credentials. If credentials haven’t been generated, they are generated
stored and returned.
source§fn root_creds(
&self,
password: &str
) -> Result<<P as CredStore>::CredHandle, Error>
fn root_creds( &self, password: &str ) -> Result<<P as CredStore>::CredHandle, Error>
Returns the root credentials. If no root credentials have been generated, or the provided
password is incorrect, then an error is returned.
source§fn storage_key(&self) -> Result<AsymKey<Public, Encrypt>, Error>
fn storage_key(&self) -> Result<AsymKey<Public, Encrypt>, Error>
Returns a public key which can be used to encrypt data intended only to be accessed by this
node. The returned key can be given as the
new_parent
parameter to the
CredStore::export_root_creds method.source§fn export_root_creds(
&self,
root_creds: &<P as CredStore>::CredHandle,
password: &str,
new_parent: &AsymKey<Public, Encrypt>
) -> Result<<P as CredStore>::ExportedCreds, Error>
fn export_root_creds( &self, root_creds: &<P as CredStore>::CredHandle, password: &str, new_parent: &AsymKey<Public, Encrypt> ) -> Result<<P as CredStore>::ExportedCreds, Error>
Exports the root credentials. These can be serialized and persisted external to the
application and later loaded and deserialized and passed to the
CredStoreMut::import_root_creds method.
The
password
argument must match the value provided when the CredStore::root_creds
method was called. The new_parent
argument is the public key of the node that is to import
the root key, which can be obtained using the CredStoreMut::gen_root_creds method on the
importing node.source§impl<T, P> CredStoreMut for Pwhere
T: CredStoreMut + ?Sized,
P: Deref<Target = T>,
impl<T, P> CredStoreMut for Pwhere T: CredStoreMut + ?Sized, P: Deref<Target = T>,
source§fn gen_root_creds(
&self,
password: &str
) -> Result<<T as CredStore>::CredHandle, Error>
fn gen_root_creds( &self, password: &str ) -> Result<<T as CredStore>::CredHandle, Error>
Generates the root credentials and protects them using the given password. If the root
credentials have already been generated then an error is returned.
source§fn import_root_creds(
&self,
password: &str,
exported: <P as CredStore>::ExportedCreds
) -> Result<<P as CredStore>::CredHandle, Error>
fn import_root_creds( &self, password: &str, exported: <P as CredStore>::ExportedCreds ) -> Result<<P as CredStore>::CredHandle, Error>
Imports root credentials that were previously created with CredStore::export_root_creds.
The provided password must match the value that was given to that method.
source§fn assign_node_writecap(
&self,
handle: &mut <P as CredStore>::CredHandle,
writecap: Writecap
) -> Result<(), Error>
fn assign_node_writecap( &self, handle: &mut <P as CredStore>::CredHandle, writecap: Writecap ) -> Result<(), Error>
source§fn assign_root_writecap(
&self,
handle: &mut <P as CredStore>::CredHandle,
writecap: Writecap
) -> Result<(), Error>
fn assign_root_writecap( &self, handle: &mut <P as CredStore>::CredHandle, writecap: Writecap ) -> Result<(), Error>
Assigns
writecap
to the root credentials referred to by handle
. This method
is responsible for committing the given Writecap to durable storage.source§fn provision_root(
&self,
password: &str,
expires: Epoch
) -> Result<Self::CredHandle>
fn provision_root( &self, password: &str, expires: Epoch ) -> Result<Self::CredHandle>
Generates new root credentials protected by
password
and issues them a self-signed
Writecap which expires after valid_for
. The newly generated root credentials are
returned.source§fn provision_node_start(&self) -> Result<Principal>
fn provision_node_start(&self) -> Result<Principal>
source§fn provision_node_finish(&self, writecap: Writecap) -> Result<Self::CredHandle>
fn provision_node_finish(&self, writecap: Writecap) -> Result<Self::CredHandle>
Assigns the given Writecap to the node credentials and commits it to durable storage.
A handle to the node credentials is returned.
source§impl<T> DecrypterExt for Twhere
T: Decrypter + ?Sized,
impl<T> DecrypterExt for Twhere T: Decrypter + ?Sized,
fn ser_decrypt<T: DeserializeOwned>(&self, ct: &Ciphertext<T>) -> Result<T>
§impl<T, A> DynAccess<T> for Awhere
A: Access<T>,
<A as Access<T>>::Guard: 'static,
impl<T, A> DynAccess<T> for Awhere A: Access<T>, <A as Access<T>>::Guard: 'static,
source§impl<T> EncrypterExt for Twhere
T: Encrypter + ?Sized,
impl<T> EncrypterExt for Twhere T: Encrypter + ?Sized,
source§fn ser_encrypt<T: Serialize>(&self, value: &T) -> Result<Ciphertext<T>>
fn ser_encrypt<T: Serialize>(&self, value: &T) -> Result<Ciphertext<T>>
Serializes the given value into a new vector, then encrypts it and returns the resulting
ciphertext.