package org.jacorb.test.orb.connection;
import org.jacorb.test.BiDirServerPOA;
import org.jacorb.test.ClientCallback;
import org.omg.BiDirPolicy.BIDIRECTIONAL_POLICY_TYPE;
import org.omg.BiDirPolicy.BOTH;
import org.omg.BiDirPolicy.BidirectionalPolicyValueHelper;
import org.omg.CORBA.Any;
import org.omg.CORBA.Policy;
import org.omg.PortableServer.IdAssignmentPolicyValue;
import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.LifespanPolicyValue;
import org.omg.PortableServer.POA;
/**
* @author Andre Spiegel
*/
public class BiDirServerImpl extends BiDirServerPOA
{
private ClientCallback callback = null;
public void register_callback(ClientCallback cc)
{
this.callback = cc;
}
public void callback_hello(String message)
{
final String msg = message;
new Thread (new Runnable()
{
public void run()
{
try
{
Thread.sleep (200);
}
catch (InterruptedException ex)
{
// ignore
}
callback.hello (msg);
}
}).start();
}
public int get_open_client_transports()
{
try
{
Thread.sleep (5000);
}
catch (InterruptedException ex)
{
// ignore
}
int count = org.jacorb.orb.iiop.ClientIIOPConnection.openTransports;
callback._release();
return count;
}
public static void main (String[] args) throws Exception
{
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
Any any = orb.create_any();
BidirectionalPolicyValueHelper.insert(any, BOTH.value);
POA root_poa = (POA) orb.resolve_initial_references("RootPOA");
Policy[] policies = new Policy[4];
policies[0] =
root_poa.create_lifespan_policy(LifespanPolicyValue.TRANSIENT);
policies[1] =
root_poa.create_id_assignment_policy(
IdAssignmentPolicyValue.SYSTEM_ID);
policies[2] =
root_poa.create_implicit_activation_policy(
ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);
policies[3] =
orb.create_policy(BIDIRECTIONAL_POLICY_TYPE.value, any);
POA bidir_poa =
root_poa.create_POA(
"BiDirPOA",
root_poa.the_POAManager(),
policies);
bidir_poa.the_POAManager().activate();
org.omg.CORBA.Object o =
bidir_poa.servant_to_reference(new BiDirServerImpl());
System.out.println ("SERVER IOR: " + orb.object_to_string(o));
System.out.flush();
orb.run();
}
}