package test.interop.miop_tao_interop; import java.util.Properties; import java.util.Arrays; import org.omg.CORBA.ORB; public class Client implements Runnable { private UIPMC_Object obj; private int payload; private int calls; private int id; private int sleep; public Client (UIPMC_Object obj, int payload, int offset, int calls, int sleep) { this.obj = obj; this.payload = payload; this.calls = calls; this.id = offset; this.sleep = sleep; } public void run() { int i; synchronized (this) { i = this.id++; } byte[] seq = new byte[this.payload]; Arrays.fill(seq, (byte) ClientIDs.value.charAt(i)); for (int j = 0; j < this.calls; ++j) { this.obj.process(seq); try { Thread.sleep(this.sleep); } catch (InterruptedException _) { } } } private static String ior = "file://test.ior"; private static int payload_length = 1000; private static int client_threads = 5; private static int id_offset = 0; private static int payload_calls = 100; private static int sleep_millis = 100; private static boolean do_shutdown = false; private static boolean parse_args(String[] args) { for (int i = 0; i < args.length; ++i) { if (args[i].equals("-k")) ior = args[++i]; else if (args[i].equals("-p")) payload_length = Integer.parseInt(args[++i]); else if (args[i].equals("-t")) client_threads = Integer.parseInt(args[++i]); else if (args[i].equals("-f")) id_offset = Integer.parseInt(args[++i]); else if (args[i].equals("-c")) payload_calls = Integer.parseInt(args[++i]); else if (args[i].equals("-s")) sleep_millis = Integer.parseInt(args[++i]); else if (args[i].equals("-x")) { do_shutdown = true; ++i; } else { System.err.println("usage: Test.Client -k <ior> -p <payload_length> -t <client_threads> -f <id_offset> -c <payload_calls> -s <sleep_millis> -x"); return false; } } System.out.println("args to be used: -k '" + ior + "' -p " + Integer.toString(payload_length) + " -t " + Integer.toString(client_threads) + " -f " + Integer.toString(id_offset) + " -c " + Integer.toString(payload_calls) + " -s " + Integer.toString(sleep_millis) + (do_shutdown ? " -x" : "")); return true; } public static void main(String[] args) throws Exception { Properties props = new Properties(); props.setProperty("jacorb.transport.factories", "org.jacorb.orb.iiop.IIOPFactories,org.jacorb.orb.miop.MIOPFactories"); props.setProperty("jacorb.transport.client.selector", "org.jacorb.orb.miop.MIOPProfileSelector"); // init ORB ORB orb = ORB.init(args, props); if (!parse_args(args)) return; Hello hello_obj = HelloHelper.narrow(orb.string_to_object(ior)); if (do_shutdown) hello_obj.shutdown(); else { UIPMC_Object uipmc_obj = hello_obj.get_object(); Client client = new Client(uipmc_obj, payload_length, id_offset, payload_calls, sleep_millis); Thread[] client_runners = new Thread[client_threads]; for (int i = 0; i < client_runners.length; ++i) { client_runners[i] = new Thread(client); client_runners[i].start(); } for (int i = 0; i < client_runners.length; ++i) client_runners[i].join(); while (orb.work_pending()) orb.perform_work(); } System.out.println(); System.out.println("Client finished successfully."); } }