From 0967d85feda6b20a18eb21121adf30d99b701fd1 Mon Sep 17 00:00:00 2001 From: ghassmo Date: Fri, 28 May 2021 18:16:00 +0300 Subject: [PATCH] create slab struct --- src/lib.rs | 1 + src/slab.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/slab.rs diff --git a/src/lib.rs b/src/lib.rs index dd3183ebd..c43c3b497 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,6 +17,7 @@ pub mod rpc; pub mod serial; pub mod service; pub mod slabstore; +pub mod slab; pub mod state; pub mod system; pub mod tx; diff --git a/src/slab.rs b/src/slab.rs new file mode 100644 index 000000000..9c4e59fab --- /dev/null +++ b/src/slab.rs @@ -0,0 +1,57 @@ + +use crate::Result; +use crate::serial::{Decodable, Encodable}; + +pub struct Slab{ + asset_type: String, + index: u64, + payload: Vec, +} + + +impl Slab { + + pub fn new(asset_type: String, payload: Vec) -> Self{ + let index = 0; + Slab{ + asset_type, + index, + payload, + } + } + + pub fn set_index(&mut self, index: u64) { + self.index = index; + } + + pub fn get_index(&self) -> u64{ + self.index + } + + pub fn get_payload(&self) -> Vec { + self.payload.clone() + } +} + + +impl Encodable for Slab { + fn encode(&self, mut s: S) -> Result { + let mut len = 0; + len += self.asset_type.encode(&mut s)?; + len += self.index.encode(&mut s)?; + len += self.payload.encode(&mut s)?; + Ok(len) + } +} + +impl Decodable for Slab { + fn decode(mut d: D) -> Result { + Ok(Self { + asset_type: Decodable::decode(&mut d)?, + index: Decodable::decode(&mut d)?, + payload: Decodable::decode(&mut d)?, + }) + } +} + +