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

📄 terminatenaplet.java~

📁 移动Agent编程工具Naplet
💻 JAVA~
字号:
/*  * @<#> TerminateNaplet.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 terminate;/** * The <code>TerminateNaplet</code> class implements a dummy naplet  * that travels around the network, sleeping a while at each server. * The naplet will be terminated by its dispatcher. * * @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 TerminateNaplet extends Naplet {	public TerminateNaplet(String[] servers)				throws InvalidNapletException, InvalidItineraryException {		this(null, servers, null);	}	public TerminateNaplet(String name, String[] servers) 				throws InvalidNapletException, InvalidItineraryException {		this(name, servers, null);	}	/**	 * Constructs a naplet	 * @param servers a list of servers to be visited	 * @param listener listener of the naplet waiting for results	 */	public TerminateNaplet(String[] servers, NapletListener listener) 					throws InvalidNapletException, InvalidItineraryException {		this(null, servers, listener);	}	/**	 * Constructs a naplet, setting itinerary 	 * 	 * @param name Nick name of the naplet	 * @param servers A list of servers to be visitted	 * @param listener Listener of the naplet waiting for results	 */	public TerminateNaplet(String name, String[] servers, NapletListener listener) 			throws InvalidNapletException, InvalidItineraryException {		super(name, listener); 		try {			Hashtable messages = new Hashtable( servers.length );        	setNapletState( new ProtectedNapletState() );        	getNapletState().set("message", messages);		} catch (NapletStateAccessException nsae) {			throw new InvalidNapletException("Naplet state initialization failure");		}			setItinerary ( new ICItinerary( servers ) );	}	/**	 * Entry point of a naplet at each server	 */	public void onStart() throws InterruptedException {		String serverName;					serverName = getNapletContext().getServerURN().getHostName();		System.out.println( "Naplet " + this.getNapletID().toString()  							+ " arrives at " + serverName);					System.out.println("Sleeping... ...");		Thread.sleep(30000);		System.out.println("Wakeup");		try {			getItinerary().travel( this );		} catch (NapletMigrateException nme) {			System.out.println(nme.getMessage());		}		System.out.println("End of Start()");	}	public void onInterrupt() {	    MailBox mbox = this.getNapletContext().getMessenger().getMailBox(this.getNapletID());	    try {	        Message msg = mbox.getMessage();	        switch (msg.getType()) {	            case Message.TERMINATE:					System.out.println("I'm to be interrupted");					Message ack = new Message(Message.TERMINATE_ACK, 						this.getNapletID(), msg.getSender(), " Ack to terminate");					try {						this.getNapletContext().getMessenger().send(this.getNapletID(), msg.getSender(), ack);					} catch (NapletCommunicationException nce) {						System.out.println(nce.getMessage());					}	              Thread.currentThread().interrupt();	            case Message.SUSPEND:	            case Message.RESUME:	        }	    } catch (InterruptedException ie){}	}	static void classFinalize() {		System.out.println("MyNaplet was finalized");	}	private class ICItinerary extends Itinerary {		public ICItinerary( String[] servers ) 				throws InvalidItineraryException {			Operable act = null; 			// seq(s0,s1,s2) 			setRoute( new SeqPattern(servers, act) );				System.out.println("ICItinerary = " + getRoute().toString() );		}    }}

⌨️ 快捷键说明

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