1 /*******************************************************************************
2 * Copyright (c) 2015 École Polytechnique de Montréal
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *******************************************************************************/
10 package org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.analysis
.graph
.handlers
;
12 import java
.util
.Collection
;
13 import java
.util
.HashMap
;
17 import org
.eclipse
.tracecompass
.analysis
.graph
.core
.building
.AbstractTraceEventHandler
;
18 import org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.analysis
.graph
.building
.LttngKernelExecGraphProvider
;
19 import org
.eclipse
.tracecompass
.internal
.lttng2
.kernel
.core
.trace
.layout
.LttngEventLayout
;
20 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEvent
;
21 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEventType
;
22 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTrace
;
23 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTraceWithPreDefinedEvents
;
24 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.TmfEventTypeCollectionHelper
;
25 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.TmfTraceManager
;
28 * Holds the fields commons to all handler classes.
30 * @author Francis Giraldeau <francis.giraldeau@gmail.com>
33 public class BaseHandler
extends AbstractTraceEventHandler
{
35 private final LttngKernelExecGraphProvider fProvider
;
36 private Map
<ITmfTrace
, Boolean
> fHasEventSchedTTWU
;
38 BaseHandler(LttngKernelExecGraphProvider provider
) {
40 fHasEventSchedTTWU
= new HashMap
<>();
41 ITmfTrace trace
= getProvider().getTrace();
42 LttngEventLayout layout
= getProvider().getEventLayout();
43 Collection
<ITmfTrace
> traceSet
= TmfTraceManager
.getTraceSet(trace
);
44 for (ITmfTrace traceItem
: traceSet
) {
45 if (traceItem
instanceof ITmfTraceWithPreDefinedEvents
) {
46 Set
<?
extends ITmfEventType
> content
= ((ITmfTraceWithPreDefinedEvents
) traceItem
).getContainedEventTypes();
47 Set
<String
> traceEvents
= TmfEventTypeCollectionHelper
.getEventNames(content
);
48 boolean hasEvent
= traceEvents
.contains(layout
.eventSchedProcessTTWU());
49 fHasEventSchedTTWU
.put(traceItem
, hasEvent
);
55 * Returns the parent graph provider
57 * @return the graph provider
59 public LttngKernelExecGraphProvider
getProvider() {
64 * Return if the trace has the try to wake-up event
68 * @return if the trace has the try to wake-up event
70 public boolean traceHasEventSchedTTWU(ITmfTrace trace
) {
71 Boolean ret
= fHasEventSchedTTWU
.get(trace
);
79 public void handleEvent(ITmfEvent event
) {