1 /*******************************************************************************
2 * Copyright (c) 2009, 2014 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
.BlockingQueue
;
16 import java
.util
.concurrent
.LinkedBlockingQueue
;
17 import java
.util
.concurrent
.TimeUnit
;
19 import org
.eclipse
.linuxtools
.internal
.tmf
.core
.component
.TmfProviderManager
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.component
.ITmfEventProvider
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.component
.TmfEventProvider
;
22 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
23 import org
.eclipse
.linuxtools
.tmf
.core
.request
.ITmfEventRequest
;
24 import org
.eclipse
.linuxtools
.tmf
.core
.request
.ITmfEventRequest
.ExecutionType
;
25 import org
.eclipse
.linuxtools
.tmf
.core
.request
.TmfEventRequest
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimeRange
;
27 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfContext
;
28 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfContext
;
29 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.event
.TmfSyntheticEventStub
;
32 * <b><u>TmfSyntheticEventProviderStub</u></b>
34 * TODO: Implement me. Please.
36 @SuppressWarnings("javadoc")
37 public class TmfSyntheticEventProviderStub
extends TmfEventProvider
{
39 public static final int NB_EVENTS
= 1000;
41 private final BlockingQueue
<ITmfEvent
> fDataQueue
= new LinkedBlockingQueue
<>(1000);
43 public TmfSyntheticEventProviderStub() {
44 super("TmfSyntheticEventProviderStub", TmfSyntheticEventStub
.class);
48 public ITmfContext
armRequest(final ITmfEventRequest request
) {
50 // Get the TmfSyntheticEventStub provider
51 final ITmfEventProvider
[] eventProviders
= TmfProviderManager
.getProviders(ITmfEvent
.class, TmfEventProviderStub
.class);
52 final ITmfEventProvider provider
= eventProviders
[0];
54 final TmfTimeRange range
= request
.getRange();
55 final TmfEventRequest subRequest
=
56 new TmfEventRequest(ITmfEvent
.class, range
, 0, NB_EVENTS
, ExecutionType
.FOREGROUND
) {
58 public void handleData(final ITmfEvent event
) {
59 super.handleData(event
);
60 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
) {