/*********************************************************************************************
* Copyright (c) 2014-2015 Software Behaviour Analysis Lab, Concordia University, Montreal, Canada
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of Eclipse Public License v1.0 License which
* accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Syed Shariyar Murtaza -- Initial design and implementation
**********************************************************************************************/
package org.eclipse.tracecompass.internal.totalads.readers.ctfreaders;
import java.io.File;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
import org.eclipse.tracecompass.totalads.exceptions.TotalADSGeneralException;
import org.eclipse.tracecompass.totalads.exceptions.TotalADSReaderException;
import org.eclipse.tracecompass.totalads.readers.ITraceIterator;
import org.eclipse.tracecompass.totalads.readers.ITraceTypeReader;
import org.eclipse.tracecompass.totalads.readers.TraceTypeFactory;
/**
* The class to read system calls from LTTng traces by using CtfTmfTrace class
*
* @author <p>
* Syed Shariyar Murtaza justsshary@hotmail.com
* </p>
*/
public class CTFLTTngSysCallTraceReader implements ITraceTypeReader {
/**
* Constructor: Instantiate a new trace reader
*
*/
public CTFLTTngSysCallTraceReader() {
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.tracecompass.totalads.readers.ITraceTypeReader#createInstance
* ()
*/
@Override
public ITraceTypeReader createInstance() {
return new CTFLTTngSysCallTraceReader();
}
/**
* Registers itself with the TraceTypeFactory
*
* @throws TotalADSGeneralException
* Exception for invalid reader
*/
public static void registerTraceTypeReader() throws TotalADSGeneralException {
TraceTypeFactory trcTypFactory = TraceTypeFactory.getInstance();
CTFLTTngSysCallTraceReader kernelTraceReader = new CTFLTTngSysCallTraceReader();
trcTypFactory.registerTraceReaderWithFactory(kernelTraceReader.getName(), kernelTraceReader);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.tracecompass.totalads.readers.ITraceTypeReader#getName()
*/
@Override
public String getName() {
return "LTTng System Call"; //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.tracecompass.totalads.readers.ITraceTypeReader#getAcronym()
*/
@Override
public String getAcronym() {
return "SYS"; //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.tracecompass.totalads.readers.ITraceTypeReader#getTraceIterator
* (java.io.File)
*/
@Override
public ITraceIterator getTraceIterator(File file) throws TotalADSReaderException {
if (file == null) {
throw new TotalADSReaderException(Messages.CTFLTTngSysCallTraceReader_NullArgument);
}
String filePath = file.getPath();
// CtfTmfTrace fTrace =null;
try {
return new CTFSystemCallIterator(filePath);
} catch (TmfTraceException e) {
/* Should not happen if tracesExist() passed */
throw new TotalADSReaderException(e.getMessage() + "\n File: " + file.getName()); //$NON-NLS-1$
}
}
}