File tree 9 files changed +33
-66
lines changed
9 files changed +33
-66
lines changed Original file line number Diff line number Diff line change @@ -4,7 +4,6 @@ use adblock::lists::{
4
4
use adblock:: resources:: resource_assembler:: assemble_web_accessible_resources;
5
5
use adblock:: resources:: Resource ;
6
6
use adblock:: Engine as EngineInternal ;
7
- use adblock:: EngineSerializer as EngineSerializerInternal ;
8
7
use neon:: prelude:: * ;
9
8
use neon:: types:: buffer:: TypedArray as _;
10
9
use serde:: { Deserialize , Serialize } ;
Original file line number Diff line number Diff line change @@ -244,6 +244,33 @@ impl Engine {
244
244
pub fn get_regex_debug_info ( & self ) -> crate :: regex_manager:: RegexDebugInfo {
245
245
self . blocker . get_regex_debug_info ( )
246
246
}
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
+ }
247
274
}
248
275
249
276
/// Static assertions for `Engine: Send + Sync` traits.
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -17,7 +17,7 @@ use crate::utils::Hash;
17
17
pub mod flat;
18
18
use flat:: fb;
19
19
20
- pub struct FlatNetworkFiltersListBuilder < ' a > {
20
+ pub ( crate ) struct FlatNetworkFiltersListBuilder < ' a > {
21
21
builder : flatbuffers:: FlatBufferBuilder < ' a > ,
22
22
filters : Vec < WIPOffset < fb:: NetworkFilter < ' a > > > ,
23
23
@@ -133,7 +133,7 @@ impl<'a> FlatNetworkFiltersListBuilder<'a> {
133
133
binary
134
134
}
135
135
}
136
- pub struct FlatPatterns < ' a > {
136
+ pub ( crate ) struct FlatPatterns < ' a > {
137
137
patterns : Option < flatbuffers:: Vector < ' a , flatbuffers:: ForwardsUOffset < & ' a str > > > ,
138
138
}
139
139
@@ -155,7 +155,7 @@ impl<'a> FlatPatterns<'a> {
155
155
}
156
156
}
157
157
158
- pub struct FlatPatternsIterator < ' a > {
158
+ pub ( crate ) struct FlatPatternsIterator < ' a > {
159
159
patterns : & ' a FlatPatterns < ' a > ,
160
160
len : usize ,
161
161
index : usize ,
@@ -184,7 +184,7 @@ impl<'a> ExactSizeIterator for FlatPatternsIterator<'a> {
184
184
}
185
185
}
186
186
187
- pub struct FlatNetworkFilter < ' a > {
187
+ pub ( crate ) struct FlatNetworkFilter < ' a > {
188
188
key : u64 ,
189
189
owner : & ' a NetworkFilterList ,
190
190
fb_filter : & ' a fb:: NetworkFilter < ' a > ,
Original file line number Diff line number Diff line change @@ -22,7 +22,6 @@ pub mod content_blocking;
22
22
pub mod cosmetic_filter_cache;
23
23
mod data_format;
24
24
mod engine;
25
- mod engine_serializer;
26
25
pub mod filters;
27
26
pub mod lists;
28
27
mod network_filter_list;
@@ -37,7 +36,6 @@ pub mod utils;
37
36
38
37
#[ doc( inline) ]
39
38
pub use engine:: Engine ;
40
- pub use engine_serializer:: EngineSerializer ;
41
39
#[ doc( inline) ]
42
40
pub use lists:: FilterSet ;
43
41
Original file line number Diff line number Diff line change @@ -316,7 +316,7 @@ mod legacy_test_filters {
316
316
317
317
mod legacy_check_match {
318
318
use adblock:: request:: Request ;
319
- use adblock:: { Engine , EngineSerializer } ;
319
+ use adblock:: Engine ;
320
320
321
321
fn check_match < ' a > (
322
322
rules : & [ & ' a str ] ,
@@ -855,7 +855,6 @@ mod legacy_misc_tests {
855
855
use adblock:: filters:: network:: NetworkFilter ;
856
856
use adblock:: request:: Request ;
857
857
use adblock:: Engine ;
858
- use adblock:: EngineSerializer ;
859
858
860
859
#[ test]
861
860
fn demo_app ( ) {
Original file line number Diff line number Diff line change 1
1
use adblock:: request:: Request ;
2
- use adblock:: { Engine , EngineSerializer } ;
2
+ use adblock:: Engine ;
3
3
4
4
use serde:: Deserialize ;
5
5
use tokio:: runtime:: Runtime ;
Original file line number Diff line number Diff line change @@ -171,7 +171,6 @@ fn check_specifics_default() {
171
171
172
172
#[ test]
173
173
fn check_basic_works_after_deserialization ( ) {
174
- use adblock:: EngineSerializer ;
175
174
let engine = get_blocker_engine ( ) ;
176
175
let serialized = engine. serialize ( ) . unwrap ( ) ;
177
176
let mut deserialized_engine = Engine :: default ( ) ;
Original file line number Diff line number Diff line change 1
1
#[ cfg( test) ]
2
2
mod tests {
3
3
use super :: super :: * ;
4
- use crate :: engine_serializer:: EngineSerializer ;
5
4
use crate :: lists:: FilterFormat ;
6
5
use crate :: resources:: MimeType ;
7
6
use base64:: { engine:: Engine as _, prelude:: BASE64_STANDARD } ;
You can’t perform that action at this time.
0 commit comments