⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iiop_z_http_transportfactory.java

📁 人工智能中Agent开发包。多 Agent 系统是处理自治 Agent 之间知识层的协作问题
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            } catch (Exception e) {
                // exception is intensional and is handled by then next try
                //e.printStackTrace();
            }
            
            try {
                debug("objb == " + objb.toString());
                FIPA.MTS target = FIPA.MTSHelper.narrow( objb );
                
                debug("target == " + target.toString());
                OutTray trans =  new FIPA_2000_IIOP_Transport(target);
                //  System.out.println("Setting address");
                pool.addConnection("corbaname::"+address,trans);
                return trans;
            } catch (Exception e) {
                // exception is intensional and is thrown next...
                //e.printStackTrace();
            }
            throw new TransportUnsupportedException("iiop target appears not to be returning a object with"+
            " an interface that is understood by Zeus" +
            "\n currently we have only FIPA_2000/99 (FIPA.MTS) & FIPA_97 (FIPA_Agent_97)" +
            "sorry");
            
        }
        else if (address.startsWith("corbaname")) {
            address = address.substring(11,address.length());
            // System.out.println("address = " + address);
            StringTokenizer tokens = new StringTokenizer(address,"/");
            String ofInterest = tokens.nextToken();
            // System.out.println("of interest = " + ofInterest);
            StringTokenizer addressFinder = new StringTokenizer(ofInterest,":");
            String addr = addressFinder.nextToken(); // should be machine.domain.type
            // System.out.println("addr = " + addr);
            String port = addressFinder.nextToken(); // should be a number
            //System.out.println("port = " + port);
            Properties prop = new Properties();
            prop.setProperty("org.omg.CORBA.ORBInitialHost",addr);
            prop.setProperty("org.omg.CORBA.ORBInitialPort",port);
            String args [] = new String[0];
            ORB orb = ORB.init(args, prop);
            org.omg.CORBA.Object objb = null;
            debug(orb.toString());
            String list [] = orb.list_initial_services();
            for (int i = 0; i < list.length; i++) {
                debug(list[i]);
            }
            try {
                org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
                NamingContext nc = NamingContextHelper.narrow(objRef);
                //testNamingContext (nc,orb);
                boolean done = false ;
                NameComponent allPath[] = new NameComponent [_maxSize];
                int count =0;
                String name = null;
                while (tokens.hasMoreTokens()) {
                    name = tokens.nextToken();
                    debug("name = " + name);
                }
                objb = resolveNaming(nc,orb,name);
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            
            try {
                debug("objb == " + objb.toString());
                FIPA_Agent_97 target =  FIPA_Agent_97Helper.narrow(objb);
                OutTray trans = new FIPA_97_IIOP_Transport(target);
                pool.addConnection("corbaname::"+address,trans);
                return trans;
            } catch (Exception e) {
                // exception is intensional and is handled by then next try
                //e.printStackTrace();
            }
            
            try {
                debug("objb == " + objb.toString());
                FIPA.MTS target = FIPA.MTSHelper.narrow( objb );
                
                debug("target == " + target.toString());
                OutTray trans =  new FIPA_2000_IIOP_Transport(target);
                //  System.out.println("Setting address");
                pool.addConnection("corbaname::"+address,trans);
                return trans;
            } catch (Exception e) {
                // exception is intensional and is thrown next...
                //e.printStackTrace();
            }
            throw new TransportUnsupportedException("iiop target appears not to be returning a object with"+
            " an interface that is understood by Zeus" +
            "\n currently we have only FIPA_2000/99 (FIPA.MTS) & FIPA_97 (FIPA_Agent_97)" +
            "sorry");
            
        }
        
        else if (address.startsWith("IOR")) {
            Properties prop = new Properties();
            // prop.setProperty("org.omg.CORBA.ORBInitialHost",addr);
            //prop.setProperty("org.omg.CORBA.ORBInitialPort",port);
            String args [] = new String[0];
            ORB orb = ORB.init(args,null);
            
            org.omg.CORBA.Object objb = orb.string_to_object(address);
            debug("orb = " + objb.toString());
            FIPA.MTS target = FIPA.MTSHelper.narrow(objb);
            debug("MTS = " + target.toString());
            OutTray trans = new FIPA_2000_IIOP_Transport(target);
            debug("trans = " + trans.toString());
            pool.addConnection(address,trans);
            return trans;
            
        }
        else if (address.startsWith("http")) {
            FIPA_2000_HTTP_Accessor conn = new FIPA_2000_HTTP_Accessor(address);
            OutTray trans = new FIPA_2000_HTTP_Transport(conn,file);
            pool.addConnection(address,trans);
            return (trans);
            
        }
        else {
            try {
                ZeusParser.address(address); // was commented...
                OutTray trans = new Zeus_Native_Transport(context);
                pool.addConnection(address,trans);
                return trans; }
            catch ( Exception e) {
                e.printStackTrace();
                throw new TransportUnsupportedException("No transport supported for this address " +
                "tried FIPA_97_IIOP, FIPA_2000_IIOP & zeus native");
                
                
            }
        }
    }
    
    
    
    
    private void testNamingContext(NamingContext nc,ORB orb ) {
        try {
            BindingListHolder bl = new BindingListHolder();
            BindingIteratorHolder blIt= new BindingIteratorHolder();
            nc.list(1000, bl, blIt);
            org.omg.CosNaming.Binding bindings[] = bl.value;
            if (bindings.length == 0) return;
            for (int i=0; i < bindings.length; i++) {
                // get the object reference for each binding
                org.omg.CORBA.Object obj = nc.resolve(bindings[i].binding_name);
                
                int lastIx = bindings[i].binding_name.length-1;
                
                // check to see if this is a naming context
                if (bindings[i].binding_type == BindingType.ncontext) {
                    testNamingContext((NamingContext) obj, orb);
                } else {
                    debug("Object: " + bindings[i].binding_name[lastIx].id);
                }
                
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    /**
     * primative at the mo  - walks the whole tree
     */
    private org.omg.CORBA.Object resolveNaming(NamingContext nc,ORB orb, String name  ) {
        try {
            BindingListHolder bl = new BindingListHolder();
            BindingIteratorHolder blIt= new BindingIteratorHolder();
            nc.list(1000, bl, blIt);
            org.omg.CosNaming.Binding bindings[] = bl.value;
            debug(bindings.toString());
            // if (bindings.length == 0) return;
            for (int i=0; i < bindings.length; i++) {
                // get the object reference for each binding
                org.omg.CORBA.Object obj = nc.resolve(bindings[i].binding_name);
                if (obj == null) { debug("BAD NAMING CONTEXT"); }
                int lastIx = bindings[i].binding_name.length-1;
                
                // check to see if this is a naming context
                if (bindings[i].binding_type == BindingType.ncontext) {
                    debug("name == "+ name);
                    debug("orb == " + orb.toString());
                    debug("obj == " + obj.toString());
                    try {
                        NamingContext ncRef = NamingContextHelper.narrow(obj);
                        //   NamingContext namer = (NamingContext) obj;
                        obj = resolveNaming(ncRef, orb, name);
                        return (obj); }
                    catch (Exception e) {
                        debug("E");
                        e.printStackTrace();
                        debug(bindings[i].binding_type.toString());
                        for (int count = 0; count<bindings[i].binding_name.length; count++) {
                            debug(bindings[i].binding_name[count].id);
                            debug(bindings[i].binding_name[count].kind);}
                        
                        return (org.omg.CORBA.Object) obj;
                    }
                    
                } else {
                    debug("in else");
                    if ( bindings[i].binding_name[lastIx].id.equalsIgnoreCase(name)) {
                        debug("got a match");
                        return (obj);
                    }
                    else {
                        debug("bindings[i].binding_name[lastIx].id == " +bindings[i].binding_name[lastIx].id);
                        debug("but name was " + name);
                    }
                    
                }
                debug("end of loop");
            }
            
            
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        // no match, returning null.
        return null;
    }// end resolveName
    
    
    
    
    void debug(String str) {
        System.out.println(str);
    }
     
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -