www.pudn.com > query_cycle_simulator.rar > NetworkManager.java


/* ====================================================================
 * The Stanford P2P Sociology Project Software License, Version 1.0
 *
 * Copyright (c) 2003 The Stanford P2P Sociology Project.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *       "This product includes software developed by the
 *        Stanford P2P Sociology Project(http://p2p.stanford.edu/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * For more
 * information on the Stanford P2P Sociology Project,
 * see .
 *
 */

package qcsim.net;


import qcsim.net.util.*;

 /*
  * Title: Query Cycle Simulator
  * Description: P2P file sharing network simulator
  * Copyright: Copyright (c) 2002
  * Company:
  */

 /**
  * Network interface.
  * @author unascribed
  * @version 1.0
  */

public interface NetworkManager 
{

  static final int MAX_CONNECTIONS = 20;

  /**
   * The number of messages transfered during a simulated cycle.
   * @param cycle the cycle.
   * @return The number of messages transferred during the cycle.
   */
  public int messages(int cycle);

  public int maliciousResponses(int cycle);

  public int goodResponses(int cycle);

  /**
   * Send a message to a peer.
   * @param nextHop peer id of next peer receiving this message.
   * @param msg message to send.
   */
  public void send(int nextHop, PeerMsg msg); 


  /**
   * Remote procedure call to destination peer.
   * @param msg Peer message containing rpc information.
   * @return rpc return value.
   */
  public Object rpc(PeerMsg msg);

  /**
   * Adds good peers to the network.
   * @param nodes number of nodes in network
   * @param neighbors initial number of neighbors for each peer
   */
  public void goodPeers(int nodes, int neighbors);

  /**
   * Adds highly trusted peers to the network.
   * @param nodes number of peers to be connected
   * @param neighbors number of initial neighbors
   */
  public void highlyTrustedPeers(int nodes, int neighbors); 
    
  /**
   * Adds malicious peers to the network.
   * @param nodes number of peers to be connected
   * @param neighbors number of initial neighbors
   */
  public void maliciousPeers(int nodes, int neighbors);  

}