@@ -75,6 +75,11 @@ impl ShortestPathWorker {
75
75
pub fn nodes_sketch ( & self ) -> & HyperLogLog < 4096 > {
76
76
& self . nodes_sketch
77
77
}
78
+
79
+ pub fn update_changed_nodes_precision ( & self , num_nodes : u64 ) {
80
+ let mut changed_nodes = self . changed_nodes ( ) . lock ( ) . unwrap ( ) ;
81
+ * changed_nodes = U64BloomFilter :: new ( num_nodes, 0.01 ) ;
82
+ }
78
83
}
79
84
80
85
#[ derive( serde:: Serialize , serde:: Deserialize , bincode:: Encode , bincode:: Decode , Debug , Clone ) ]
@@ -88,6 +93,17 @@ impl Message<ShortestPathWorker> for GetNodeSketch {
88
93
}
89
94
}
90
95
96
+ #[ derive( serde:: Serialize , serde:: Deserialize , bincode:: Encode , bincode:: Decode , Debug , Clone ) ]
97
+ pub struct UpdateChangedNodesPrecision ( u64 ) ;
98
+
99
+ impl Message < ShortestPathWorker > for UpdateChangedNodesPrecision {
100
+ type Response = ( ) ;
101
+
102
+ fn handle ( self , worker : & ShortestPathWorker ) -> Self :: Response {
103
+ worker. update_changed_nodes_precision ( self . 0 ) ;
104
+ }
105
+ }
106
+
91
107
#[ derive( serde:: Serialize , serde:: Deserialize , bincode:: Encode , bincode:: Decode , Debug , Clone ) ]
92
108
pub struct BatchId2Node ( Vec < webgraph:: NodeID > ) ;
93
109
@@ -109,7 +125,7 @@ impl Message<ShortestPathWorker> for BatchId2Node {
109
125
}
110
126
}
111
127
112
- impl_worker ! ( ShortestPathJob , RemoteShortestPathWorker => ShortestPathWorker , [ BatchId2Node , GetNodeSketch ] ) ;
128
+ impl_worker ! ( ShortestPathJob , RemoteShortestPathWorker => ShortestPathWorker , [ BatchId2Node , GetNodeSketch , UpdateChangedNodesPrecision ] ) ;
113
129
114
130
#[ derive( Clone ) ]
115
131
pub struct RemoteShortestPathWorker {
@@ -143,6 +159,10 @@ impl RemoteShortestPathWorker {
143
159
pub fn get_node_sketch ( & self ) -> HyperLogLog < 4096 > {
144
160
self . send ( GetNodeSketch )
145
161
}
162
+
163
+ pub fn update_changed_nodes_precision ( & self , num_nodes : u64 ) {
164
+ self . send ( UpdateChangedNodesPrecision ( num_nodes) ) ;
165
+ }
146
166
}
147
167
148
168
impl RemoteWorker for RemoteShortestPathWorker {
0 commit comments