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

📄 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 + -