Re-structure LTTng sub-project as per the Linux Tools guidelines
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / controlflow / evProcessor / FlowEventToHandlerFactory.java
1 /*******************************************************************************
2 * Copyright (c) 2009 Ericsson
3 *
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 *
9 * Contributors:
10 * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation
11 * Michel Dagenais (michel.dagenais@polymtl.ca) - Reference C implementation, used with permission
12 *******************************************************************************/
13 package org.eclipse.linuxtools.lttng.ui.views.controlflow.evProcessor;
14
15 import java.util.HashMap;
16 import java.util.Map;
17
18 import org.eclipse.linuxtools.lttng.core.state.StateStrings;
19 import org.eclipse.linuxtools.lttng.core.state.evProcessor.AbsEventToHandlerResolver;
20 import org.eclipse.linuxtools.lttng.core.state.evProcessor.ILttngEventProcessor;
21
22 /**
23 * Builds a Map from string event name to a processing handler object, the
24 * processors implement the same interface to facilitate transparent methods
25 * call,
26 *
27 * The map key STring is the entry point of the raw events, using a hash speeds
28 * up the resolution of the appropriate processor
29 *
30 * @author alvaro
31 *
32 */
33 public class FlowEventToHandlerFactory extends AbsEventToHandlerResolver {
34 // ========================================================================
35 // Data
36 // =======================================================================
37 private final Map<String, ILttngEventProcessor> eventNametoBeforeProcessor = new HashMap<String, ILttngEventProcessor>();
38 private final Map<String, ILttngEventProcessor> eventNametoAfterProcessor = new HashMap<String, ILttngEventProcessor>();
39 private ILttngEventProcessor finishProcesor = null;
40 private static FlowEventToHandlerFactory instance = null;
41 private FlowBeforeUpdateHandlers instantiateBeforeHandler = new FlowBeforeUpdateHandlers();
42 private FlowAfterUpdateHandlers instantiateAfterHandler = new FlowAfterUpdateHandlers();
43
44 // ========================================================================
45 // Constructors
46 // =======================================================================
47 private FlowEventToHandlerFactory() {
48 super();
49 // Create one instance of each individual event handler and add the
50 // instance to the map
51
52 // BEFORE HOOKS
53 eventNametoBeforeProcessor.put(
54 StateStrings.Events.LTT_EVENT_SYSCALL_ENTRY.getInName(),
55 instantiateBeforeHandler.getStateModesHandler());
56
57 eventNametoBeforeProcessor.put(
58 StateStrings.Events.LTT_EVENT_SYSCALL_EXIT.getInName(),
59 instantiateBeforeHandler.getStateModesHandler());
60
61 eventNametoBeforeProcessor.put(StateStrings.Events.LTT_EVENT_TRAP_ENTRY
62 .getInName(), instantiateBeforeHandler.getStateModesHandler());
63
64 eventNametoBeforeProcessor.put(StateStrings.Events.LTT_EVENT_TRAP_EXIT
65 .getInName(), instantiateBeforeHandler.getStateModesHandler());
66
67 eventNametoBeforeProcessor.put(
68 StateStrings.Events.LTT_EVENT_PAGE_FAULT_ENTRY.getInName(),
69 instantiateBeforeHandler.getStateModesHandler());
70
71 eventNametoBeforeProcessor.put(
72 StateStrings.Events.LTT_EVENT_PAGE_FAULT_EXIT.getInName(),
73 instantiateBeforeHandler.getStateModesHandler());
74
75 eventNametoBeforeProcessor.put(
76 StateStrings.Events.LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY
77 .getInName(), instantiateBeforeHandler
78 .getStateModesHandler());
79
80 eventNametoBeforeProcessor
81 .put(StateStrings.Events.LTT_EVENT_PAGE_FAULT_NOSEM_EXIT
82 .getInName(), instantiateBeforeHandler
83 .getStateModesHandler());
84
85 eventNametoBeforeProcessor.put(StateStrings.Events.LTT_EVENT_IRQ_ENTRY
86 .getInName(), instantiateBeforeHandler.getStateModesHandler());
87
88 eventNametoBeforeProcessor.put(StateStrings.Events.LTT_EVENT_IRQ_EXIT
89 .getInName(), instantiateBeforeHandler.getStateModesHandler());
90
91 eventNametoBeforeProcessor.put(
92 StateStrings.Events.LTT_EVENT_SOFT_IRQ_ENTRY.getInName(),
93 instantiateBeforeHandler.getStateModesHandler());
94
95 eventNametoBeforeProcessor.put(
96 StateStrings.Events.LTT_EVENT_SOFT_IRQ_EXIT.getInName(),
97 instantiateBeforeHandler.getStateModesHandler());
98
99 eventNametoBeforeProcessor.put(
100 StateStrings.Events.LTT_EVENT_SCHED_SCHEDULE.getInName(),
101 instantiateBeforeHandler.getBeforeSchedChangeHandler());
102
103 eventNametoBeforeProcessor.put(
104 StateStrings.Events.LTT_EVENT_PROCESS_EXIT.getInName(),
105 instantiateBeforeHandler.getProcessExitHandler());
106
107 eventNametoBeforeProcessor.put(
108 StateStrings.Events.LTT_EVENT_PROCESS_FREE.getInName(),
109 instantiateBeforeHandler.getProcessFreeHandler());
110
111 eventNametoBeforeProcessor.put(
112 StateStrings.Events.LTT_EVENT_STATEDUMP_END.getInName(),
113 instantiateBeforeHandler.getStateDumpEndHandler());
114
115
116 // AFTER HOOKS
117 eventNametoAfterProcessor.put(
118 StateStrings.Events.LTT_EVENT_SCHED_SCHEDULE.getInName(),
119 instantiateAfterHandler.getSchedChangeHandler());
120
121 eventNametoAfterProcessor.put(
122 StateStrings.Events.LTT_EVENT_PROCESS_FORK.getInName(),
123 instantiateAfterHandler.getProcessForkHandler());
124
125 eventNametoAfterProcessor.put(
126 StateStrings.Events.LTT_EVENT_PROCESS_EXIT.getInName(),
127 instantiateAfterHandler.getProcessExitHandler());
128
129 eventNametoAfterProcessor.put(StateStrings.Events.LTT_EVENT_EXEC
130 .getInName(), instantiateAfterHandler.getProcessExecHandler());
131
132 eventNametoAfterProcessor.put(
133 StateStrings.Events.LTT_EVENT_THREAD_BRAND.getInName(),
134 instantiateAfterHandler.GetThreadBrandHandler());
135
136 eventNametoAfterProcessor.put(
137 StateStrings.Events.LTT_EVENT_PROCESS_STATE.getInName(),
138 instantiateAfterHandler.getEnumProcessStateHandler());
139
140 finishProcesor = new FlowFinishUpdateHandler();
141 }
142
143 // ========================================================================
144 // Public methods
145 // =======================================================================
146 /**
147 * The event processors are common to all traces an multiple instances will
148 * use more memory unnecessarily
149 *
150 * @return
151 */
152 public static AbsEventToHandlerResolver getInstance() {
153 if (instance == null) {
154 instance = new FlowEventToHandlerFactory();
155 }
156 return instance;
157 }
158
159 @Override
160 public ILttngEventProcessor getAfterProcessor(String eventType) {
161 return eventNametoAfterProcessor.get(eventType);
162 }
163
164 @Override
165 public ILttngEventProcessor getBeforeProcessor(String eventType) {
166 return eventNametoBeforeProcessor.get(eventType);
167 }
168
169 @Override
170 public ILttngEventProcessor getfinishProcessor() {
171 return finishProcesor;
172 }
173
174 @Override
175 public ILttngEventProcessor getStateUpdaterProcessor(String eventType) {
176 return null;
177 }
178 }
This page took 0.035417 seconds and 5 git commands to generate.