1# Copyright 2013 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 5import telemetry.core.timeline.event as event 6 7class AsyncSlice(event.TimelineEvent): 8 ''' A AsyncSlice represents an interval of time during which an 9 asynchronous operation is in progress. An AsyncSlice consumes no CPU time 10 itself and so is only associated with Threads at its start and end point. 11 ''' 12 def __init__(self, category, name, timestamp, args=None): 13 super(AsyncSlice, self).__init__( 14 category, name, timestamp, duration=0, args=args) 15 self.parent_slice = None 16 self.start_thread = None 17 self.end_thread = None 18 self.sub_slices = [] 19 self.id = None 20 21 def AddSubSlice(self, sub_slice): 22 assert sub_slice.parent_slice == self 23 self.sub_slices.append(sub_slice) 24 25 26 def IterEventsInThisContainerRecrusively(self): 27 for sub_slice in self.sub_slices: 28 yield sub_slice 29