File tree 1 file changed +18
-4
lines changed
src/feed/listener_aggregator
1 file changed +18
-4
lines changed Original file line number Diff line number Diff line change @@ -78,18 +78,32 @@ impl Aggregator {
78
78
for order in sliced_bids. iter ( ) { bids. push ( order) ; }
79
79
}
80
80
81
- asks. sort_by_key ( |order| ( order. price , order. amount ) ) ;
82
- bids. sort_by_key ( |order| std:: cmp:: Reverse ( ( order. price , order. amount ) ) ) ;
81
+ // sort asks by (price increasing, amount decreasing)
82
+ asks. sort_unstable_by ( |a, b| {
83
+ if a. price == b. price {
84
+ b. amount . cmp ( & a. amount )
85
+ } else {
86
+ a. price . cmp ( & b. price )
87
+ }
88
+ } ) ;
89
+ // sort bids by (price decreasing, amount decreasing)
90
+ bids. sort_unstable_by ( |a, b| {
91
+ if a. price == b. price {
92
+ b. amount . cmp ( & a. amount )
93
+ } else {
94
+ b. price . cmp ( & a. price )
95
+ }
96
+ } ) ;
83
97
84
- for ask in & asks {
98
+ for ask in & asks[ 0 ..feed_aggregator :: TOP_N_BBO ] {
85
99
asks_grpc. push (
86
100
orderbook:: Level {
87
101
exchange : ask. feed . feed_name_for_grpc_service ( ) . to_owned ( ) ,
88
102
price : ask. price . to_f64 ( ) . unwrap ( ) ,
89
103
amount : ask. amount . to_f64 ( ) . unwrap ( )
90
104
} ) ;
91
105
}
92
- for bid in & bids {
106
+ for bid in & bids[ 0 ..feed_aggregator :: TOP_N_BBO ] {
93
107
bids_grpc. push (
94
108
orderbook:: Level {
95
109
exchange : bid. feed . feed_name_for_grpc_service ( ) . to_owned ( ) ,
You can’t perform that action at this time.
0 commit comments