import dbg.*; import org.omg.CORBA.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import inf101.*; import playerWindow.*; public class Client { public static void main(String args[]) { java.util.Properties props = System.getProperties(); props.put("org.omg.CORBA.ORBClass", "com.ooc.CORBA.ORB"); props.put("org.omg.CORBA.ORBSingletonClass", "com.ooc.CORBA.ORBSingleton"); int status = 0; ORB orb = null; try { // // Create ORB // orb = ORB.init(args, props); // // Run tests // status = run(orb, args); // Resolve Root POA, creating a single IIOP endpoing. org.omg.PortableServer.POA rootPOA = org.omg.PortableServer.POAHelper.narrow(orb.resolve_initial_references("RootPOA")); // Get a reference to the POA manager for later use. org.omg.PortableServer.POAManager manager = rootPOA.the_POAManager(); manager.activate(); orb.run(); } catch(Exception ex) { ex.printStackTrace(); status = 1; } if(orb != null) { try { ((com.ooc.CORBA.ORB)orb).destroy(); } catch(Exception ex) { System.err.println(ex.getMessage()); ex.printStackTrace(); status = 1; } } System.exit(status); } static void printBinding(Binding b) { int i; for(i = 0 ; i < b.binding_name.length ; i++) { if(i > 0) System.out.print(" ; "); System.out.print(b.binding_name[i].id); } } static int run(ORB orb, String args[]) { // // Get naming service // org.omg.CORBA.Object obj = null; try { obj = orb.resolve_initial_references("NameService"); } catch(org.omg.CORBA.ORBPackage.InvalidName ex) { System.err.println("Can't resolve `NameService'"); return 1; } if(obj == null) { System.err.println("`NameService' is a nil object reference"); return 1; } NamingContext nc = null; try { nc = NamingContextHelper.narrow(obj); } catch(org.omg.CORBA.BAD_PARAM ex) { System.err.println("`NameService' is not " + "a NamingContext object reference"); return 1; } // // Get objects by name // try { int i; BindingListHolder bl = new BindingListHolder(); BindingIteratorHolder bi = new BindingIteratorHolder(); nc.list(999999, bl, bi); System.out.println("Available Gameservers (choose one):"); for(i = 0 ; i < bl.value.length ; i++) { System.out.print(i+1+")"); printBinding(bl.value[i]); System.out.println(""); } if(bi == null) throw new RuntimeException(); Inn tastatur = new Inn(); int j = 0; try { j= tastatur.inInt(); } catch(Exception ioexception) { System.out.println(ioexception.getMessage()); } j -= 1; String s = bl.value[j].binding_name[0].id; System.out.println("You've chosen: " + s); // // Resolve names with the Naming Service // NameComponent[] aName = new NameComponent[1]; aName[0] = new NameComponent(); aName[0].id = s; aName[0].kind = ""; org.omg.CORBA.Object aObj = nc.resolve(aName); Gameserver gameserver = GameserverHelper.narrow(aObj); // Create a Player(Impl) object, please don't modify! PlayerWindow pw = new PlayerWindow(); PlayerImpl playerImpl = new PlayerImpl(pw, gameserver, orb); pw.addPlayerWindowListener(playerImpl); pw.addWindowListener(playerImpl); Player player = playerImpl._this(orb); } catch(NotFound ex) { System.err.print("Got a `NotFound' exception ("); switch(ex.why.value()) { case NotFoundReason._missing_node: System.err.print("missing node"); break; case NotFoundReason._not_context: System.err.print("not context"); break; case NotFoundReason._not_object: System.err.print("not object"); break; } System.err.println(")"); ex.printStackTrace(); return 1; } catch(CannotProceed ex) { System.err.println("Got a `CannotProceed' exception"); ex.printStackTrace(); return 1; } catch(InvalidName ex) { System.err.println("Got an `InvalidName' exception"); ex.printStackTrace(); return 1; } return 0; } }