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
);
61 handleIncomingData(event
);
67 provider
.sendRequest(subRequest
);
69 // Return a dummy context
70 return new TmfContext();
73 // Queue 2 synthetic events per base event
74 private void handleIncomingData(final ITmfEvent e
) {
75 queueResult(new TmfSyntheticEventStub(e
));
76 queueResult(new TmfSyntheticEventStub(e
));
79 private static final int TIMEOUT
= 10000;
82 public TmfSyntheticEventStub
getNext(final ITmfContext context
) {
83 TmfSyntheticEventStub data
= null;
85 data
= (TmfSyntheticEventStub
) fDataQueue
.poll(TIMEOUT
, TimeUnit
.MILLISECONDS
);
87 throw new InterruptedException();
90 catch (final InterruptedException e
) {
95 public void queueResult(final TmfSyntheticEventStub data
) {
98 ok
= fDataQueue
.offer(data
, TIMEOUT
, TimeUnit
.MILLISECONDS
);
100 throw new InterruptedException();
103 catch (final InterruptedException e
) {