1 /*******************************************************************************
2 * Copyright (c) 2009, 2011, 2012 Ericsson
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
10 * William Bourque - Initial API and implementation
11 * Yuriy Vashchuk - Heritage correction.
12 * Francois Chouinard - Cleanup and refactoring
13 * Francois Chouinard - Moved from LTTng to TMF
14 *******************************************************************************/
16 package org
.eclipse
.linuxtools
.tmf
.ui
.views
.histogram
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
19 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimeRange
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.request
.ITmfDataRequest
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.request
.TmfEventRequest
;
22 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
25 * Class to request events for given time range from a trace to fill a HistogramDataModel and HistogramView.
28 * @author Francois Chouinard
31 public class HistogramRequest
extends TmfEventRequest
<ITmfEvent
> {
33 // ------------------------------------------------------------------------
35 // ------------------------------------------------------------------------
38 * The histogram data model to fill.
40 protected final HistogramDataModel fHistogram
;
42 // ------------------------------------------------------------------------
44 // ------------------------------------------------------------------------
50 * The histogram data model
52 * The time range to request data
54 * The index of the first event to retrieve
56 * The number of events requested
58 * The number of events per block
60 * The requested execution priority
63 public HistogramRequest(HistogramDataModel histogram
, TmfTimeRange range
,
64 int rank
, int nbEvents
, int blockSize
,
65 ITmfDataRequest
.ExecutionType execType
) {
66 super(ITmfEvent
.class, range
, rank
, nbEvents
,
67 (blockSize
> 0) ? blockSize
: ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
,
69 fHistogram
= histogram
;
72 // ------------------------------------------------------------------------
74 // ------------------------------------------------------------------------
77 * Handle the event from the trace by updating the histogram data model.
79 * @param event a event from the trace
80 * @see org.eclipse.linuxtools.tmf.core.request.TmfDataRequest#handleData(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
83 public void handleData(ITmfEvent event
) {
84 super.handleData(event
);
86 long timestamp
= event
.getTimestamp().normalize(0, -9).getValue();
87 fHistogram
.countEvent(getNbRead(), timestamp
);
92 * Complete the request. It also notifies the histogram model about the completion.
94 * @see org.eclipse.linuxtools.tmf.core.request.TmfDataRequest#handleCompleted()
97 public void handleCompleted() {
98 fHistogram
.complete();
99 super.handleCompleted();