Move common encoding schemes into module

next
Sayan Nandan 7 months ago
parent ea678e2c9d
commit 4735fd4c1d
No known key found for this signature in database
GPG Key ID: 0EBD769024B24F0A

@ -0,0 +1,27 @@
/*
* Created on Sun Feb 11 2024
*
* This file is a part of Skytable
* Skytable (formerly known as TerrabaseDB or Skybase) is a free and open-source
* NoSQL database written by Sayan Nandan ("the Author") with the
* vision to provide flexibility in data modelling without compromising
* on performance, queryability or scalability.
*
* Copyright (c) 2024, Sayan Nandan <nandansayan@outlook.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
pub mod r1;

@ -39,7 +39,6 @@ use {
error::{RuntimeResult, StorageError},
idx::{IndexSTSeqCns, STIndexSeq},
mem::{BufferedScanner, StatelessLen},
storage::v1::inf,
},
util::{copy_slice_to_array as memcpy, EndianQW},
},
@ -214,7 +213,7 @@ impl MapStorageSpec for GenericDictSpec {
s: &mut BufferedScanner,
md: &Self::EntryMetadata,
) -> Option<Self::RestoredKey> {
inf::dec::utils::decode_string(s, md.klen as usize)
super::dec::utils::decode_string(s, md.klen as usize)
.map(|s| s.into_boxed_str())
.ok()
}
@ -366,7 +365,7 @@ impl<FM: FieldMapAny> MapStorageSpec for FieldMapSpec<FM> {
scanner: &mut BufferedScanner,
md: &Self::EntryMetadata,
) -> Option<Self::RestoredKey> {
inf::dec::utils::decode_string(scanner, md.field_id_l as usize)
super::dec::utils::decode_string(scanner, md.field_id_l as usize)
.map(|s| s.into_boxed_str())
.ok()
}

@ -24,7 +24,10 @@
*
*/
//! High level interfaces
//! High level interfaces (r1)
//!
//! This is revision 1 of high-level interface encoding.
//!
pub mod map;
pub mod obj;

