pub struct DirectGpuScanner { /* private fields */ }Expand description
State for a pipelined direct-to-GPU scan.
Implementations§
Source§impl DirectGpuScanner
impl DirectGpuScanner
Sourcepub fn compile(patterns: &[&[u8]]) -> Self
pub fn compile(patterns: &[&[u8]]) -> Self
Compile a set of literal patterns into a direct GPU matcher.
Sourcepub fn literal_set_cache_key(&self) -> String
pub fn literal_set_cache_key(&self) -> String
Cache identity of the underlying literal set. Used by the
MatchScan::cache_key impl so DirectGpuScanner caches don’t
fork from the literal-set caches.
Sourcepub fn reference_scan(&self, haystack: &[u8]) -> Vec<Match>
pub fn reference_scan(&self, haystack: &[u8]) -> Vec<Match>
CPU oracle for parity and tests.
Sourcepub fn scan<B: VyreBackend + ?Sized>(
&self,
backend: &B,
haystack: &[u8],
max_matches: u32,
) -> Result<Vec<Match>, BackendError>
pub fn scan<B: VyreBackend + ?Sized>( &self, backend: &B, haystack: &[u8], max_matches: u32, ) -> Result<Vec<Match>, BackendError>
Dispatch the direct packed-byte matcher through a concrete backend.
§Errors
Returns vyre::BackendError when the backend cannot dispatch or read
back the compiled matcher.
Trait Implementations§
Source§impl MatchScan for DirectGpuScanner
impl MatchScan for DirectGpuScanner
Source§fn scan(
&self,
backend: &dyn VyreBackend,
haystack: &[u8],
max_matches: u32,
) -> Result<Vec<Match>, BackendError>
fn scan( &self, backend: &dyn VyreBackend, haystack: &[u8], max_matches: u32, ) -> Result<Vec<Match>, BackendError>
GPU dispatch through a concrete backend, returning up to
max_matches matches. Engines pre-allocate the hit buffer at
max_matches * 3 + 1 u32 slots; setting this too low silently
truncates results.Source§fn reference_scan(&self, haystack: &[u8]) -> Vec<Match>
fn reference_scan(&self, haystack: &[u8]) -> Vec<Match>
Reference oracle scan. Used by the cross-layer parity tests in
vyre-conform; engines that lack a meaningful CPU stepper
(none today) can return an empty vec but should never fabricate
results. Read moreSource§fn cache_key(&self) -> String
fn cache_key(&self) -> String
Stable identity for cache filenames + telemetry. Engines hash
their pattern set + version constant. Consumers pass this
straight to
cached_load_or_compile without further hashing.Source§fn try_reference_scan(
&self,
haystack: &[u8],
) -> Result<Vec<Match>, BackendError>
fn try_reference_scan( &self, haystack: &[u8], ) -> Result<Vec<Match>, BackendError>
Fallible reference oracle scan. Surfaces a CPU-stepper failure (a
haystack longer than the
u32 match ABI the GPU path uses) as an error
instead of aborting, so consumers holding dyn MatchScan can recover.
The default delegates to the infallible Self::reference_scan for
engines whose stepper genuinely cannot fail; engines with a fallible
stepper override this to forward to their real fallible scan (and never
route through the panicking infallible wrapper). Read moreAuto Trait Implementations§
impl !Freeze for DirectGpuScanner
impl !RefUnwindSafe for DirectGpuScanner
impl !UnwindSafe for DirectGpuScanner
impl Send for DirectGpuScanner
impl Sync for DirectGpuScanner
impl Unpin for DirectGpuScanner
impl UnsafeUnpin for DirectGpuScanner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more