RemoteCell.java  
// $Id: RemoteCell.java,v 1.1 2000/05/18 22:01:04 tucker Exp $
// Hive. Copyright (c) 1998-1999, The Massachusetts Institute of Technology.
// All rights reserved. Distributed with no warranty, without even the
// implied warranty of merchantability or fitness for a particular purpose.
// For more details see COPYING.GPL, the GNU General Public License.

package net.hivecell.hive.cell;

import java.lang.ClassNotFoundException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Vector;

import net.hivecell.hive.agent.Agent;
import net.hivecell.hive.description.Description;
import net.hivecell.hive.description.AgentSet;
import net.hivecell.hive.description.RemoteDescribable;
import net.hivecell.hive.support.CellAddress;

/** 
 * The interface visible for a remote server
 * 
 * @see Cell
 * @version $Revision: 1.1 $
 */
public interface RemoteCell 
extends Remote, RemoteDescribable {

    public AgentSet queryAgents( Object sender, String[] syntactic, String[] semantic ) 
    throws RemoteException, ClassNotFoundException;

    public Agent acceptAgent( byte[] agentBytes, CellAddress sourceAddress, Object token ) 
    throws DenyMobileAgentException, RemoteException;

    public CellAddress getAddress() 
    throws RemoteException;

    public Description getDescription()
    throws RemoteException;

    public Object returnRemoteObject( Object o ) 
    throws RemoteException;
    
    public boolean ping()
    throws RemoteException;

}