atpagent2.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 267 行
JAVA
267 行
/* ATPAgent2.java * $Id: ATPAgent2.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.*;/** * ATPAgent2 * * @version $Name: alpha5_1-release $ $Revision: 2.10 $ $Date: 1998-06-16 11:18:46+09 $ * @author Osamu Furusawa * @author Hajime Tsuchitani */public class ATPAgent2 extends ATPAgent implements MobilityListener { private static final String rcsid = "$Id: ATPAgent2.java,v 2.10 1998-06-16 11:18:46+09 ht Exp $ $Name: alpha5_1-release $"; static final long serialVersionUID = -6742199136948766355L; private boolean debug = false; /** * ATP default constructor */ public ATPAgent2() { agentName = new String("AtpAgent2"); } /** * 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, this, tPort); 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); // lifecycle 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 AtpAgent1 :protocol ?p)"); // yellowpages } else if ("insert_Y".equals(performative)) { kqml.setPerformative("insert"); kqml.setParameter(":sender", agentName); kqml.setParameter(":receiver", facilitator); 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", facilitator); 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", facilitator); 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 " + agentName + " \n"+ " :receiver "+ facilitator + " \n"+ " :in-reply-to " + rw +"\n"+ " :language anACL \n" + " :ontology yellowpages \n" + " :content " + "(:providerName \"" + agentName + "'s pet shop\"" +"\n"+ " :category petShop " +"\n"+ " :subCategory dog " +"\n"+ " :class PetShopAgent " +"\n"+ " :name " + agentName +"\n"+ " :description \"dog only\" " +"\n"+ " :language anACL " +"\n"+ " :ontology shop))"); 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-all"); 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 ) )" +"\n"); kqml.setContent(content); } 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 + -
显示快捷键?