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