kqml_travel_broker.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 813 行 · 第 1/2 页
JAVA
813 行
try { rtnMsg.setPerformative("sorry"); rtnMsg.setParameter(":sender", msg.getParameter(":receiver")); rtnMsg.setParameter(":receiver", msg.getParameter(":sender")); rtnMsg.setParameter(":in-reply-to", msg.getParameter(":reply-with")); rtnMsg.setParameter(":reply-with", id); rtnMsg.setParameter(":language", msg.getParameter(":language")); rtnMsg.setParameter(":ontology", msg.getParameter(":ontology")); rtnMsg.setContent("(:errmsg \"" + errmsg + " \")"); } catch (Exception ex) { ex.printStackTrace(); }// Conversation c;// c = km.sendMessage(rtnMsg); Conversation c = null; try { c = km.sendMessage(rtnMsg); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } if (c == null) { System.err.println(new Date() + " < kqml_travel_broker.doBrokerAll(): sending response message failed"); return false; } else { if (debug) System.err.println(new Date() + " < kqml_travel_broker.doBrokerAll(): sent response message successfully"); return true; } } Vector tokens = ParseContent.parse((String) askMsg.getContent()); String carrier = null; String carrierURL = null; for (int i=0; i < tokens.size(); i++) { if (((String) tokens.elementAt(i)).equalsIgnoreCase(":carrier")) { carrier = (String) tokens.elementAt(++i); if (debug) System.err.println(new Date() + " - kqml_travel_broker.doRecruitOne parsing: carrier: " + carrier); continue; } } if (carrier == null) { if (debug) System.err.println(new Date() + " - kqml_travel_broker.doRecruitOne: carrier not detected in " + "content of ask-all performative."); try { rtnMsg.setPerformative("sorry"); rtnMsg.setParameter(":sender", msg.getParameter(":receiver")); rtnMsg.setParameter(":receiver", msg.getParameter(":sender")); rtnMsg.setParameter(":in-reply-to", msg.getParameter(":reply-with")); rtnMsg.setParameter(":reply-with", id); rtnMsg.setParameter(":language", msg.getParameter(":language")); rtnMsg.setParameter(":ontology", msg.getParameter(":ontology")); rtnMsg.setContent("(:errmsg \"no carrier specified in content.\" )"); } catch (Exception ex) { ex.printStackTrace(); }// Conversation c;// c = km.sendMessage(rtnMsg); Conversation c = null; try { c = km.sendMessage(rtnMsg); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } if (c == null) { System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + " sending response message failed"); return false; } else { if (debug) System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + "sent response message successfully"); return true; } } else { // if (carrier == null) KQML askOne = new KQML(); if (debug) System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + "(ask-one LC (:name " + carrier + " )) created."); try { askOne.setPerformative("ask-one"); askOne.setParameter(":sender", msg.getParameter(":receiver")); askOne.setParameter(":receiver", facilitator);// askOne.setParameter(":in-reply-to", msg.getParameter(":reply-with")); askOne.setParameter(":reply-with", id); askOne.setParameter(":language", "anACL"); askOne.setParameter(":ontology", "lifeCycle"); askOne.setContent("(:name " + carrier + " )"); } catch (Exception ex) { ex.printStackTrace(); } id = idgen.getID();// Conversation c;// c = (Conversation) km.sendMessage(askOne); Conversation c = null; try { c = (Conversation) km.sendMessage(askOne); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } if (c == null) { System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + " sending ask-one message failed"); return false; } else { // if (c == null) { if (debug) System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + "sent ask-one message successfully"); // wait for lifeCycle response c.getResult().waitFor(10000); // 10 seconds wait if (c.getResult().isAvailable()) { ReturnValue rtn = (ReturnValue) c.getResult().getResult(); if (rtn.getReturnValue() instanceof AgentInfo) { AgentInfo agent = (AgentInfo) rtn.getReturnValue(); carrierURL = agent.getURL(); if (debug) System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + "tell of ask-one received : URL: " + carrierURL); } } } if (carrierURL == null) { if (debug) System.err.println(new Date() + " - kqml_travel_broker.doRecruitOne: carrier URL not resolved. "); try { rtnMsg.setPerformative("sorry"); rtnMsg.setParameter(":sender", msg.getParameter(":receiver")); rtnMsg.setParameter(":receiver", msg.getParameter(":sender")); rtnMsg.setParameter(":in-reply-to", msg.getParameter(":reply-with")); rtnMsg.setParameter(":reply-with", id); rtnMsg.setParameter(":language", msg.getParameter(":language")); rtnMsg.setParameter(":ontology", msg.getParameter(":ontology")); rtnMsg.setContent("(:errmsg \"carrier URL cannot resolved.\" )"); } catch (Exception ex) { ex.printStackTrace(); }// c = (Conversation) km.sendMessage(rtnMsg); try { c = (Conversation) km.sendMessage(rtnMsg); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } if (c == null) { System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + " sending response message failed"); return false; } else { if (debug) System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + "sent response message successfully"); return true; } } else { // if (carrierULR == null) KQML fwdMsg = new KQML(); if (debug) System.err.println(new Date() + " - kqml_travel_broker.doRecruitOne: forward subscribe ask-all" + " message sending."); try { fwdMsg.setPerformative("forward"); fwdMsg.setParameter(":to", carrierURL); fwdMsg.setParameter(":from", msg.getParameter(":sender")); fwdMsg.setParameter(":receiver", carrierURL); fwdMsg.setParameter(":sender", msg.getParameter(":receiver")); fwdMsg.setParameter(":reply-with", id); fwdMsg.setParameter(":language", "KQML"); fwdMsg.setParameter(":ontology", "kqml-ontology"); fwdMsg.setContent(subMsg); subMsg.setParameter(":receiver", carrierURL); // I should handle nested subscribed performative.... ((KQML) subMsg.getContent()).setParameter(":receiver", carrierURL); } catch (Exception ex) { ex.printStackTrace(); } // c = (Conversation) km.sendMessage(fwdMsg); try { c = (Conversation) km.sendMessage(fwdMsg); } catch (SendFailedException ex) { ex.printStackTrace(); } catch (InvalidFormatException ex) { ex.printStackTrace(); } catch (InvalidMessageSequenceException ex) { ex.printStackTrace(); } catch (JKQMLException ex) { ex.printStackTrace(); } if (c == null) { System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + " sending forward message failed"); return false; } else { if (debug) System.err.println(new Date() + " < kqml_travel_broker.doRecruitOne(): " + "sent forward message successfully"); return true; } } } // if (carrier == null) } /** * Handles sorry performative. * * @param conversation reference to the Conversation * @param msg KQML message * @return true if message is interpreted successfully, otherwise false. * */ protected boolean doSorry(Conversation conversation, KQML msg) { if (debug) System.err.println(new Date() + " > kqml_travel_broker.doSorry entered"); Conversation conv = (Conversation) conversation; Result res = conv.getResult(); try { Vector tokens = ParseContent.parse((String) msg.getContent()); String errmsg = null; for (int i=0; i < tokens.size(); i++) { if (((String) tokens.elementAt(i)).equalsIgnoreCase(":errmsg")) { errmsg = (String) tokens.elementAt(i + 1); break; } } if (debug) { System.err.println(new Date() + " - kqml_travel_broker.doSorry errmsg: " + errmsg); System.err.println(new Date() + " - kqml_travel_broker.doSorry Result: " + res); } res.setResult(new ReturnValue(false, errmsg)); res.complete(); if (debug) System.err.println(new Date() + " < kqml_travel_broker.doSorry completed"); return true; } catch (ResultException ex) { System.err.println(ex.getMessage()); if (debug) System.err.println(new Date() + " < kqml_travel_broker.doSorry: ResultException Caught. " + ex.getMessage()); return true; } } /** * Handles error performative. * * @param conversation reference to the Conversation * @param msg KQML message * @return true if message is interpreted successfully, otherwise false. * */ protected boolean doError(Conversation conversation, KQML msg) { if (debug) System.err.println(new Date() + " > kqml_travel_broker.doError entered"); Conversation conv = (Conversation) conversation; Result res = conv.getResult(); try { Vector tokens = ParseContent.parse((String) msg.getContent()); String errmsg = null; for (int i=0; i < tokens.size(); i++) { if (((String) tokens.elementAt(i)).equalsIgnoreCase(":errmsg")) { errmsg = (String) tokens.elementAt(i + 1); break; } } if (debug) { System.err.println(new Date() + " - kqml_travel_broker.doError errmsg: " + errmsg); System.err.println(new Date() + " - kqml_travel_broker.doError Result: " + res); } res.setResult(new ReturnValue(false, errmsg)); res.complete(); if (debug) System.err.println(new Date() + " < kqml_travel_broker.doError completed"); return true; } catch (ResultException ex) { System.err.println(ex.getMessage()); if (debug) System.err.println(new Date() + " < kqml_travel_broker.doError: ResultException caulght. " + ex.getMessage()); return true; } } /** * Handles performatives which not supported in this class. * * @param conversation reference to the Conversation * @param msg KQML message * @return true if message is interpreted successfully, otherwise false. * *//* protected boolean doOtherPerformatives(Conversation conversation, KQML msg) { if (debug) { System.err.println(new Date() + " - kqml_travel_broker.doOtherPerformatives : " + "unknow performative: " + msg.getPerformative() + " recieved. message is ignored."); } return false; }*/ String getAirPort(String airport) { if (airport.equalsIgnoreCase("NRT")) { return new String("\"(NRT) Tokyo, Japan (Narita)\""); } else if (airport.equalsIgnoreCase("CDG")) { return new String("\"(CDG) Paris, France (Charles De Gaulle)\""); } else if (airport.equalsIgnoreCase("SFO")) { return new String("\"(SFO) San Francisco, CA, USA\""); } else if (airport.equalsIgnoreCase("JFK")) { return new String("\"(JFK) New York, NY, USA (Kennedy Intl)\""); } else if (airport.equalsIgnoreCase("LHR")) { return new String("\"(LHR) London, England (Heathrow)\""); } else if (airport.equalsIgnoreCase("HKG")) { return new String("\"(HKG) Hong Kong, Hong Kong\""); } else if (airport.equalsIgnoreCase("HNL")) { return new String("\"(HNL) Honolulu, HI, USA\""); } else { return airport; } } String getTime(String time) { if (time.endsWith("PM")) { return "\"" + time.concat("12:15") + "\""; } else if (time.endsWith("AM")) { return "\"" + time.concat("10:15") + "\""; } else { return time; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?