Skip to content

Commit b8154aa

Browse files
committed
Removed EngineSerializer trait.
1 parent 5f13ec7 commit b8154aa

File tree

9 files changed

+33
-66
lines changed

9 files changed

+33
-66
lines changed

js/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use adblock::lists::{
44
use adblock::resources::resource_assembler::assemble_web_accessible_resources;
55
use adblock::resources::Resource;
66
use adblock::Engine as EngineInternal;
7-
use adblock::EngineSerializer as EngineSerializerInternal;
87
use neon::prelude::*;
98
use neon::types::buffer::TypedArray as _;
109
use serde::{Deserialize, Serialize};

src/engine.rs

+27
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,33 @@ impl Engine {
244244
pub fn get_regex_debug_info(&self) -> crate::regex_manager::RegexDebugInfo {
245245
self.blocker.get_regex_debug_info()
246246
}
247+
248+
/// Serializes the `Engine` into a binary format so that it can be quickly reloaded later.
249+
pub fn serialize(&self) -> Result<Vec<u8>, crate::data_format::SerializationError> {
250+
use crate::data_format::SerializeFormat;
251+
252+
let serialize_format = SerializeFormat::build(&self.blocker, &self.cosmetic_cache);
253+
254+
let result = serialize_format.serialize()?;
255+
Ok(result)
256+
}
257+
258+
/// Deserialize the `Engine` from the binary format generated by `Engine::serialize`. The
259+
/// method will automatically select the correct deserialization implementation.
260+
pub fn deserialize(
261+
&mut self,
262+
serialized: &[u8],
263+
) -> Result<(), crate::data_format::DeserializationError> {
264+
use crate::data_format::DeserializeFormat;
265+
let current_tags = self.blocker.tags_enabled();
266+
let deserialize_format = DeserializeFormat::deserialize(serialized)?;
267+
let (blocker, cosmetic_cache) = deserialize_format.build();
268+
self.blocker = blocker;
269+
self.blocker
270+
.use_tags(&current_tags.iter().map(|s| &**s).collect::<Vec<_>>());
271+
self.cosmetic_cache = cosmetic_cache;
272+
Ok(())
273+
}
247274
}
248275

249276
/// Static assertions for `Engine: Send + Sync` traits.

src/engine_serializer.rs

-54
This file was deleted.

src/filters/fb_network.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use crate::utils::Hash;
1717
pub mod flat;
1818
use flat::fb;
1919

20-
pub struct FlatNetworkFiltersListBuilder<'a> {
20+
pub(crate) struct FlatNetworkFiltersListBuilder<'a> {
2121
builder: flatbuffers::FlatBufferBuilder<'a>,
2222
filters: Vec<WIPOffset<fb::NetworkFilter<'a>>>,
2323

@@ -133,7 +133,7 @@ impl<'a> FlatNetworkFiltersListBuilder<'a> {
133133
binary
134134
}
135135
}
136-
pub struct FlatPatterns<'a> {
136+
pub(crate) struct FlatPatterns<'a> {
137137
patterns: Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>,
138138
}
139139

@@ -155,7 +155,7 @@ impl<'a> FlatPatterns<'a> {
155155
}
156156
}
157157

158-
pub struct FlatPatternsIterator<'a> {
158+
pub(crate) struct FlatPatternsIterator<'a> {
159159
patterns: &'a FlatPatterns<'a>,
160160
len: usize,
161161
index: usize,
@@ -184,7 +184,7 @@ impl<'a> ExactSizeIterator for FlatPatternsIterator<'a> {
184184
}
185185
}
186186

187-
pub struct FlatNetworkFilter<'a> {
187+
pub(crate) struct FlatNetworkFilter<'a> {
188188
key: u64,
189189
owner: &'a NetworkFilterList,
190190
fb_filter: &'a fb::NetworkFilter<'a>,

src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ pub mod content_blocking;
2222
pub mod cosmetic_filter_cache;
2323
mod data_format;
2424
mod engine;
25-
mod engine_serializer;
2625
pub mod filters;
2726
pub mod lists;
2827
mod network_filter_list;
@@ -37,7 +36,6 @@ pub mod utils;
3736

3837
#[doc(inline)]
3938
pub use engine::Engine;
40-
pub use engine_serializer::EngineSerializer;
4139
#[doc(inline)]
4240
pub use lists::FilterSet;
4341

tests/legacy_harness.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ mod legacy_test_filters {
316316

317317
mod legacy_check_match {
318318
use adblock::request::Request;
319-
use adblock::{Engine, EngineSerializer};
319+
use adblock::Engine;
320320

321321
fn check_match<'a>(
322322
rules: &[&'a str],
@@ -855,7 +855,6 @@ mod legacy_misc_tests {
855855
use adblock::filters::network::NetworkFilter;
856856
use adblock::request::Request;
857857
use adblock::Engine;
858-
use adblock::EngineSerializer;
859858

860859
#[test]
861860
fn demo_app() {

tests/live.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use adblock::request::Request;
2-
use adblock::{Engine, EngineSerializer};
2+
use adblock::Engine;
33

44
use serde::Deserialize;
55
use tokio::runtime::Runtime;

tests/ublock-coverage.rs

-1
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ fn check_specifics_default() {
171171

172172
#[test]
173173
fn check_basic_works_after_deserialization() {
174-
use adblock::EngineSerializer;
175174
let engine = get_blocker_engine();
176175
let serialized = engine.serialize().unwrap();
177176
let mut deserialized_engine = Engine::default();

tests/unit/engine.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#[cfg(test)]
22
mod tests {
33
use super::super::*;
4-
use crate::engine_serializer::EngineSerializer;
54
use crate::lists::FilterFormat;
65
use crate::resources::MimeType;
76
use base64::{engine::Engine as _, prelude::BASE64_STANDARD};

0 commit comments

Comments
 (0)