// Carnegie Mellon University
//   Information Networking Institute and
//   School of Computer Science
//
// Master Thesis: A Monitoring Tool for Overlay Network
// By: TungFai Chan and Annie Cheng
//
// File: JoinGroupEvent.java
// Path: eventbase/event
// Description: Derive Class from OverlayEvent

package eventbase.event;
import eventbase.*;

public class JoinGroupEvent extends OverlayEvent {

  final String OBJECT_NAME = "JoinGroupEvent";
  final private int EVENTID = JOIN_GROUP;
  private OverlayHost member;
  private OverlayHost mediaHost = null;
  private String printStr;

  public JoinGroupEvent(OverlayHost host) {
    member = host;
    eventID = EVENTID;
  }

  // NOTE: mediaHost is not used in our code
  public int getMemorySize() {
    return OverlayHost.getMemorySize() + 4; //  + EVENTID
  }

  // Constructor for protocol that a node can join the group
  // through a media host.  Ex: Narada
  public JoinGroupEvent(OverlayHost host, OverlayHost mediaHost) {
    member = host;
    mediaHost = mediaHost;
    eventID = EVENTID;
  }

  public OverlayHost getSourceHost() {
    return member;
  }

  public OverlayHost getTargetHost() {
    return null;
  }

  public String getOutputString(){
    printStr = "Event JOIN: member " + member.getName() + " joins the group";
    if (mediaHost != null)
      printStr += " through host " + mediaHost.getName();
    printStr += ".";
    return printStr;
  }

}
