Skip to main content

PersistedMlsGroup

Struct PersistedMlsGroup 

Source
pub struct PersistedMlsGroup {
    pub id: ConversationId,
    pub state: Vec<u8>,
    pub epoch: u64,
    pub ciphersuite: u16,
    pub credential_id: Sha256Hash,
    pub credential_type: u16,
    pub own_leaf_index: u32,
    pub is_pending: bool,
    pub tnt_tx_counter: u32,
}
Expand description

Entity representing a persisted MlsGroup

Fields§

§id: ConversationId§state: Vec<u8>§epoch: u64§ciphersuite: u16§credential_id: Sha256Hash

Hash of the public key of the credential currently in use by our leaf node, if one can be determined. None if the group’s leaf node has been removed, or if that credential is no longer present in mls_credentials.

§credential_type: u16

The type of the credential identified by credential_id. mls_credentials’s primary key is (public_key_sha256, credential_type), not public_key_sha256 alone, so this always travels alongside credential_id: both are Some or both are None.

§own_leaf_index: u32§is_pending: bool

Distinguishes a group joined by external commit but not yet merged from an established one.

§tnt_tx_counter: u32

Counter for outbound TNT messages

Implementations§

Source§

impl PersistedMlsGroup

Source

pub fn delete_if_pending<'a, Tx>( tx: &'a Tx, id: &ConversationIdRef, ) -> CryptoKeystoreResult<bool>

Delete this group only if it is still marked pending.

A pending group and the established group it eventually becomes share a row. Abandoning a pending join must not delete an established group which has since superseded it. This accomplishes that while avoiding TOCTOU issues.

Trait Implementations§

Source§

impl BorrowPrimaryKey for PersistedMlsGroup

Source§

type BorrowedPrimaryKey<'a> = &'a ConversationIdRef

Source§

fn borrow_primary_key(&self) -> Self::BorrowedPrimaryKey<'_>

Borrow this entity’s primary key without copying any data. Read more
Source§

impl Clone for PersistedMlsGroup

Source§

fn clone(&self) -> PersistedMlsGroup

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PersistedMlsGroup

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for PersistedMlsGroup

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Drop for PersistedMlsGroup

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Entity for PersistedMlsGroup

Source§

const TABLE_NAME: &'static str = "mls_groups"

The name of the SQL table for this entity
Source§

fn get( conn: &Connection, key: &Self::PrimaryKey, ) -> CryptoKeystoreResult<Option<Self>>

Get an entity by its primary key. Read more
Source§

fn count(conn: &Connection) -> CryptoKeystoreResult<u32>

Count the number of entities of this type in the database.
Source§

fn load_all(conn: &Connection) -> CryptoKeystoreResult<Vec<Self>>

Retrieve all entities of this type from the database.
Source§

impl EntityDatabaseMutation for PersistedMlsGroup

Source§

fn save<'a, Tx>(&self, tx: &'a Tx) -> CryptoKeystoreResult<()>

Save this entity to the database in the context of this transaction. Read more
Source§

fn delete<'a, Tx>(tx: &'a Tx, id: &ConversationId) -> CryptoKeystoreResult<bool>

Use the transaction’s inteface to delete this entity from the database. Read more
Source§

impl EntityDeleteBorrowed for PersistedMlsGroup

Source§

fn delete_borrowed<'a, Tx>( tx: &'a Tx, id: &ConversationIdRef, ) -> CryptoKeystoreResult<bool>

Delete an entity by a borrowed form of its primary key.
Source§

impl EntityGetBorrowed for PersistedMlsGroup

Source§

fn get_borrowed( conn: &Connection, key: Self::BorrowedPrimaryKey<'_>, ) -> CryptoKeystoreResult<Option<Self>>

Get an entity by a borrowed form of its primary key.
Source§

impl Eq for PersistedMlsGroup

Source§

impl PartialEq for PersistedMlsGroup

Source§

fn eq(&self, other: &PersistedMlsGroup) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PrimaryKey for PersistedMlsGroup

Source§

type PrimaryKey = ConversationId

Each distinct PrimaryKey uniquely identifies either 0 or 1 instance. Read more
Source§

fn primary_key(&self) -> Self::PrimaryKey

Get this entity’s primary key. Read more
Source§

impl Serialize for PersistedMlsGroup

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for PersistedMlsGroup

Source§

impl ToValue for PersistedMlsGroup

Source§

fn to_value(&self) -> Value<'_>

Perform the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> MaybeSendSync for T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V