travelbroker.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 693 行 · 第 1/2 页
JAVA
693 行
/* TravelBroker.java * $Id: TravelBroker.java,v 2.5 1997-12-07 14:59:50+09 ht Exp $ * $Name: alpha5_1-release $ * COPYRIGHT NOTICE goes here */package com.ibm.acl.kqmlsample.travel;import com.ibm.acl.kqml.*;import com.ibm.acl.util.*;import com.ibm.acl.facilitator.FacilitatorProperties;import java.lang.*;import java.io.*;import java.net.*;import java.util.*;/** * TravelBroker Sample * * @version $Revision: 2.5 $ $Date: 1997-12-07 14:59:50+09 $ * @author Osamu Furusawa * @author Hajime Tsuchitani */public class TravelBroker extends Thread { private static final String rcsid = "$Id: TravelBroker.java,v 2.5 1997-12-07 14:59:50+09 ht Exp $ $Name: alpha5_1-release $"; /** * This agnet has the reference of KQMLManager, * this agnet is KQML-Speakable. */ private KQMLManager kManager; /** * agent name */ private String agentName; /** * local hostname (:sender) */ private String localHost; /** * facilitator address (:receiver) */ private String facilitator; /** * receiver */ private String receiverAddr; /** * in-reply-to ID for subscribe */ private String subscribeID; /** * lifecycle ID */ private String lifecycleID; /** * yellowpage ID */ private String yellowpageID; /** * port number that this agent uses. */ private int port; TravelBrokerFrame tFrame = new TravelBrokerFrame("TravelBroker", this); /** * Constructor * * @param port socket port number. */ public TravelBroker(int port){ this.port = port; FacilitatorProperties fp; try { fp = new FacilitatorProperties(); } catch (IOException ex) { ex.printStackTrace(); return; } facilitator = fp.getOneURL("ktp"); if (facilitator == null) { print(" no ktp facilitator found, system exit!"); System.exit(1); } agentName = new String("TravelBroker"); print("port" + port); try { InetAddress home = InetAddress.getLocalHost(); StringBuffer buf = new StringBuffer("ktp://"); buf.append(home.getHostName() + ":"); buf.append(Integer.toString(port)); localHost = new String(buf.toString()); } catch (UnknownHostException e) { System.err.println("Unknown HostName"); System.exit(1); } tFrame.show(); } public TravelBrokerFrame getFrame() { return tFrame; } /** * run * */ public void run() { if ( -1 != port ) { kManager = new KQMLManager(agentName, "ktp", port); // scenario - (11) setRegisterL(); // scenario - (12) setRecommendoneInsertY(); // scenario - (14) setInsertY(); // scenario - (15) setAdvertiseBrokerallAskallT(); // scenario - (16) setAdvertiseRecruitoneSubAskallT(); // scenario - (17) setRecommendoneSubAskallY(); // scenario - (19) // setSubAskallY(); } else { System.err.println(" .facilitator file is invalid"); } } /** * Travel Broker register on LifeCycle * scenario (11) */ private void setRegisterL() { KQML kqml = new KQML(); String rw = new String(kManager.getInitialID()); kqml.setPerformative("register"); kqml.setParameter(":name", agentName); kqml.setParameter(":sender", localHost); kqml.setParameter(":receiver", facilitator); kqml.setParameter(":reply-with", rw); kqml.setParameter(":language", "anACL"); kqml.setParameter(":ontology", "lifecycle"); kqml.setContent("(:class Facilitator)"); Conversation conv = null; try { conv = (Conversation) kManager.sendMessage(kqml); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } conv.getResult().waitFor(45000); Result res = conv.getResult(); if ( res.isAvailable()) { ReturnValue rtn = (ReturnValue)res.getResult(); if (rtn.isOK()) { lifecycleID = new String((String)rtn.getReturnValue()); print("register: " + lifecycleID); } else { System.err.println("setRegisterL() :Error in registered process"); System.err.println("setRegisterL() : " + (String)rtn.getReturnValue()); System.exit(-1); } } else { System.err.println("setRegisterL() :Error Result isn't available"); System.exit(-1); } } /** * TravelBroker recommend-one (insert) * scenario (12) * */ private void setRecommendoneInsertY() { KQML kqml = new KQML(); String rw = new String(kManager.getInitialID()); kqml.setPerformative("recommend-one"); kqml.setParameter(":name", agentName); kqml.setParameter(":sender", localHost); kqml.setParameter(":receiver", facilitator); kqml.setParameter(":reply-with", rw); kqml.setParameter(":language", "KQML"); kqml.setParameter(":ontology", "kqml-ontology"); KQML kqml_i = new KQML(); kqml_i.setPerformative("insert"); kqml_i.setParameter(":sender", localHost); kqml_i.setParameter(":language", "anACL"); kqml_i.setParameter(":ontology", "yellowpages"); String content = new String( "(:category " +" \n"+ " :subCategory " +" \n"+ " :class " +" \n"+ " :name )" ); kqml_i.setContent(content); kqml.setContent(kqml_i); Conversation conv = null; try { conv = (Conversation) kManager.sendMessage(kqml); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } conv.getResult().waitFor(45000); Result res = conv.getResult(); if ( res.isAvailable() ) { ReturnValue rtn = (ReturnValue)res.getResult(); if ( rtn.isOK() ) { print("result value : " + rtn.getReturnValue().toString()); KQML kqml_result = null; try { kqml_result = new KQML(rtn.getReturnValue().toString()); } catch (NotListException ex) { ex.printStackTrace(); System.exit(1); } catch (MalformedSExpressionException ex) { ex.printStackTrace(); System.exit(1); } // reserve address of agent that can be inserted receiverAddr = new String(kqml_result.getParameter(":receiver")); }else{ System.err.println("setRecommendoneInsertY(): scenaio 13"); System.err.println("setRecommendoneInsertY(): " + (String)rtn.getReturnValue()); System.exit(-1); } } else { System.err.println("setRecommendoneInsertY() :Error Result isn't available"); System.exit(-1); } } /** * Travel Broker Insert(yellowpages) * scenario (14) * */ private void setInsertY() { KQML kqml = new KQML(); String rw = new String(kManager.getInitialID()); kqml.setPerformative("insert"); kqml.setParameter(":name", agentName); kqml.setParameter(":sender", localHost); kqml.setParameter(":receiver", receiverAddr); kqml.setParameter(":reply-with", rw); kqml.setParameter(":language", "anACL"); kqml.setParameter(":ontology", "yellowpages"); String content = new String( "(:ProviderName \"An Travel Broker\"" +"\n"+ " :category travel" +"\n"+ " :subCategory travel-broker" +"\n"+ " :class travel-broker" +"\n"+ " :name TravelBroker" +"\n"+ " :language anACL" +"\n"+ " :ontology travel-broker )" ); kqml.setContent(content); Conversation conv = null; try { conv = (Conversation) kManager.sendMessage(kqml); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } conv.getResult().waitFor(45000); Result res = conv.getResult(); if ( res.isAvailable()) { ReturnValue rtn = (ReturnValue)res.getResult(); if ( rtn.isOK() ) { yellowpageID = new String((String)rtn.getReturnValue()); print("yellowpage: " + yellowpageID); } else { System.err.println("setInsertY() :Error in registered process"); System.err.println("setInsertY() : " + (String)rtn.getReturnValue());
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?