atpagent1.java

来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 269 行

JAVA
269
字号
/* ATPAgent1.java * $Id: ATPAgent1.java,v 2.10 1998-06-16 11:18:46+09 ht Exp $ * $Name: alpha5_1-release $ * COPYRIGHT NOTICE goes here */package com.ibm.acl.kqmlsample;import com.ibm.acl.kqml.*;import com.ibm.acl.facilitator.*;import com.ibm.acl.protocol.atp.*;import com.ibm.aglet.*;import com.ibm.aglet.event.*;import com.ibm.aglets.util.*;import java.lang.*;import java.net.URL;import java.util.*;/** * ATPAgent1 * * @version     $Name: alpha5_1-release $ $Revision: 2.10 $ $Date: 1998-06-16 11:18:46+09 $ * @author      Osamu Furusawa * @author      Hajime Tsuchitani */public class ATPAgent1 extends ATPAgent implements MobilityListener {  private static final String rcsid = "$Id: ATPAgent1.java,v 2.10 1998-06-16 11:18:46+09 ht Exp $ $Name: alpha5_1-release $";  static final long serialVersionUID = -8436333867473946019L;  private boolean debug = false;  /**   * ATP default constructor   */  public ATPAgent1() {    agentName = new String("AtpAgent1");  }  /**   * onCreation   *   * @param o   */  public void onCreation(Object o) {    super.onCreation(o);    try {      URL home = getAgletContext().getHostingURL();      String homeString = home.toString();      String tahitiPort0 = homeString.substring(homeString.lastIndexOf(":") + 1);      String tahitiPort = tahitiPort0.substring(0, tahitiPort0.indexOf("/"));      tahitiPort = tahitiPort.trim();      int tPort = new Integer(tahitiPort).intValue();      kManager = new KQMLManager(agentName, "atp", tPort, this);      debugTrace(debug);      frame = new ATPFrame(this, agentName);      frame.show();      addMobilityListener(this);    } catch (Exception ex) {      ex.printStackTrace();    }  }  public void onDispatching(MobilityEvent ev) {    onDispatching(ev.getLocation());  }  public void onReverting(MobilityEvent ev) {  }  public void onArrival(MobilityEvent ev) {    onArrival();  }  public void onArrival() {    super.onArrival();    try {      URL home = getAgletContext().getHostingURL();      String homeString = home.toString();      String tahitiPort0 = homeString.substring(homeString.lastIndexOf(":") + 1);      String tahitiPort = tahitiPort0.substring(0, tahitiPort0.indexOf("/"));      tahitiPort = tahitiPort.trim();      int tPort = new Integer(tahitiPort).intValue();      kManager.addProtocol(this, tPort);      debugTrace(debug);      kManager.restart();            frame = new ATPFrame(this, agentName);      frame.show();    } catch (Exception ex) {      ex.printStackTrace();    }  }    public void onDispatching(URL url) {    frame.dispose();    kManager.stop();  }  /**   * set KQML message. called by ATPFrame class   *   * @param performative performative's string   */  public KQML requestKQML(String performative) {    KQML kqml = new KQML();        String rw = new String(kManager.getInitialID());    kqml.setParameter(":reply-with", rw);    // white pages    if ("register_W".equals(performative)) {      kqml.setPerformative("register");      kqml.setParameter(":sender", agentName);      kqml.setParameter(":receiver", facilitator);      kqml.setParameter(":language", "anACL");      kqml.setParameter(":ontology", "whitepages");      kqml.setContent("(:name " + agentName + "\n" +		        " :url " + localHost + ")");    } else if ("unregister_W".equals(performative)) {      kqml.setPerformative("unregister");      kqml.setParameter(":sender", localHost);      kqml.setParameter(":receiver", facilitator);      kqml.setParameter(":language", "anACL");      kqml.setParameter(":ontology", "whitepages");      kqml.setContent("(:name " + agentName + 		      "\n:registration_number " + whitepagesID + ")");    } else if ("ask-one_W".equals(performative)) {      kqml.setPerformative("ask-one");      kqml.setParameter(":sender", agentName);      kqml.setParameter(":receiver", facilitator);      kqml.setParameter(":language", "anACL");      kqml.setParameter(":ontology", "whitepages");      kqml.setContent("(:name AtpAgent2 :protocol ?p)");            // yellow pages    } else if ("insert_Y".equals(performative)) {      kqml.setPerformative("insert");      kqml.setParameter(":sender", agentName);      kqml.setParameter(":receiver", agentName);      kqml.setParameter(":language", "anACL");      kqml.setParameter(":ontology", "yellowpages");      String content = new String(				  "(:providerName \"" + agentName +				  "'s pet shop\""              +"\n"+				  ":category petShop "         +"\n"+				  ":subCategory dog "          +"\n"+				  ":class PetShopAgent "       +"\n"+				  ":name " + agentName         +"\n"+				  ":description \"dog only\" " +"\n"+				  ":ontology shop)");      kqml.setContent(content);    } else if ("delete-one_Y".equals(performative)) {      kqml.setPerformative("delete-one");      kqml.setParameter(":sender", agentName);      kqml.setParameter(":receiver", agentName);      kqml.setParameter(":language", "anACL");      kqml.setParameter(":ontology", "yellowpages");      String content = new String(				  "(:category petShop "   +"\n"+				  ":subCategory dog "     +"\n"+				  ":class PetShopAgent "  +"\n"+				  ":name " + agentName    +"\n"+				  ":registeredID " + yellowpagesID + ")");      kqml.setContent(content);    } else if ("ask-all_Y".equals(performative)) {      kqml.setPerformative("ask-all");      kqml.setParameter(":sender", agentName);      kqml.setParameter(":receiver", agentName);      kqml.setParameter(":language", "anACL");      kqml.setParameter(":ontology", "yellowpages");      String content = new String(				  "(:category petShop "  +"\n"+				  ":subCategory dog "    +"\n"+				  ":class PetShopAgent " +" )\n");      kqml.setContent(content);            //KQML ontology    } else if ("advertise_K".equals(performative)) {      kqml.setPerformative("advertise");      kqml.setParameter(":sender", agentName);      kqml.setParameter(":receiver", facilitator);      kqml.setParameter(":language", "KQML");      kqml.setParameter(":ontology", "kqml-ontology");      String content = new String(				  "(ask-all "                +" \n"+ 				  " :sender "+ facilitator   +" \n"+				  " :receiver "+ agentName   +" \n"+				  " :in-reply-to " + rw      +" \n"+				  " :language anACL "        +" \n"+				  " :ontology yellowpages "   +" \n"+				  " :content " +				  "(:category petShop "   +"\n"+				  ":subCategory dog "    +"\n"+				  ":class PetShopAgent ) )");      kqml.setContent(content);    } else if ("unadvertise_K".equals(performative)) {      kqml.setPerformative("unadvertise");    } else if ("recommend-one_K".equals(performative)) {      kqml.setPerformative("recommend-one");    } else if ("recommend-all_K".equals(performative)) {      kqml.setPerformative("recommend-all");    } else if ("recruit-one_K".equals(performative)) {      kqml.setPerformative("recruit-one");    } else if ("recruit-all_K".equals(performative)) {      kqml.setPerformative("recruit-all");    } else if ("broker-one_K".equals(performative)) {      kqml.setPerformative("broker-one");    } else if ("broker-all_K".equals(performative)) {      kqml.setPerformative("broker-one");      kqml.setParameter(":sender", agentName);      kqml.setParameter(":receiver", facilitator);      kqml.setParameter(":language", "KQML");      kqml.setParameter(":ontology", "kqml-ontology");      String rw_i = new String(kManager.getInitialID());      String content = new String(				  "(ask-all "                 	+"\n"+				  " :sender "   + agentName   	+"\n"+				  " :reply-with " + rw_i	+"\n"+				  " :language anACL " 		+"\n"+				  " :ontology yellowpages" 	+"\n"+				  " :content " +				  "(:category petShop "  	+"\n"+				  " :subCategory dog "    	+"\n"+				  " :class PetShopAgent ) )"				  );      kqml.setContent(content);            kqml.setPerformative("broker-all");    } else if ("forward_K".equals(performative)) {      kqml.setPerformative("forward");    } else if ("subscribe_K".equals(performative)) {      kqml.setPerformative("subscribe");    } else if ("transport-address_K".equals(performative)) {      kqml.setPerformative("transport-address");    } else if ("tell_K".equals(performative)) {      kqml.setPerformative("tell");    } else if ("uninsert_K".equals(performative)) {      kqml.setPerformative("uninsert");    } else if ("discard_K".equals(performative)) {      kqml.setPerformative("discard");    } else if ("undelete_K".equals(performative)) {      kqml.setPerformative("undelete");    }    return kqml;  }  }

⌨️ 快捷键说明

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