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 timestamp;
22mod u64_empty_string;
23mod u64_string;
24mod viewer;
25
26type FxIndexSet<T> = IndexSet<T, BuildHasherDefault<FxHasher>>;
27type FxIndexMap<K, V> = IndexMap<K, V, BuildHasherDefault<FxHasher>>;
28
29fn main() {
30 let args: FxIndexSet<String> = std::env::args().skip(1).collect();
31
32 let mut iter = args.iter();
33 let arg = iter.next().expect("missing argument: trace file path");
34 let port = iter.next().map_or(5747, |s| s.parse().unwrap());
35
36 let store = Arc::new(StoreContainer::new());
37 let reader = TraceReader::spawn(store.clone(), arg.into());
38
39 serve(store, port);
40
41 reader.join().unwrap();
42}