package ...;
import java.util.logging.Logger;
import alma.acs.component.client.ComponentClient;
import alma.ACS.CBDescIn;
import alma.ACS.CBDescOut;
import alma.ACSErr.Completion;
import alma.workshop.Async;
import alma.workshop.AsyncHelper;
import alma.ACS.CBuLong;
import alma.ACS.CBuLongPOA;
public class AsyncClient extends ComponentClient {
class CBuLongImpl extends CBuLongPOA
{
public unsigned long value;
public String status;
public MyTestCBvoid(Logger logger) {
status = "INIT";
this.value = 0;
}
public void working(unsigned long value, Completion completion, CBDescOut desc) {
status = "WORKING";
this.value = value;
}
public void done(unsigned long value, Completion completion, CBDescOut desc) {
status = "DONE";
this.value = value;
}
public boolean negotiate(long timeToTransit, CBDescOut desc) {
return true;
}
}
private Logger m_logger;
public AsyncClient() {
String managerLoc = System.getProperty("ACS.manager");
super(null, managerLoc, clientName);
m_logger = getContainerServices().getLogger()
}
public doStuff() {
org.omg.CORBA.Object obj = getContainerServices().getComponent("ASYNC");
Async comp = AsyncHelper.narrow(obj);
CBuLongImpl cb = new CBuLongImpl(m_logger);
CBuLong cbObj = alma.ACS.CBuLongHelper.narrow(getContainerServices().activateOffShoot(cb));
CBDescIn desc = new CBDescIn();
m_logger.info(cb.status);
comp.delayResult(8, cbObj, desc);
m_logger.info(cb.status);
Thread.sleep(5000);
m_logger.info(cb.status);
Thread.sleep(5000);
m_logger.info(cb.status);
m_logger.info(cb.value);
}
getContainerServices().releaseComponent("ASYNC");
}
public static void main(String[] args) {
AsyncClient client = new AsyncClient();
client.doStuff();
}
} |