import com.gemstone.gemfire.management.membership.ClientMembershipEvent;
import com.gemstone.gemfire.management.membership.ClientMembershipListener;

import java.util.Properties;

import java.util.concurrent.atomic.AtomicInteger;

public class TestClientMembershipListener implements ClientMembershipListener {

  private final AtomicInteger serverCount;
  
  private static final String JOINED = "joined";
  
  private static final String LEFT = "left";
  
  private static final String CRASHED = "crashed";
  
  public TestClientMembershipListener() {
    this.serverCount = new AtomicInteger();
  }
  
  public void memberJoined(ClientMembershipEvent event) {
    process(event, JOINED);
  }

  public void memberLeft(ClientMembershipEvent event) {
    process(event, LEFT);
  }

  public void memberCrashed(ClientMembershipEvent event) {
    process(event, CRASHED);
  }
  
  private void process(ClientMembershipEvent event, String action) {
    int currentCount = action.equals(JOINED)
    	? this.serverCount.incrementAndGet()
      : this.serverCount.decrementAndGet();
    System.out.println("Server " + event.getMember() + " " + action + " (current count is " + currentCount + ")");
  }
}