1 /*******************************************************************************
2 * Copyright (c) 2009, 2013 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 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.component
;
15 import java
.util
.concurrent
.TimeUnit
;
17 import org
.eclipse
.linuxtools
.internal
.tmf
.core
.component
.TmfProviderManager
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.component
.ITmfEventProvider
;
19 import org
.eclipse
.linuxtools
.tmf
.core
.component
.TmfEventProvider
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.request
.ITmfEventRequest
;
22 import org
.eclipse
.linuxtools
.tmf
.core
.request
.ITmfEventRequest
.ExecutionType
;
23 import org
.eclipse
.linuxtools
.tmf
.core
.request
.TmfEventRequest
;
24 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimeRange
;
25 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfContext
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfContext
;
27 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.event
.TmfSyntheticEventStub
;
30 * <b><u>TmfSyntheticEventProviderStub</u></b>
32 * TODO: Implement me. Please.
34 @SuppressWarnings("javadoc")
35 public class TmfSyntheticEventProviderStub
extends TmfEventProvider
{
37 public static final int NB_EVENTS
= 1000;
39 public TmfSyntheticEventProviderStub() {
40 super("TmfSyntheticEventProviderStub", TmfSyntheticEventStub
.class);
44 public ITmfContext
armRequest(final ITmfEventRequest request
) {
46 // Get the TmfSyntheticEventStub provider
47 final ITmfEventProvider
[] eventProviders
= TmfProviderManager
.getProviders(ITmfEvent
.class, TmfEventProviderStub
.class);
48 final ITmfEventProvider provider
= eventProviders
[0];
50 final TmfTimeRange range
= request
.getRange();
51 final TmfEventRequest subRequest
=
52 new TmfEventRequest(ITmfEvent
.class, range
, 0, NB_EVENTS
, ExecutionType
.FOREGROUND
) {
54 public void handleData(final ITmfEvent event
) {
55 super.handleData(event
);
57 handleIncomingData(event
);
63 provider
.sendRequest(subRequest
);
65 // Return a dummy context
66 return new TmfContext();
69 // Queue 2 synthetic events per base event
70 private void handleIncomingData(final ITmfEvent e
) {
71 queueResult(new TmfSyntheticEventStub(e
));
72 queueResult(new TmfSyntheticEventStub(e
));
75 private static final int TIMEOUT
= 10000;
78 public TmfSyntheticEventStub
getNext(final ITmfContext context
) {
79 TmfSyntheticEventStub data
= null;
81 data
= (TmfSyntheticEventStub
) fDataQueue
.poll(TIMEOUT
, TimeUnit
.MILLISECONDS
);
83 throw new InterruptedException();
86 catch (final InterruptedException e
) {
91 public void queueResult(final TmfSyntheticEventStub data
) {
94 ok
= fDataQueue
.offer(data
, TIMEOUT
, TimeUnit
.MILLISECONDS
);
96 throw new InterruptedException();
99 catch (final InterruptedException e
) {