OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "sky/tools/debugger/prompt/trace_collector.h" | |
6 | |
7 namespace sky { | |
8 namespace debugger { | |
9 | |
10 TraceCollector::TraceCollector(mojo::ScopedDataPipeConsumerHandle source) | |
11 : drainer_(this, source.Pass()), | |
12 is_complete_(false), | |
13 callback_requested_(false) { | |
14 } | |
15 | |
16 TraceCollector::~TraceCollector() { | |
17 } | |
18 | |
19 void TraceCollector::GetTrace(TraceCallback callback) { | |
20 DCHECK(!callback_requested_); | |
21 if (is_complete_) { | |
22 callback.Run(GetTraceAsString()); | |
23 return; | |
24 } | |
25 callback_requested_ = true; | |
26 callback_ = callback; | |
27 } | |
28 | |
29 void TraceCollector::OnDataAvailable(const void* data, size_t num_bytes) { | |
30 DCHECK(!is_complete_); | |
31 const char* chars = static_cast<const char*>(data); | |
32 trace_.insert(trace_.end(), chars, chars + num_bytes); | |
33 } | |
34 | |
35 void TraceCollector::OnDataComplete() { | |
36 DCHECK(!is_complete_); | |
37 is_complete_ = true; | |
38 if (callback_requested_) | |
jamesr
2015/01/15 23:56:58
can't you just check if callback_ is null and clea
abarth-chromium
2015/01/16 00:31:53
Done.
| |
39 callback_.Run(GetTraceAsString()); | |
40 } | |
41 | |
42 std::string TraceCollector::GetTraceAsString() { | |
43 return std::string(&trace_.front(), trace_.size()); | |
44 } | |
45 | |
46 } // namespace debugger | |
47 } // namespace sky | |
OLD | NEW |