KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > util > AbstractTransparentAppMultiplexer


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tctest.util;
5
6 import com.tc.object.config.ConfigVisitor;
7 import com.tc.object.config.DSOClientConfigHelper;
8 import com.tc.object.config.TransparencyClassSpec;
9 import com.tc.simulator.app.ApplicationConfig;
10 import com.tc.simulator.listener.ListenerProvider;
11 import com.tctest.runner.AbstractTransparentApp;
12
13 import java.util.concurrent.CyclicBarrier JavaDoc;
14
15 public abstract class AbstractTransparentAppMultiplexer extends AbstractTransparentApp
16 {
17     private final CyclicBarrier JavaDoc myBarrier;
18     
19     public AbstractTransparentAppMultiplexer(String JavaDoc appId, ApplicationConfig cfg, ListenerProvider listenerProvider)
20     {
21       super(appId, cfg, listenerProvider);
22       myBarrier = new CyclicBarrier JavaDoc(getParticipantCount());
23     }
24     
25     public void run()
26     {
27       try {
28         int index = myBarrier.await();
29         run(myBarrier, index);
30       } catch (Throwable JavaDoc t) {
31         notifyError(t);
32       }
33     }
34     
35     public abstract void run(CyclicBarrier JavaDoc barrier, int index) throws Throwable JavaDoc;
36     
37     public static void visitL1DSOConfig(ConfigVisitor visitor, DSOClientConfigHelper config)
38     {
39       TransparencyClassSpec spec = config.getOrCreateSpec(AbstractTransparentAppMultiplexer.class.getName());
40       
41       DSOConfigUtil.addWriteAutolock(config, CyclicBarrier JavaDoc.class);
42       DSOConfigUtil.addRoot(spec, "myBarrier");
43     }
44 }
45
Popular Tags