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 + -
显示快捷键?