1 25 package org.objectweb.joram.mom.proxies; 26 27 import java.util.Vector ; 28 29 import fr.dyade.aaa.agent.AgentId; 30 import fr.dyade.aaa.agent.Channel; 31 32 36 public class MultiCnxSync { 37 38 private AgentId proxyId; 39 40 private Vector syncRequests = new Vector (); 41 42 private SyncRound currentRound = new SyncRound(); 43 44 public MultiCnxSync(AgentId pid) { 45 proxyId = pid; 46 } 47 48 public synchronized void send(RequestNot request) { 49 SyncRound localRound = currentRound; 50 syncRequests.addElement(request); 51 try { 52 wait(ConnectionManager.getMultiThreadSyncDelay()); 53 } catch (InterruptedException ie) { 54 } 55 if ((!localRound.done) && syncRequests.size() > 0) { 56 RequestNot[] requests = new RequestNot[syncRequests.size()]; 57 syncRequests.copyInto(requests); 58 syncRequests.clear(); 59 Channel.sendTo(proxyId, new ProxyRequestGroupNot(requests)); 60 localRound.done = true; 61 currentRound = new SyncRound(); 62 notifyAll(); 63 } 64 } 66 67 private static class SyncRound { 68 private volatile boolean done = false; 69 } 70 } 71 | Popular Tags |