/*************************************************************************** * * * RemoteNode.java * * ------------------- * * date : 22.02.2008, 14:11:20 * * copyright : (C) 2008 Distributed and * * Mobile Systems Group * * Lehrstuhl fuer Praktische Informatik * * Universitaet Bamberg * * http://www.uni-bamberg.de/pi/ * * email : sven.kaffille@uni-bamberg.de * * * * * ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * A copy of the license can be found in the license.txt file supplied * * with this software or at: http://www.gnu.org/copyleft/gpl.html * * * ***************************************************************************/ package de.uniba.wiai.lspi.chord.com.rmi; import java.rmi.Remote; import java.rmi.RemoteException; import java.util.List; import java.util.Set; import de.uniba.wiai.lspi.chord.com.Broadcast; import de.uniba.wiai.lspi.chord.com.CommunicationException; import de.uniba.wiai.lspi.chord.com.Entry; import de.uniba.wiai.lspi.chord.data.ID; /** * * @author sven * @version 1.0.5 */ public interface RemoteNode extends Remote { /** * * @param key * @return * @throws CommunicationException * @throws RemoteException */ public RemoteNodeInfo findSuccessor(ID key) throws CommunicationException, RemoteException; /** * * @return * @throws RemoteException */ public ID getNodeID() throws RemoteException; /** * * @param entryToInsert * @throws CommunicationException * @throws RemoteException */ public void insertEntry(Entry entryToInsert) throws CommunicationException, RemoteException; /** * * @param entries * @throws CommunicationException * @throws RemoteException */ public void insertReplicas(Set<Entry> entries) throws CommunicationException, RemoteException; /** * * @param predecessor * @throws CommunicationException * @throws RemoteException */ public void leavesNetwork(RemoteNodeInfo predecessor) throws CommunicationException, RemoteException; /** * * @param potentialPredecessor * @return * @throws CommunicationException * @throws RemoteException */ public List<RemoteNodeInfo> notify(RemoteNodeInfo potentialPredecessor) throws CommunicationException, RemoteException; /** * * @param potentialPredecessor * @return * @throws CommunicationException * @throws RemoteException */ public RemoteRefsAndEntries notifyAndCopyEntries(RemoteNodeInfo potentialPredecessor) throws CommunicationException, RemoteException; /** * * @throws CommunicationException * @throws RemoteException */ public void ping() throws CommunicationException, RemoteException; /** * * @param entryToRemove * @throws CommunicationException * @throws RemoteException */ public void removeEntry(Entry entryToRemove) throws CommunicationException, RemoteException; /** * * @param sendingNode * @param replicasToRemove * @throws CommunicationException * @throws RemoteException */ public void removeReplicas(ID sendingNode, Set<Entry> replicasToRemove) throws CommunicationException, RemoteException; /** * * @param id * @return * @throws CommunicationException * @throws RemoteException */ public Set<Entry> retrieveEntries(ID id) throws CommunicationException, RemoteException; public void broadcast(Broadcast info) throws CommunicationException, RemoteException; }