public synchronized void messageReceived(int to, Message m) { switch (m.amType()) { case DelugeAdvMsg.AM_TYPE: DelugeAdvMsg rxAdvMsg = (DelugeAdvMsg) m; if (vNum == rxAdvMsg.get_summary_vNum() && numPgs == rxAdvMsg.get_summary_numPgsComplete()) { // ALL DONE, QUIT! System.out.println("DOWNLOAD COMPLETE!"); System.out.println("--------------------------------------------------"); System.exit(0); } break; case DelugeReqUpdMetadataMsg.AM_TYPE: DelugeReqUpdMetadataMsg reqUpd = (DelugeReqUpdMetadataMsg) m; if (printAllMsgs) System.out.print(reqUpd); vNum = (short) (reqUpd.get_vNum() + 1); advMsg.set_summary_vNum(vNum); System.out.print("Upgrading from version [" + reqUpd.get_vNum() + "]"); System.out.println(" to version [" + vNum + "]"); transmitMetadataUpd(); break; case DelugeReqMsg.AM_TYPE: DelugeReqMsg req = (DelugeReqMsg) m; if (printAllMsgs) System.out.print(req); if (vNum != req.get_vNum()) { System.out.println("ERROR: Node requesting wrong version"); System.exit(1); } transmitPage(req.get_pgNum()); break; } }
public static void main(String[] args) throws Exception { String source = null; Vector v = new Vector(); if (args.length > 0) { for (int i = 0; i < args.length; i++) { if (args[i].equals("-comm")) { source = args[++i]; } else { String className = args[i]; try { Class c = Class.forName(className); Object packet = c.newInstance(); Message msg = (Message) packet; if (msg.amType() < 0) { System.err.println(className + " does not have an AM type - ignored"); } else { v.addElement(msg); } } catch (Exception e) { System.err.println(e); } } } } else if (args.length != 0) { usage(); System.exit(1); } MsgReader mr = new MsgReader(source); Enumeration msgs = v.elements(); while (msgs.hasMoreElements()) { Message m = (Message) msgs.nextElement(); mr.addMsgType(m); } mr.start(); }