@@ -36,22 +36,13 @@ struct NetworkFilterListBuilder {
36
36
optimize : bool ,
37
37
}
38
38
39
+ #[ derive( Default ) ]
39
40
struct EngineFlatBuilder < ' a > {
40
41
fb_builder : flatbuffers:: FlatBufferBuilder < ' a > ,
41
42
unique_domains_hashes : HashMap < Hash , u32 > ,
42
43
unique_domains_hashes_vec : Vec < Hash > ,
43
44
}
44
45
45
- impl Default for EngineFlatBuilder < ' _ > {
46
- fn default ( ) -> Self {
47
- Self {
48
- fb_builder : flatbuffers:: FlatBufferBuilder :: new ( ) ,
49
- unique_domains_hashes : HashMap :: new ( ) ,
50
- unique_domains_hashes_vec : Vec :: new ( ) ,
51
- }
52
- }
53
- }
54
-
55
46
impl < ' a > EngineFlatBuilder < ' a > {
56
47
pub fn get_or_insert_unique_domain_hash ( & mut self , hash : & Hash ) -> u32 {
57
48
if let Some ( & index) = self . unique_domains_hashes . get ( hash) {
@@ -63,9 +54,24 @@ impl<'a> EngineFlatBuilder<'a> {
63
54
index
64
55
}
65
56
66
- pub fn write_unique_domains ( & mut self ) -> WIPOffset < Vector < ' a , u64 > > {
67
- self . fb_builder
68
- . create_vector ( & self . unique_domains_hashes_vec )
57
+ pub fn finish (
58
+ & mut self ,
59
+ network_rules : WIPFlatVec < ' a , NetworkFilterListBuilder , EngineFlatBuilder < ' a > > ,
60
+ ) -> VerifiedFlatbufferMemory {
61
+ let unique_domains_hashes = Some (
62
+ self . fb_builder
63
+ . create_vector ( & self . unique_domains_hashes_vec ) ,
64
+ ) ;
65
+ let network_rules = Some ( network_rules) ;
66
+ let engine = fb:: Engine :: create (
67
+ self . raw_builder ( ) ,
68
+ & fb:: EngineArgs {
69
+ network_rules,
70
+ unique_domains_hashes,
71
+ } ,
72
+ ) ;
73
+ self . raw_builder ( ) . finish ( engine, None ) ;
74
+ VerifiedFlatbufferMemory :: from_builder ( self . raw_builder ( ) )
69
75
}
70
76
}
71
77
@@ -337,14 +343,5 @@ pub fn make_flatbuffer(
337
343
let mut builder = EngineFlatBuilder :: default ( ) ;
338
344
let network_rules_builder = NetworkRulesBuilder :: from_rules ( network_filters, optimize) ;
339
345
let network_rules = FlatSerialize :: serialize ( network_rules_builder, & mut builder) ;
340
- let unique_domains_hashes = Some ( builder. write_unique_domains ( ) ) ;
341
- let engine = fb:: Engine :: create (
342
- builder. raw_builder ( ) ,
343
- & fb:: EngineArgs {
344
- network_rules : Some ( network_rules) ,
345
- unique_domains_hashes,
346
- } ,
347
- ) ;
348
- builder. raw_builder ( ) . finish ( engine, None ) ;
349
- VerifiedFlatbufferMemory :: from_builder ( builder. raw_builder ( ) )
346
+ builder. finish ( network_rules)
350
347
}
0 commit comments