nidas  v1.2-1520
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
nidas::dynld::FileSet Class Reference

Dynamically loadable nidas::core::FileSet. More...

#include <FileSet.h>

Inheritance diagram for nidas::dynld::FileSet:
Inheritance graph
[legend]

Public Member Functions

int getReconnectDelaySecs () const
 
bool isNewInput () const
 Some IOChannels, namely FileSet, which opens successive files, need to indicate when a read is from the start of a new file. More...
 
const std::string & getName () const
 
void setDir (const std::string &val)
 Set the directory portion of the file search path. More...
 
void setFileName (const std::string &val)
 Set the file portion of the file search path. More...
 
void requestConnection (IOChannelRequester *requester) throw (nidas::util::IOException)
 After the IOChannel is configured, a user of IOChannel calls requestConnection to get things started. More...
 
IOChannelconnect () throw (nidas::util::IOException)
 Establish a connection. More...
 
void setNonBlocking (bool val) throw (nidas::util::IOException)
 
bool isNonBlocking () const throw (nidas::util::IOException)
 
void setMount (FsMount *val)
 FileSet will own the FsMount. More...
 
void mounted ()
 This method is called by FsMount when it is done. More...
 
FileSetclone () const
 Clone myself. More...
 
dsm_time_t createFile (dsm_time_t t, bool exact) throw (nidas::util::IOException)
 Request that an IOChannel open a new file, with a name based on a time. More...
 
size_t read (void *buf, size_t len) throw (nidas::util::IOException)
 Physical read method which must be implemented in derived classes. More...
 
size_t write (const void *buf, size_t len) throw (nidas::util::IOException)
 Physical write method which must be implemented in derived classes. More...
 
size_t write (const struct iovec *iov, int iovcnt) throw (nidas::util::IOException)
 Physical write method which must be implemented in derived classes. More...
 
void close () throw (nidas::util::IOException)
 
int getFd () const
 
void fromDOMElement (const xercesc::DOMElement *node) throw (nidas::util::InvalidParameterException)
 Initialize myself from a xercesc::DOMElement. More...
 
const std::string & getCurrentName () const
 Get name of current file. More...
 
void setStartTime (const nidas::util::UTime &val)
 
nidas::util::UTime getStartTime () const
 
void setEndTime (const nidas::util::UTime &val)
 
nidas::util::UTime getEndTime () const
 
void setFileLengthSecs (int val)
 Set/get the file length in seconds. More...
 
int getFileLengthSecs () const
 
void addFileName (const std::string &val)
 
long long getFileSize () const throw (nidas::util::IOException)
 
int getLastErrno () const
 Get last error value. More...
 
void setKeepOpening (bool keepopening)
 Set whether the FileSet should keep going to the next file when an error happens opening a file. More...
 
bool keepOpening ()
 
virtual void setRequestType (enum McSocketRequest)
 
virtual enum McSocketRequest getRequestType () const
 
virtual const ConnectionInfogetConnectionInfo () const
 What is the IP address of the host at the other end of the connection. More...
 
virtual void setConnectionInfo (const ConnectionInfo &val)
 
virtual size_t getBufferSize () const throw ()
 Return suggested buffer length. More...
 
virtual void flush () throw (nidas::util::IOException)
 Default flush implementation does nothing. More...
 
virtual bool writeNidasHeader () const
 Should the NIDAS header be written to this IOChannel? NIDAS headers are not written to DatagramSockets, because there is no guarantee they will get there. More...
 
virtual void setDSMConfig (const DSMConfig *val)
 What DSM is this IOChannel connected to? More...
 
virtual const DSMConfiggetDSMConfig () const
 What DSM is this IOChannel connected to? May be NULL. More...
 
virtual xercesc::DOMElement * toDOMParent (xercesc::DOMElement *parent, bool complete) const throw (xercesc::DOMException)
 Create a DOMElement and append it to the parent. More...
 
