1414 for < ' a > H : FnMut ( & <CB :: Container as Container >:: Item < ' a > ) -> u64
1515{
1616 pushers : Vec < P > ,
17- buffers : Vec < CB > ,
17+ builders : Vec < CB > ,
1818 current : Option < T > ,
1919 hash_func : H ,
2020}
@@ -27,20 +27,20 @@ where
2727{
2828 /// Allocates a new `Exchange` from a supplied set of pushers and a distribution function.
2929 pub fn new ( pushers : Vec < P > , key : H ) -> Exchange < T , CB , P , H > {
30- let mut buffers = vec ! [ ] ;
30+ let mut builders = vec ! [ ] ;
3131 for _ in 0 ..pushers. len ( ) {
32- buffers . push ( Default :: default ( ) ) ;
32+ builders . push ( Default :: default ( ) ) ;
3333 }
3434 Exchange {
3535 pushers,
3636 hash_func : key,
37- buffers ,
37+ builders ,
3838 current : None ,
3939 }
4040 }
4141 #[ inline]
4242 fn flush ( & mut self , index : usize ) {
43- while let Some ( container) = self . buffers [ index] . finish ( ) {
43+ while let Some ( container) = self . builders [ index] . finish ( ) {
4444 if let Some ( ref time) = self . current {
4545 Message :: push_at ( container, time. clone ( ) , & mut self . pushers [ index] ) ;
4646 }
@@ -79,14 +79,14 @@ where
7979 // if the number of pushers is a power of two, use a mask
8080 if self . pushers . len ( ) . is_power_of_two ( ) {
8181 let mask = ( self . pushers . len ( ) - 1 ) as u64 ;
82- CB :: partition ( data, & mut self . buffers , |datum| ( ( hash_func) ( datum) & mask) as usize ) ;
82+ CB :: partition ( data, & mut self . builders , |datum| ( ( hash_func) ( datum) & mask) as usize ) ;
8383 }
8484 // as a last resort, use mod (%)
8585 else {
8686 let num_pushers = self . pushers . len ( ) as u64 ;
87- CB :: partition ( data, & mut self . buffers , |datum| ( ( hash_func) ( datum) % num_pushers) as usize ) ;
87+ CB :: partition ( data, & mut self . builders , |datum| ( ( hash_func) ( datum) % num_pushers) as usize ) ;
8888 }
89- for ( buffer, pusher) in self . buffers . iter_mut ( ) . zip ( self . pushers . iter_mut ( ) ) {
89+ for ( buffer, pusher) in self . builders . iter_mut ( ) . zip ( self . pushers . iter_mut ( ) ) {
9090 while let Some ( container) = buffer. extract ( ) {
9191 Message :: push_at ( container, time. clone ( ) , pusher) ;
9292 }
9696 // flush
9797 for index in 0 ..self . pushers . len ( ) {
9898 self . flush ( index) ;
99+ self . builders [ index] . relax ( ) ;
99100 self . pushers [ index] . push ( & mut None ) ;
100101 }
101102 }
0 commit comments