@ -25,7 +25,7 @@
*/
use {
super::{PersistObject, VecU8},
super::{dec, PersistObject, VecU8},
crate::{
engine::{
core::{
@ -40,7 +40,6 @@ use {
error::{RuntimeResult, StorageError},
idx::IndexSTSeqCns,
mem::{BufferedScanner, VInline},
storage::v1::inf,
},
util::EndianQW,
},
@ -51,17 +50,16 @@ use {
*/
pub mod cell {
use crate::{
engine::{
data::{
use {
super::super::{DataSource, VecU8},
crate::{
engine::data::{
cell::Datacell,
tag::{DataTag, TagClass, TagSelector},
},
storage::v1::inf::{DataSource, VecU8},
util::EndianQW,
},
util::EndianQW,
};
#[derive(Debug, PartialEq, Eq, Clone, Copy, PartialOrd, Ord, Hash, sky_macros::EnumMethods)]
#[repr(u8)]
#[allow(dead_code)]
@ -446,7 +444,7 @@ impl<'a> PersistObject for ModelLayoutRef<'a> {
scanner: &mut BufferedScanner,
md: Self::Metadata,
) -> RuntimeResult<Self::OutputType> {
let key = inf::dec::utils::decode_string(scanner, md.p_key_len as usize)?;
let key = dec::utils::decode_string(scanner, md.p_key_len as usize)?;
let fieldmap = <super::map::PersistMapImpl<
super::map::FieldMapSpec<IndexSTSeqCns<Box<str>, _>>,
> as PersistObject>::obj_dec(

@ -27,6 +27,7 @@
//! Implementations of the Skytable Disk Storage Subsystem (SDSS)
mod common;
mod common_encoding;
// driver versions
pub mod v1;
pub mod v2;

@ -33,8 +33,8 @@ use {
error::{RuntimeResult, TransactionError},
mem::BufferedScanner,
storage::{
common_encoding::r1::{self, PersistObject},
safe_interfaces::{FSInterface, LocalFS},
v1::inf::{self, PersistObject},
},
txn::{gns, SpaceIDRef},
},
@ -149,7 +149,7 @@ where
type RestoreType;
/// Encodes the event into the given buffer
fn encode_super_event(commit: Self, buf: &mut Vec<u8>) {
inf::enc::enc_full_into_buffer::<Self>(buf, commit)
r1::enc::enc_full_into_buffer::<Self>(buf, commit)
}
fn decode_and_update_global_state(
scanner: &mut BufferedScanner,
@ -159,7 +159,7 @@ where
}
/// Attempts to decode the event using the given scanner
fn decode(scanner: &mut BufferedScanner) -> RuntimeResult<Self::RestoreType> {
inf::dec::dec_full_from_scanner::<Self>(scanner).map_err(|e| e.into())
r1::dec::dec_full_from_scanner::<Self>(scanner).map_err(|e| e.into())
}
/// Update the global state from the restored event
fn update_global_state(restore: Self::RestoreType, gns: &GlobalNS) -> RuntimeResult<()>;
@ -208,7 +208,7 @@ impl<'a> PersistObject for SpaceID<'a> {
s: &mut BufferedScanner,
md: Self::Metadata,
) -> RuntimeResult<Self::OutputType> {
let str = inf::dec::utils::decode_string(s, md.space_name_l as usize)?;
let str = r1::dec::utils::decode_string(s, md.space_name_l as usize)?;
Ok(SpaceIDRes {
uuid: md.uuid,
name: str.into_boxed_str(),

@ -37,7 +37,7 @@ use {
error::{RuntimeResult, StorageError, TransactionError},
idx::{IndexSTSeqCns, STIndex, STIndexSeq},
mem::BufferedScanner,
storage::v1::inf::{self, map, obj, PersistObject},
storage::common_encoding::r1::{self, map, obj, PersistObject},
txn::{
gns::model::{
AlterModelAddTxn, AlterModelRemoveTxn, AlterModelUpdateTxn, CreateModelTxn,
@ -117,7 +117,7 @@ impl<'a> PersistObject for ModelID<'a> {
) -> RuntimeResult<Self::OutputType> {
Ok(ModelIDRes {
space_id: <super::SpaceID as PersistObject>::obj_dec(s, md.space_id)?,
model_name: inf::dec::utils::decode_string(s, md.model_name_l as usize)?
model_name: r1::dec::utils::decode_string(s, md.model_name_l as usize)?
.into_boxed_str(),
model_uuid: md.model_uuid,
model_version: md.model_version,
@ -241,7 +241,7 @@ impl<'a> PersistObject for CreateModelTxn<'a> {
) -> RuntimeResult<Self::OutputType> {
let space_id = <super::SpaceID as PersistObject>::obj_dec(s, md.space_id_meta)?;
let model_name =
inf::dec::utils::decode_string(s, md.model_name_l as usize)?.into_boxed_str();
r1::dec::utils::decode_string(s, md.model_name_l as usize)?.into_boxed_str();
let model = <obj::ModelLayoutRef as PersistObject>::obj_dec(s, md.model_meta)?;
Ok(CreateModelTxnRestorePL {
space_id,
@ -427,7 +427,7 @@ impl<'a> PersistObject for AlterModelRemoveTxn<'a> {
if !s.has_left(len) {
break;
}
removed_fields.push(inf::dec::utils::decode_string(s, len)?.into_boxed_str());
removed_fields.push(r1::dec::utils::decode_string(s, len)?.into_boxed_str());
}
if removed_fields.len() as u64 != md.remove_field_c {
return Err(StorageError::InternalDecodeStructureCorruptedPayload.into());

@ -33,7 +33,7 @@ use {
error::{RuntimeResult, TransactionError},
idx::STIndex,
mem::BufferedScanner,
storage::v1::inf::{self, map, obj, PersistObject},
storage::common_encoding::r1::{dec, map, obj, PersistObject},
txn::gns::space::{AlterSpaceTxn, CreateSpaceTxn, DropSpaceTxn},
},
util::EndianQW,
@ -91,8 +91,7 @@ impl<'a> PersistObject for CreateSpaceTxn<'a> {
s: &mut BufferedScanner,
md: Self::Metadata,
) -> RuntimeResult<Self::OutputType> {
let space_name =
inf::dec::utils::decode_string(s, md.space_name_l as usize)?.into_boxed_str();
let space_name = dec::utils::decode_string(s, md.space_name_l as usize)?.into_boxed_str();
let space = <obj::SpaceLayoutRef as PersistObject>::obj_dec(s, md.space_meta)?;
Ok(CreateSpaceTxnRestorePL { space_name, space })
}

@ -31,7 +31,7 @@ use {
},
crate::engine::{
core::{model::Model, space::Space},
storage::v1::inf::{dec, enc},
storage::common_encoding::r1::{dec, enc},
txn::ModelIDRef,
},
};

@ -29,7 +29,6 @@
//! Target tags: `0.8.0-beta`, `0.8.0-beta.2`, `0.8.0-beta.3`
mod impls;
pub mod inf;
pub mod loader;
pub mod raw;

@ -46,10 +46,8 @@ use {
idx::STIndexSeq,
storage::{
common::interface::fs_traits::FSInterface,
v1::{
inf::obj::cell,
raw::rw::{SDSSFileIO, TrackedWriter},
},
common_encoding::r1,
v1::raw::rw::{SDSSFileIO, TrackedWriter},
},
},
util::EndianQW,
@ -225,7 +223,7 @@ impl<Fs: FSInterface> DataBatchPersistDriver<Fs> {
/// Encode a single cell
fn encode_cell(&mut self, value: &Datacell) -> RuntimeResult<()> {
let mut buf = vec![];
cell::encode(&mut buf, value);
r1::obj::cell::encode(&mut buf, value);
self.f.tracked_write(&buf)?;
Ok(())
}

@ -39,13 +39,11 @@ use {
idx::{MTIndex, STIndex, STIndexSeq},
storage::{
common::interface::fs_traits::FSInterface,
v1::{
inf::{
obj::cell::{self, StorageCellTypeID},
DataSource,
},
raw::rw::{SDSSFileIO, TrackedReader},
common_encoding::r1::{
obj::cell::{self, StorageCellTypeID},
DataSource,
},
v1::raw::rw::{SDSSFileIO, TrackedReader},
},
},
std::{

@ -32,10 +32,8 @@ use {
fractal::sys_store::{SysAuth, SysAuthUser, SysConfig, SysHostData, SystemStore},
storage::{
common::interface::fs_traits::{FSInterface, FileOpen},
v1::{
inf,
raw::{rw::SDSSFileIO, spec},
},
common_encoding::r1,
v1::raw::{rw::SDSSFileIO, spec},
},
},
parking_lot::RwLock,
@ -140,7 +138,7 @@ impl<Fs: FSInterface> SystemStore<Fs> {
),
);
// write
let buf = inf::enc::enc_dict_full::<inf::map::GenericDictSpec>(&map);
let buf = r1::enc::enc_dict_full::<r1::map::GenericDictSpec>(&map);
f.fsynced_write(&buf)
}
fn _sync_with(&self, target: &str, cow: &str, auth: &SysAuth) -> RuntimeResult<()> {
@ -184,7 +182,7 @@ impl<Fs: FSInterface> SystemStore<Fs> {
Ok((slf, state))
}
fn _restore(mut f: SDSSFileIO<Fs>, run_mode: ConfigMode) -> RuntimeResult<SysConfig> {
let mut sysdb_data = inf::dec::dec_dict_full::<inf::map::GenericDictSpec>(&f.read_full()?)?;
let mut sysdb_data = r1::dec::dec_dict_full::<r1::map::GenericDictSpec>(&f.read_full()?)?;
// get our auth and sys stores
let mut auth_store = rkey(
&mut sysdb_data,

@ -24,5 +24,5 @@
*
*/
pub mod space;
pub mod model;
pub mod space;

Loading…
Cancel
Save