virtual xercesc::DOMElement * toDOMElement (xercesc::DOMElement *node, bool complete) const throw (xercesc::DOMException)
 Add my content into a DOMElement. More...
 

Static Public Member Functions

static FileSetgetFileSet (const std::list< std::string > &filenames) throw (nidas::util::InvalidParameterException)
 Convienence function to return a pointer to a nidas::core::FileSet, given a list of files. More...
 
static IOChannelcreateIOChannel (const xercesc::DOMElement *node) throw (nidas::util::InvalidParameterException)
 
static const XMLCh * getNamespaceURI ()
 

Protected Member Functions

void setName (const std::string &val)
 Recognizeable name of this IOChannel - used for informative messages. More...
 

Protected Attributes

nidas::util::FileSet_fset
 
std::string _name
 
IOChannelRequester_requester
 
FsMount_mount
 

Detailed Description

Dynamically loadable nidas::core::FileSet.

Member Function Documentation

void nidas::core::FileSet::addFileName ( const std::string &  val)
inlineinherited
FileSet* nidas::core::FileSet::clone ( ) const
inlinevirtualinherited

Clone myself.

Implements nidas::core::IOChannel.

References nidas::core::FileSet::FileSet().

Referenced by StatsProcess::run(), and DataPrep::run().

void FileSet::close ( )
throw (nidas::util::IOException
)
virtualinherited
IOChannel * FileSet::connect ( )
throw (nidas::util::IOException
)
virtualinherited

Establish a connection.

On return, the connection has been established. It may return a new instance of an IOChannel.

Implements nidas::core::IOChannel.

References nidas::core::FileSet::_mount, and nidas::core::FsMount::mount().

Referenced by nidas::dynld::raf::SyncServer::openStream(), DataDump::run(), and DataStats::run().

dsm_time_t FileSet::createFile ( dsm_time_t  t,
bool  exact 
)
throw (nidas::util::IOException
)
virtualinherited

Request that an IOChannel open a new file, with a name based on a time.

This should be implemented by derived classes which write to disk files. Other derived classes (e.g. sockets) can just use this default implementation - basically ignoring the request.

Parameters
tTime to use when creating file name.
exactUse exact time when creating file name, else the time is adjusted to an even time interval.

Reimplemented from nidas::core::IOChannel.

References nidas::util::UTime::toUsecs().

IOChannel * IOChannel::createIOChannel ( const xercesc::DOMElement *  node)
throw (nidas::util::InvalidParameterException
)
staticinherited
virtual void nidas::core::IOChannel::flush ( )
throw (nidas::util::IOException
)
inlinevirtualinherited
void FileSet::fromDOMElement ( const xercesc::DOMElement *  )
throw (nidas::util::InvalidParameterException
)
virtualinherited

Initialize myself from a xercesc::DOMElement.

Implements nidas::core::DOMable.

References nidas::core::XDOMAttr::getName(), and nidas::core::XDOMElement::getNodeName().

virtual size_t nidas::core::IOChannel::getBufferSize ( ) const
throw (
)
inlinevirtualinherited
virtual const ConnectionInfo& nidas::core::IOChannel::getConnectionInfo ( ) const
inlinevirtualinherited

What is the IP address of the host at the other end of the connection.

If this IOChannel is not a socket then return INADDR_ANY, using the default constructor of an Inet4Address. Socket subclasses should override this.

Referenced by nidas::dynld::SampleInputStream::setIOChannel().

const std::string& nidas::core::FileSet::getCurrentName ( ) const
inlineinherited
virtual const DSMConfig* nidas::core::IOChannel::getDSMConfig ( ) const
inlinevirtualinherited

What DSM is this IOChannel connected to? May be NULL.

Referenced by nidas::core::FileSet::setDir(), and nidas::core::FileSet::setFileName().

nidas::util::UTime nidas::core::FileSet::getEndTime ( ) const
inlineinherited
int nidas::core::FileSet::getFd ( ) const
inlinevirtualinherited
int nidas::core::FileSet::getFileLengthSecs ( ) const
inlineinherited
FileSet * FileSet::getFileSet ( const std::list< std::string > &  filenames)
throw (nidas::util::InvalidParameterException
)
staticinherited

