| 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 "services/debugger/trace_collector.h" | |
| 6 | |
| 7 namespace debugger { | |
| 8 | |
| 9 TraceCollector::TraceCollector(mojo::ScopedDataPipeConsumerHandle source) | |
| 10 : drainer_(this, source.Pass()), is_complete_(false) { | |
| 11 } | |
| 12 | |
| 13 TraceCollector::~TraceCollector() { | |
| 14 } | |
| 15 | |
| 16 void TraceCollector::GetTrace(TraceCallback callback) { | |
| 17 DCHECK(callback_.is_null()); | |
| 18 DCHECK(!callback.is_null()); | |
| 19 if (is_complete_) { | |
| 20 callback.Run(GetTraceAsString()); | |
| 21 return; | |
| 22 } | |
| 23 callback_ = callback; | |
| 24 } | |
| 25 | |
| 26 void TraceCollector::OnDataAvailable(const void* data, size_t num_bytes) { | |
| 27 DCHECK(!is_complete_); | |
| 28 const char* chars = static_cast<const char*>(data); | |
| 29 trace_.insert(trace_.end(), chars, chars + num_bytes); | |
| 30 } | |
| 31 | |
| 32 void TraceCollector::OnDataComplete() { | |
| 33 DCHECK(!is_complete_); | |
| 34 is_complete_ = true; | |
| 35 if (!callback_.is_null()) | |
| 36 callback_.Run(GetTraceAsString()); | |
| 37 } | |
| 38 | |
| 39 std::string TraceCollector::GetTraceAsString() { | |
| 40 return std::string(&trace_.front(), trace_.size()); | |
| 41 } | |
| 42 | |
| 43 } // namespace debugger | |
| OLD | NEW |