Skip to main content

turbo_trace_server/
main.rs

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