Convienence function to return a pointer to a nidas::core::FileSet, given a list of files.

If one or more of the files have a .bz2 suffix, the FileSet returned will be a nidas::core::Bzip2FileSet. Note that a Bzip2FileSet cannot be used to read a non-compressed file, so one should not mix compressed and non-compressed files in the list.

References nidas::core::FileSet::addFileName().

Referenced by nidas::dynld::raf::SyncServer::openStream(), MergeVerifier::run(), NidsMerge::run(), SensorExtract::run(), StatsProcess::run(), SyncDumper::run(), ExtractFast2D::run(), ExtractDMT::run(), DataPrep::run(), DataDump::run(), and DataStats::run().

long long nidas::core::FileSet::getFileSize ( ) const
throw (nidas::util::IOException
)
inlineinherited
int nidas::core::FileSet::getLastErrno ( ) const
inlineinherited

Get last error value.

Should be 0. Currently only supported for an output file, to be queried by a system status thread.

References nidas::core::FileSet::_fset, and nidas::util::FileSet::getLastErrno().

const std::string & FileSet::getName ( ) const
virtualinherited
static const XMLCh* nidas::core::DOMable::getNamespaceURI ( )
inlinestaticinherited
int nidas::core::FileSet::getReconnectDelaySecs ( ) const
inlinevirtualinherited

Reimplemented from nidas::core::IOChannel.

virtual enum McSocketRequest nidas::core::IOChannel::getRequestType ( ) const
inlinevirtualinherited
nidas::util::UTime nidas::core::FileSet::getStartTime ( ) const
inlineinherited
bool nidas::core::FileSet::isNewInput ( ) const
inlinevirtualinherited

Some IOChannels, namely FileSet, which opens successive files, need to indicate when a read is from the start of a new file.

This method is used by code which may need to do special things at the beginning of a file, like read a SampleInputHeader.

Reimplemented from nidas::core::IOChannel.

References nidas::core::FileSet::_fset, and nidas::util::FileSet::isNewFile().

bool nidas::core::FileSet::isNonBlocking ( ) const
throw (nidas::util::IOException
)
inlinevirtualinherited
bool nidas::core::FileSet::keepOpening ( )
inlineinherited
void FileSet::mounted ( )
inherited
size_t nidas::core::FileSet::read ( void *  buf,
size_t  len 
)
throw (nidas::util::IOException
)
inlinevirtualinherited

Physical read method which must be implemented in derived classes.

Returns the number of bytes written, which may be less than the number requested.

Implements nidas::core::IOChannel.

References nidas::core::FileSet::_fset, len, and nidas::util::FileSet::read().

void FileSet::requestConnection ( IOChannelRequester )
throw (nidas::util::IOException
)
virtualinherited

After the IOChannel is configured, a user of IOChannel calls requestConnection to get things started.

It is like opening a device, but in the case of server sockets, it just starts a thread to wait on connections. Only when the IOChannelRequester::connected() method is called back is the channel actually open and ready for IO. The IOChannel* returned by IOChannelRequester::connected may be another instance of an IOChannel.

Implements nidas::core::IOChannel.

virtual void nidas::core::IOChannel::setConnectionInfo ( const ConnectionInfo val)
inlinevirtualinherited
void FileSet::setDir ( const std::string &  val)
inherited

Set the directory portion of the file search path.

This may contain environment variables, and tokens like $DSM, $SITE, $AIRCRAFT.

References nidas::core::FileSet::_fset, nidas::core::IOChannel::getDSMConfig(), nidas::core::Project::getInstance(), nidas::util::FileSet::getPath(), nidas::util::FileSet::setDir(), and nidas::core::FileSet::setName().

