Struct routing::StructuredData [] [src]

pub struct StructuredData {
    // some fields omitted
}

Mutable structured data.

The name is computed from the type tag and identifier, so these two fields are immutable.

These types may be stored unsigned with previous and current owner keys set to the same keys. Updates require a signature to validate.

Methods

impl StructuredData
[src]

fn new(type_tag: u64, name: XorName, version: u64, data: Vec<u8>, current_owner_keys: Vec<PublicKey>, previous_owner_keys: Vec<PublicKey>, signing_key: Option<&SecretKey>) -> Result<StructuredDataRoutingError>

Creates a new StructuredData signed with signing_key.

fn replace_with_other(&mut self, other: StructuredData) -> Result<()RoutingError>

Replaces this data item with the given updated version if the update is valid, otherwise returns an error.

This allows types to be created and previous_owner_signatures added one by one. To transfer ownership, the current owner signs over the data; the previous owners field must have the previous owners of version - 1 as the current owners of that last version.

fn name(&self) -> &XorName

Returns the name.

fn identifier(&self) -> DataIdentifier

Returns DataIdentifier for this data element.

fn validate_self_against_successor(&self, other: &StructuredData) -> Result<()RoutingError>

Verifies that other is a valid update for self; returns an error otherwise.

An update is valid if it doesn't change type tag or identifier (these are immutable), increases the version by 1 and is signed by (more than 50% of) the owners.

In case of an ownership transfer, the previous_owner_keys in other must match the current_owner_keys in self.

fn add_signature(&mut self, secret_key: &SecretKey) -> Result<usizeRoutingError>

Adds a signature with the given secret_key to the previous_owner_signatures and returns the number of signatures that are still required. If more than 50% of the previous owners have signed, 0 is returned and validation is complete.

fn replace_signatures(&mut self, new_signatures: Vec<Signature>)

Overwrite any existing signatures with the new signatures provided.

fn get_type_tag(&self) -> u64

Get the type_tag

fn get_data(&self) -> &Vec<u8>

Get the serialised data

fn get_previous_owner_keys(&self) -> &Vec<PublicKey>

Get the previous owner keys

fn get_version(&self) -> u64

Get the version

fn get_owner_keys(&self) -> &Vec<PublicKey>

Get the current owner keys

fn get_previous_owner_signatures(&self) -> &Vec<Signature>

Get previous owner signatures

fn payload_size(&self) -> usize

Return data size.

Trait Implementations

impl Encodable for StructuredData
[src]

fn encode<__S: Encoder>(&self, __arg_0: &mut __S) -> Result<(), __S::Error>

impl Decodable for StructuredData
[src]

fn decode<__D: Decoder>(__arg_0: &mut __D) -> Result<StructuredData, __D::Error>

impl Clone for StructuredData
[src]

fn clone(&self) -> StructuredData

Returns a copy of the value. Read more

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

Performs copy-assignment from source. Read more

impl Ord for StructuredData
[src]

fn cmp(&self, __arg_0: &StructuredData) -> Ordering

This method returns an Ordering between self and other. Read more

impl PartialOrd for StructuredData
[src]

fn partial_cmp(&self, __arg_0: &StructuredData) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more

fn lt(&self, __arg_0: &StructuredData) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more

fn le(&self, __arg_0: &StructuredData) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

fn gt(&self, __arg_0: &StructuredData) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more

fn ge(&self, __arg_0: &StructuredData) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl PartialEq for StructuredData
[src]

fn eq(&self, __arg_0: &StructuredData) -> bool

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, __arg_0: &StructuredData) -> bool

This method tests for !=.

impl Eq for StructuredData
[src]

impl Hash for StructuredData
[src]

fn hash<__H: Hasher>(&self, __arg_0: &mut __H)

Feeds this value into the state given, updating the hasher as necessary.

fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher
1.3.0

Feeds a slice of this type into the state provided.

impl Debug for StructuredData
[src]

fn fmt(&self, formatter: &mut Formatter) -> Result

Formats the value using the given formatter.