[][src]Struct hypercore::Storage

pub struct Storage<T> where
    T: RandomAccess + Debug
{ /* fields omitted */ }

Save data to a desired storage backend.

Methods

impl<T> Storage<T> where
    T: RandomAccess<Error = Error> + Debug
[src]

pub fn new<Cb>(create: Cb) -> Result<Self> where
    Cb: Fn(Store) -> Result<T>, 
[src]

Create a new instance. Takes a keypair and a callback to create new storage instances.

pub fn write_data(&mut self, offset: usize, data: &[u8]) -> Result<()>[src]

Write data to the feed.

pub fn put_data(
    &mut self,
    index: usize,
    data: &[u8],
    nodes: &[Node]
) -> Result<()>
[src]

Write a byte vector to a data storage (random-access instance) at the position of index.

NOTE: Meant to be called from the .put() feed method. Probably used to insert data as-is after receiving it from the network (need to confirm with mafintosh). TODO: Ensure the signature size is correct. NOTE: Should we create a Data entry type?

pub fn get_data(&mut self, index: usize) -> Result<Vec<u8>>[src]

Get data from disk that the user has written to it. This is stored unencrypted, so there's no decryption needed.

pub fn next_signature(&mut self, index: usize) -> Result<Signature>[src]

Search the signature stores for a Signature, starting at index.

pub fn get_signature(&mut self, index: usize) -> Result<Signature>[src]

Get a Signature from the store.

pub fn put_signature(
    &mut self,
    index: usize,
    signature: impl Borrow<Signature>
) -> Result<()>
[src]

Write a Signature to self.Signatures. TODO: Ensure the signature size is correct. NOTE: Should we create a Signature entry type?

pub fn data_offset(
    &mut self,
    index: usize,
    cached_nodes: &[Node]
) -> Result<Range<usize>>
[src]

TODO(yw) docs Get the offset for the data, return (offset, size).

Panics

A panic can occur if no maximum value is found.

pub fn get_node(&mut self, index: usize) -> Result<Node>[src]

Get a Node from the tree storage.

pub fn put_node(&mut self, node: &Node) -> Result<()>[src]

Write a Node to the tree storage. TODO: prevent extra allocs here. Implement a method on node that can reuse a buffer.

pub fn put_bitfield(&mut self, offset: usize, data: &[u8]) -> Result<()>[src]

Write data to the internal bitfield module. TODO: Ensure the chunk size is correct. NOTE: Should we create a bitfield entry type?

pub fn read_public_key(&mut self) -> Result<PublicKey>[src]

Read a public key from storage

pub fn read_secret_key(&mut self) -> Result<SecretKey>[src]

Read a secret key from storage

pub fn write_public_key(&mut self, public_key: &PublicKey) -> Result<()>[src]

Write a public key to the storage

pub fn write_secret_key(&mut self, secret_key: &SecretKey) -> Result<()>[src]

Write a secret key to the storage

pub fn read_partial_keypair(&mut self) -> Option<PartialKeypair>[src]

Tries to read a partial keypair (ie: with an optional secret_key) from the storage

impl Storage<RandomAccessMemory>[src]

pub fn new_memory() -> Result<Self>[src]

Create a new instance backed by a RandomAccessMemory instance.

impl Storage<RandomAccessDisk>[src]

pub fn new_disk(dir: &PathBuf) -> Result<Self>[src]

Create a new instance backed by a RandomAccessDisk instance.

Trait Implementations

impl<T: Debug> Debug for Storage<T> where
    T: RandomAccess + Debug
[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for Storage<T> where
    T: RefUnwindSafe

impl<T> Send for Storage<T> where
    T: Send

impl<T> Sync for Storage<T> where
    T: Sync

impl<T> Unpin for Storage<T> where
    T: Unpin

impl<T> UnwindSafe for Storage<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.