virtual void nidas::core::IOChannel::setDSMConfig ( const DSMConfig val)
inlinevirtualinherited
void nidas::core::FileSet::setEndTime ( const nidas::util::UTime val)
inlineinherited
void nidas::core::FileSet::setFileLengthSecs ( int  val)
inlineinherited

Set/get the file length in seconds.

References nidas::core::FileSet::_fset, and nidas::util::FileSet::setFileLengthSecs().

Referenced by NidsMerge::run(), SensorExtract::run(), and ARLIngest::run().

void FileSet::setFileName ( const std::string &  val)
inherited

Set the file portion of the file search path.

This may contain environment variables, and tokens like $DSM, $SITE, $AIRCRAFT.

References nidas::core::FileSet::_fset, nidas::core::IOChannel::getDSMConfig(), nidas::core::Project::getInstance(), nidas::util::FileSet::getPath(), nidas::util::FileSet::setFileName(), and nidas::core::FileSet::setName().

Referenced by MergeVerifier::run(), NidsMerge::run(), SensorExtract::run(), and ARLIngest::run().

void nidas::core::FileSet::setKeepOpening ( bool  keepopening)
inlineinherited

Set whether the FileSet should keep going to the next file when an error happens opening a file.

References nidas::core::FileSet::_fset, and nidas::util::FileSet::setKeepOpening().

Referenced by NidsMerge::run().

void nidas::core::FileSet::setMount ( FsMount val)
inlineinherited

FileSet will own the FsMount.

References nidas::core::FileSet::_mount.

void FileSet::setName ( const std::string &  val)
protectedvirtualinherited

Recognizeable name of this IOChannel - used for informative messages.

Implements nidas::core::IOChannel.

References nidas::core::FileSet::_name.

Referenced by nidas::core::FileSet::setDir(), and nidas::core::FileSet::setFileName().

void nidas::core::FileSet::setNonBlocking ( bool  val)
throw (nidas::util::IOException
)
inlinevirtualinherited
virtual void nidas::core::IOChannel::setRequestType ( enum McSocketRequest  )
inlinevirtualinherited
void nidas::core::FileSet::setStartTime ( const nidas::util::UTime val)
inlineinherited
xercesc::DOMElement * DOMable::toDOMElement ( xercesc::DOMElement *  node,
bool  complete 
) const
throw (xercesc::DOMException
)
virtualinherited
xercesc::DOMElement * DOMable::toDOMParent ( xercesc::DOMElement *  parent,
bool  complete 
) const
throw (xercesc::DOMException
)
virtualinherited
size_t nidas::core::FileSet::write ( const void *  buf,
size_t  len 
)
throw (nidas::util::IOException
)
inlinevirtualinherited

Physical write method which must be implemented in derived classes.

Returns the number of bytes written, which may be less than the number requested.

Implements nidas::core::IOChannel.

References nidas::core::FileSet::_fset, nidas::core::FileSet::getName(), len, and nidas::util::FileSet::write().

size_t nidas::core::FileSet::write ( const struct iovec *  iov,
int  iovcnt 
)
throw (nidas::util::IOException
)
inlinevirtualinherited

Physical write method which must be implemented in derived classes.

Returns the number of bytes written, which may be less than the number requested.

Implements nidas::core::IOChannel.

References nidas::core::FileSet::_fset, and nidas::util::FileSet::write().

virtual bool nidas::core::IOChannel::writeNidasHeader ( ) const
inlinevirtualinherited

Should the NIDAS header be written to this IOChannel? NIDAS headers are not written to DatagramSockets, because there is no guarantee they will get there.

Reimplemented in nidas::core::DatagramSocket.

Referenced by nidas::dynld::SampleInputStream::setIOChannel().

Member Data Documentation

nidas::util::FileSet* nidas::core::FileSet::_fset
protectedinherited
FsMount* nidas::core::FileSet::_mount
protectedinherited
std::string nidas::core::FileSet::_name
protectedinherited
IOChannelRequester* nidas::core::FileSet::_requester
protectedinherited

The documentation for this class was generated from the following file: