package org.jacorb.test.bugs.bug940; import org.jacorb.test.EmptyException; import org.jacorb.test.TimingServer; import org.omg.CORBA.LocalObject; import org.omg.CORBA.ORB; import org.omg.PortableInterceptor.ClientRequestInfo; import org.omg.PortableInterceptor.ClientRequestInterceptor; import org.omg.PortableInterceptor.ForwardRequest; import static org.jacorb.test.bugs.bug940.Bug940Test.setReplyEndTime; final public class ClientRequestInterceptorImpl extends LocalObject implements ClientRequestInterceptor { private String name; private TimingServer ts; private int timeout = 500; private boolean inInterceptor; public ClientRequestInterceptorImpl(String string, ORB orb) { this.name = string; } void setInInterceptor(boolean b) { inInterceptor = b; } void setTimingServer(TimingServer ts) { this.ts = ts; } void setTimingServer(TimingServer ts, int timeout) { this.timeout = timeout; this.ts = setReplyEndTime(ts, System.currentTimeMillis() + timeout); } @Override public void send_request(ClientRequestInfo ri) throws ForwardRequest { // Prevent infinite loop. if (inInterceptor) { return; } if (ri.operation().equals("server_time")) { inInterceptor = true; try { ts.ex_op('a', 0); } catch (EmptyException e) { e.printStackTrace(); } } else if (!ri.operation().equals("ex_op")) { inInterceptor = true; ts.operation(5, timeout / 2); } } @Override public void receive_exception(ClientRequestInfo ri) throws ForwardRequest { } @Override public void receive_other(ClientRequestInfo ri) throws ForwardRequest { } @Override public void receive_reply(ClientRequestInfo ri) { } @Override public void send_poll(ClientRequestInfo ri) { } @Override public void destroy() { } @Override public String name() { return this.name; } }