Commit | Line | Data |
---|---|---|
8035003b ASL |
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 | *******************************************************************************/ | |
12 | package org.eclipse.linuxtools.lttng.ui.views.resources.evProcessor; | |
13 | ||
14 | import java.util.HashMap; | |
15 | import java.util.Map; | |
16 | ||
17 | import org.eclipse.linuxtools.lttng.state.StateStrings; | |
18 | import org.eclipse.linuxtools.lttng.state.evProcessor.AbsEventProcessorFactory; | |
19 | import org.eclipse.linuxtools.lttng.state.evProcessor.IEventProcessing; | |
20 | ||
21 | /** | |
22 | * Builds a Map from string event name to a processing handler object, the | |
23 | * processors implement the same interface to facilitate transparent methods | |
24 | * call, | |
25 | * | |
26 | * The map key String is the entry point of the raw events. Using a hash speeds | |
27 | * up the resolution of the appropriate processor | |
28 | * | |
29 | * @author alvaro | |
30 | * | |
31 | */ | |
32 | public class ResourcesTRangeUpdateFactory extends AbsEventProcessorFactory { | |
28b94d61 FC |
33 | // ======================================================================== |
34 | // Data | |
35 | // ======================================================================= | |
36 | private final Map<String, IEventProcessing> eventNametoBeforeProcessor = new HashMap<String, IEventProcessing>(); | |
37 | private final Map<String, IEventProcessing> eventNametoAfterProcessor = new HashMap<String, IEventProcessing>(); | |
8035003b | 38 | private ResourcesTRangeFinishUpdateHandler finishProcessor = null; |
28b94d61 FC |
39 | private static ResourcesTRangeUpdateFactory instance = null; |
40 | private ResourcesTRangeBeforeUpdateHandlers instantiateBeforeHandler = new ResourcesTRangeBeforeUpdateHandlers(); | |
41 | private ResourcesTRangeAfterUpdateHandlers instantiateAfterHandler = new ResourcesTRangeAfterUpdateHandlers(); | |
42 | ||
8035003b | 43 | private ResourcesTRangeUpdateFactory() { |
28b94d61 FC |
44 | // Create one instance of each individual event handler and add the |
45 | // instance to the map | |
8035003b | 46 | |
28b94d61 | 47 | // *** BEFORE HOOKS *** |
8035003b ASL |
48 | eventNametoBeforeProcessor.put( |
49 | StateStrings.Events.LTT_EVENT_SCHED_SCHEDULE.getInName(), | |
50 | instantiateBeforeHandler.getBeforeSchedChangeHandler()); | |
28b94d61 FC |
51 | |
52 | eventNametoBeforeProcessor.put(StateStrings.Events.LTT_EVENT_TRAP_ENTRY | |
8035003b ASL |
53 | .getInName(), instantiateBeforeHandler |
54 | .getBeforeExecutionModeTrap()); | |
55 | eventNametoBeforeProcessor.put(StateStrings.Events.LTT_EVENT_TRAP_EXIT | |
56 | .getInName(), instantiateBeforeHandler | |
57 | .getBeforeExecutionModeTrap()); | |
58 | eventNametoBeforeProcessor.put( | |
59 | StateStrings.Events.LTT_EVENT_PAGE_FAULT_ENTRY.getInName(), | |
60 | instantiateBeforeHandler.getBeforeExecutionModeTrap()); | |
61 | eventNametoBeforeProcessor.put( | |
62 | StateStrings.Events.LTT_EVENT_PAGE_FAULT_EXIT.getInName(), | |
63 | instantiateBeforeHandler.getBeforeExecutionModeTrap()); | |
64 | eventNametoBeforeProcessor.put( | |
65 | StateStrings.Events.LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY | |
66 | .getInName(), instantiateBeforeHandler | |
67 | .getBeforeExecutionModeTrap()); | |
68 | eventNametoBeforeProcessor | |
69 | .put(StateStrings.Events.LTT_EVENT_PAGE_FAULT_NOSEM_EXIT | |
70 | .getInName(), instantiateBeforeHandler | |
71 | .getBeforeExecutionModeTrap()); | |
28b94d61 FC |
72 | |
73 | eventNametoBeforeProcessor.put(StateStrings.Events.LTT_EVENT_IRQ_ENTRY | |
8035003b ASL |
74 | .getInName(), instantiateBeforeHandler |
75 | .getBeforeExecutionModeIrq()); | |
76 | eventNametoBeforeProcessor.put(StateStrings.Events.LTT_EVENT_IRQ_EXIT | |
77 | .getInName(), instantiateBeforeHandler | |
78 | .getBeforeExecutionModeIrq()); | |
28b94d61 FC |
79 | |
80 | eventNametoBeforeProcessor.put( | |
8035003b ASL |
81 | StateStrings.Events.LTT_EVENT_SOFT_IRQ_RAISE.getInName(), |
82 | instantiateBeforeHandler.getBeforeExecutionModeSoftIrq()); | |
83 | eventNametoBeforeProcessor.put( | |
84 | StateStrings.Events.LTT_EVENT_SOFT_IRQ_ENTRY.getInName(), | |
85 | instantiateBeforeHandler.getBeforeExecutionModeSoftIrq()); | |
86 | eventNametoBeforeProcessor.put( | |
87 | StateStrings.Events.LTT_EVENT_SOFT_IRQ_EXIT.getInName(), | |
88 | instantiateBeforeHandler.getBeforeExecutionModeSoftIrq()); | |
28b94d61 FC |
89 | |
90 | eventNametoBeforeProcessor.put( | |
8035003b ASL |
91 | StateStrings.Events.LTT_EVENT_REQUEST_ISSUE.getInName(), |
92 | instantiateBeforeHandler.getBeforeBdevEvent()); | |
93 | eventNametoBeforeProcessor.put( | |
94 | StateStrings.Events.LTT_EVENT_REQUEST_COMPLETE.getInName(), | |
95 | instantiateBeforeHandler.getBeforeBdevEvent()); | |
28b94d61 FC |
96 | |
97 | // *** AFTER HOOKS *** | |
41dc35d0 | 98 | eventNametoAfterProcessor.put( |
8035003b ASL |
99 | StateStrings.Events.LTT_EVENT_SCHED_SCHEDULE.getInName(), |
100 | instantiateAfterHandler.getAfterSchedChangeHandler()); | |
101 | ||
102 | finishProcessor = new ResourcesTRangeFinishUpdateHandler(); | |
28b94d61 FC |
103 | } |
104 | ||
105 | /** | |
8035003b ASL |
106 | * |
107 | */ | |
108 | public static AbsEventProcessorFactory getInstance() { | |
28b94d61 | 109 | if (instance == null) { |
8035003b | 110 | instance = new ResourcesTRangeUpdateFactory(); |
28b94d61 FC |
111 | } |
112 | return instance; | |
113 | } | |
114 | ||
115 | @Override | |
116 | public IEventProcessing getAfterProcessor(String eventType) { | |
117 | return eventNametoAfterProcessor.get(eventType); | |
118 | } | |
8035003b | 119 | |
28b94d61 FC |
120 | @Override |
121 | public IEventProcessing getBeforeProcessor(String eventType) { | |
122 | return eventNametoBeforeProcessor.get(eventType); | |
123 | } | |
8035003b ASL |
124 | |
125 | @Override | |
126 | public IEventProcessing getfinishProcessor() { | |
127 | return finishProcessor; | |
128 | } | |
129 | } |