⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagenaplet.java

📁 移动Agent编程工具Naplet
💻 JAVA
字号:
/* * @<#> MessageNaplet.java version 0.0.1, 1/1/2000 * * THIS PROGRAM IS FREE SOFTWARE; YOU CAN DISTRIBUTE IT AND/OR * MODIFY IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE  * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION. * * THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE  * GNU GENERAL PUBLIC LICENSE FOR MORE DETAILS. * * Copyright (c) 2000 Wayne State University. All Rights Reserved. */package message;/** * The <code>MessageNaplet</code> class implements an example of naplets * that is dispatched in parallel and the two spawned naplets need to  * talk to each other. * * @version 0.0.1, 1/1/2000 * @author C. Xu * */import java.io.*;import java.rmi.*;import java.util.*;import java.lang.reflect.*;import naplet.*;import naplet.itinerary.*;import naplet.message.*;public class MessageNaplet extends Naplet {	public MessageNaplet(String[] servers)				throws InvalidNapletException, InvalidItineraryException {		this(null, servers);	}	public MessageNaplet(String name,  String[] servers)				throws InvalidNapletException, InvalidItineraryException {		super(name, null);		setItinerary ( new CommItinerary( servers ) );	}	/**	 * Entry point of a naplet at each server	 */	public void onStart() throws InterruptedException {					String server = getNapletContext().getServerURN().toString();		System.out.println( "Naplet " + this.getNapletID().toString() 					+ " is running at " + server);		try {			getItinerary().travel( this );		} catch (NapletMigrateException nme) {			throw new NapletRuntimeException(nme);		}	}	static void classFinalize() {		System.out.println("MyNaplet was finalized");	}		/**	 * The <code>Barrier</code> class defines an operation to be performed	 * at the end of an itinerary.  	 */	private class Barrier implements Operable {		public void operate( Naplet nap ) {			NapletID myID = nap.getNapletID();			System.out.println("My NapletID =" + myID.toString());			Messenger postman = nap.getNapletContext().getMessenger();			// Address book of a naplet contains all the NapletID of its 			// sibling naplets (due to cloning), as well as the address			// information inherited from its parent (or creator).			AddressBook aBook = nap.getAddressBook();			Iterator iter = aBook.iterator();						try {				Thread.sleep(3000);			} catch (InterruptedException ie){}			while (iter.hasNext()) {				AddressEntry entry = (AddressEntry) iter.next();				NapletID nid = entry.getNapletID();				try { 					if (!nid.equals(aBook.creator()) && !nid.equals(myID) ) {						Message msg = new Message(myID, nid, 											"Helloooo from "+myID.toString() );						// postman.send(myID, id, msg);						postman.send(myID, entry.getServerURN(), msg); 												System.out.println("Sending message to "+ entry.getServerURN().toString() );									}				} catch (NapletCommunicationException nce) {					System.out.println("Unable to post message");					System.exit(1);				}			}						// Communicate to all the naplets, excluding Creator and Itself			for (int i=0; i<aBook.size()-2; i++) {				Message msg = postman.checkMailBox( myID);				if (msg!=null)					System.out.println(msg.getMessage() );				else					System.out.println("No new message");			}	    	}	}	private class CommItinerary extends Itinerary {		public CommItinerary( String[] servers ) 				throws InvalidItineraryException {			Operable act = new Barrier();			// par(ns1; seq(ns2, ns3))			 			ItineraryPattern[] ip = new ItineraryPattern[2];			ip[0] = new SingletonPattern( servers[0], act );			String[] rest = new String[servers.length-1]; 			for (int i=0; i<servers.length-1; i++)				rest[i] = new String( servers[i+1] );			ip[1] = new SeqPattern( rest, act );			setRoute( new ParPattern(ip) ); 						System.out.println("ICItinerary = " + getRoute().toString() );		}    }}

⌨️ 快捷键说明

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