Skip to main content

BulletproofReader

Struct BulletproofReader 

Source
pub struct BulletproofReader { /* private fields */ }
👎Deprecated since 0.1.0:

Use SSTableReader instead. This reader is EXPERIMENTAL and not suitable for production. See Issue #190.

Expand description

Bulletproof SSTable reader with automatic format detection

§Deprecated

This reader is DEPRECATED for production use (Issue #190). Use crate::storage::sstable::reader::SSTableReader instead.

Implementations§

Source§

impl BulletproofReader

Source

pub fn new() -> Self

Create a new bulletproof reader with default settings (for testing)

Source

pub fn open<P: AsRef<Path>>(sstable_path: P) -> Result<Self>

Create a new bulletproof reader from any SSTable file path

This will automatically detect the format version and set up proper compression handling if needed.

Source

pub fn read_raw_data(&mut self, offset: u64, length: usize) -> Result<Vec<u8>>

Read raw data from the SSTable at specified offset and length

This automatically handles compression if present

Source

pub fn read_all_data(&mut self) -> Result<Vec<u8>>

Read the entire SSTable data (for debugging)

Source

pub fn parse_sstable_data(&mut self) -> Result<Vec<SSTableEntry>>

Parse SSTable data using format-specific parser

This is where we’ll implement the actual SSTable parsing based on the detected format version

Source

pub fn parse_oa_header(&self, data: &[u8]) -> Result<OaFormatHeader>

Parse Cassandra ‘oa’ format header (EXPERIMENTAL)

⚠️ EXPERIMENTAL: This header parsing implementation is based on reverse engineering and may not match the official Cassandra Big format specification. The magic number check and field interpretations should be verified against CEP-25 specification.

This function strictly parses only the 32-byte header portion as per the Cassandra SSTable format specification, handling oversized input by reading only the first 32 bytes.

Source

pub fn read_vint(&self, data: &[u8]) -> Result<(u64, usize)>

Read Variable Length Integer (VInt) from data using Cassandra format

Source

pub fn info(&self) -> &SSTableInfo

Get information about the SSTable

Source

pub fn compression_info(&self) -> Option<&CompressionInfo>

Get compression information if available

Source

pub fn cache_stats(&self) -> Option<(usize, usize)>

Get cache statistics if compression is enabled

Source

pub async fn get_header(&self) -> Result<SSTableHeader>

Get header information (for compatibility)

Source

pub async fn stream_entries(&self) -> Result<SSTableEntryStream>

Stream entries from the SSTable (for compatibility)

Source

pub fn get_file_path(&self) -> &Path

Get file path for the SSTable

Source

pub async fn verify_integrity(&self) -> Result<bool>

Verify integrity of the SSTable

Trait Implementations§

Source§

impl Default for BulletproofReader

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.