/* ***************************************************************
* JADE - Java Agent DEvelopment Framework is a framework to develop
* multi-agent systems in compliance with the FIPA specifications.
* Copyright (C) 2000 CSELT S.p.A.
* GNU Lesser General Public License
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation,
* version 2.1 of the License.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
* **************************************************************
*/
package jade.imtp.rmi;
//#J2ME_EXCLUDE_FILE
import java.rmi.*;
import jade.core.HorizontalCommand;
import jade.core.IMTPException;
/**
This RMI interface allows to dispatch JADE kernel-level commands
across the network.
@author Giovanni Rimassa - FRAMeTech s.r.l.
*/
interface NodeRMI extends Remote {
/**
Accepts a command to be processed (from the implementor point
of view).
@param cmd The command to be processed.
@return The return value of the remote operation represented by
this horizontal command.
@throws RemoteException If a network problem occurs.
*/
Object accept(HorizontalCommand cmd) throws RemoteException, IMTPException;
/**
Check whether this node is reachable.
@param hang A boolean flag. When <code>false</code>, the method
returns immediately; when <code>true</code>, the method blocks
and will return only when unblocked from the remote end
(through regular return or exception.
@return If the node is exiting, <code>true</code> is returned,
and <code>false</code> otherwise.
@throws RemoteException If a network problem occurs.
*/
boolean ping(boolean hang) throws RemoteException;
/**
Shut down this node.
@throws RemoteException If a network problem occurs.
*/
void exit() throws RemoteException;
/**
Release blocked ping() calls on this node.
@throws RemoteException If a network problem occurs.
*/
void interrupt() throws RemoteException;
void platformManagerDead(String deadPmAddress, String notifyingPmAddr) throws RemoteException, IMTPException;
}