turbo_trace_server/
main.rs1#![feature(iter_intersperse)]
2#![feature(box_patterns)]
3#![feature(bufreader_peek)]
4
5use std::{hash::BuildHasherDefault, sync::Arc};
6
7use indexmap::{IndexMap, IndexSet};
8use rustc_hash::FxHasher;
9
10use self::{reader::TraceReader, server::serve, store_container::StoreContainer};
11
12mod bottom_up;
13mod reader;
14mod self_time_tree;
15mod server;
16mod span;
17mod span_bottom_up_ref;
18mod span_graph_ref;
19mod span_ref;
20mod store;
21mod store_container;
22mod string_tuple_ref;
23mod timestamp;
24mod u64_empty_string;
25mod u64_string;
26mod viewer;
27
28type FxIndexSet<T> = IndexSet<T, BuildHasherDefault<FxHasher>>;
29type FxIndexMap<K, V> = IndexMap<K, V, BuildHasherDefault<FxHasher>>;
30
31fn main() {
32 let args: FxIndexSet<String> = std::env::args().skip(1).collect();
33
34 let mut iter = args.iter();
35 let arg = iter
36 .next()
37 .expect("missing positional argument for the trace file path");
38 let port = iter.next().map_or(5747, |s| s.parse().unwrap());
39
40 let store = Arc::new(StoreContainer::new());
41 let reader = TraceReader::spawn(store.clone(), arg.into());
42
43 serve(store, port);
44
45 reader.join().unwrap();
46}