/*******************************************************************************
* ALMA - Atacama Large Millimeter Array
* Copyright (c) ESO - European Southern Observatory, 2011
* (in the framework of the ALMA collaboration).
* All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*******************************************************************************/
package alma.acs.nsstatistics;
import java.util.concurrent.atomic.AtomicLong;
import org.omg.CORBA.Any;
public class EventData extends AbstractEventData {
protected static AtomicLong totalEventsProcessed = new AtomicLong();
protected static AtomicLong timeFirstEventProcessed = new AtomicLong();
/*
* "Time "+timeStamp+" "+m_channelName+" "+component+" "+count+" "+channelEventCount+" "
+" "+evtTypeName+" "+evtCounter.get(evtTypeName)
*/
private final String sourceObject;
private final long channelEventCount;
private final String eventTypeName;
private final long eventTypeCount;
private final String channelName;
private final Any eventAny;
public EventData(long time, String srcObj, long count, String type, Long typeCount, String chanName, Any any) {
timestamp = time;
sourceObject = srcObj;
channelEventCount = count;
eventTypeName = type;
eventTypeCount = typeCount;
channelName = chanName;
eventAny = any;
totalEventsProcessed.getAndIncrement();
timeFirstEventProcessed.compareAndSet(0L, System.currentTimeMillis());
}
public static long getTotalEventsProcessed() {
return totalEventsProcessed.get();
}
/**
* @return Time (in ms) of first event processed
*/
public static Long getTimeFirstEventProcessed() {
return timeFirstEventProcessed.get();
}
/**
* @return Average number of events/s since the first one that was processed
*/
public static float getAverageRate() {
return (getTotalEventsProcessed()*1000.f)/(System.currentTimeMillis()-getTimeFirstEventProcessed());
}
public String getSourceObject() {
return sourceObject;
}
public long getChannelEventCount() {
return channelEventCount;
}
public String getEventTypeName() {
return eventTypeName;
}
public long getEventTypeCount() {
return eventTypeCount;
}
public String getChannelName() {
return channelName;
}
public Any getEventAny() {
return eventAny;
}
}