blob: d8b46f40cdc9752f9b581aadb6192014ab88dd2f [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.mapred;
/**
* {@link SimulatorEvent} represents a specific event in Mumak.
*
* Each {@link SimulatorEvent} has an expected expiry time at which it is fired
* and an {@link SimulatorEventListener} which will handle the {@link SimulatorEvent} when
* it is fired.
*/
public abstract class SimulatorEvent {
protected final SimulatorEventListener listener;
protected final long timestamp;
protected long internalCount;
protected SimulatorEvent(SimulatorEventListener listener, long timestamp) {
this.listener = listener;
this.timestamp = timestamp;
}
/**
* Get the expected event expiry time.
* @return the expected event expiry time
*/
public long getTimeStamp() {
return timestamp;
}
/**
* Get the {@link SimulatorEventListener} to handle the {@link SimulatorEvent}.
* @return the {@link SimulatorEventListener} to handle the {@link SimulatorEvent}.
*/
public SimulatorEventListener getListener() {
return listener;
}
/**
* Get an internal counter of the {@link SimulatorEvent}. Each {@link SimulatorEvent} holds a
* counter, incremented on every event, to order multiple events that occur
* at the same time.
* @return internal counter of the {@link SimulatorEvent}
*/
long getInternalCount() {
return internalCount;
}
/**
* Set the internal counter of the {@link SimulatorEvent}.
* @param count value to set the internal counter
*/
void setInternalCount(long count) {
this.internalCount = count;
}
@Override
public String toString() {
return this.getClass().getName() + "[" + realToString() + "]";
}
/**
* Converts the list of fields and values into a human readable format;
* it does not include the class name.
* Override this if you wanted your new fields to show up in toString().
*
* @return String containing the list of fields and their values.
*/
protected String realToString() {
return "timestamp=" + timestamp + ", listener=" + listener;
}
}