1 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 ; 14 15 public abstract class AbstractTransparentAppMultiplexer extends AbstractTransparentApp 16 { 17 private final CyclicBarrier myBarrier; 18 19 public AbstractTransparentAppMultiplexer(String appId, ApplicationConfig cfg, ListenerProvider listenerProvider) 20 { 21 super(appId, cfg, listenerProvider); 22 myBarrier = new CyclicBarrier (getParticipantCount()); 23 } 24 25 public void run() 26 { 27 try { 28 int index = myBarrier.await(); 29 run(myBarrier, index); 30 } catch (Throwable t) { 31 notifyError(t); 32 } 33 } 34 35 public abstract void run(CyclicBarrier barrier, int index) throws Throwable ; 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 .class); 42 DSOConfigUtil.addRoot(spec, "myBarrier"); 43 } 44 } 45 | Popular Tags |