| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| 'use strict'; |
| |
| /** |
| * @fileoverview Provides the TimelineProcess class. |
| */ |
| base.require('timeline_thread'); |
| base.require('timeline_counter'); |
| base.exportTo('tracing', function() { |
| |
| var TimelineThread = tracing.TimelineThread; |
| var TimelineCounter = tracing.TimelineCounter; |
| |
| /** |
| * The TimelineProcess represents a single process in the |
| * trace. Right now, we keep this around purely for bookkeeping |
| * reasons. |
| * @constructor |
| */ |
| function TimelineProcess(pid) { |
| this.pid = pid; |
| this.threads = {}; |
| this.counters = {}; |
| }; |
| |
| TimelineProcess.prototype = { |
| get numThreads() { |
| var n = 0; |
| for (var p in this.threads) { |
| n++; |
| } |
| return n; |
| }, |
| |
| /** |
| * Shifts all the timestamps inside this process forward by the amount |
| * specified. |
| */ |
| shiftTimestampsForward: function(amount) { |
| for (var tid in this.threads) |
| this.threads[tid].shiftTimestampsForward(amount); |
| for (var id in this.counters) |
| this.counters[id].shiftTimestampsForward(amount); |
| }, |
| |
| /** |
| * @return {TimlineThread} The thread identified by tid on this process, |
| * creating it if it doesn't exist. |
| */ |
| getOrCreateThread: function(tid) { |
| if (!this.threads[tid]) |
| this.threads[tid] = new TimelineThread(this, tid); |
| return this.threads[tid]; |
| }, |
| |
| /** |
| * @return {TimlineCounter} The counter on this process named 'name', |
| * creating it if it doesn't exist. |
| */ |
| getOrCreateCounter: function(cat, name) { |
| var id = cat + '.' + name; |
| if (!this.counters[id]) |
| this.counters[id] = new TimelineCounter(this, id, cat, name); |
| return this.counters[id]; |
| } |
| }; |
| |
| /** |
| * Comparison between processes that orders by pid. |
| */ |
| TimelineProcess.compare = function(x, y) { |
| return x.pid - y.pid; |
| }; |
| |
| return { |
| TimelineProcess: TimelineProcess |
| }; |
| }); |