Chromium Code Reviews| 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 |