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

Implementation of an IOChannel using an nidas::util::FileSet. More...

#include <FileSet.h>

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

Public Member Functions

 FileSet ()
 
 FileSet (nidas::util::FileSet *fset)
 Constructor from a pointer to a nidas::util::FileSet. More...
 
 ~FileSet ()
 
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

 FileSet (const FileSet &x)
 Copy constructor. More...
 
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
 

Private Member Functions

FileSetoperator= (const FileSet &)
 No assignment. More...
 

Detailed Description

Implementation of an IOChannel using an nidas::util::FileSet.

Constructor & Destructor Documentation

FileSet::FileSet ( )

Referenced by clone().

FileSet::FileSet ( nidas::util::FileSet fset)

Constructor from a pointer to a nidas::util::FileSet.

nidas::core::FileSet will own the pointer.

FileSet::~FileSet ( )

References _fset, and _mount.

FileSet::FileSet ( const FileSet x)
protected

Copy constructor.

References _mount.

Member Function Documentation

void nidas::core::FileSet::addFileName ( const std::string &  val)
inline
FileSet* nidas::core::FileSet::clone ( ) const
inlinevirtual

Clone myself.

Implements nidas::core::IOChannel.

References FileSet().

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

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

Establish a connection.

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

Implements nidas::core::IOChannel.

References _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
)
virtual

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
)
virtual

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
inline
virtual const DSMConfig* nidas::core::IOChannel::getDSMConfig ( ) const
inlinevirtualinherited

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

Referenced by setDir(), and setFileName().

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

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 addFileName().

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

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

Get last error value.

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

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

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

Reimplemented from nidas::core::IOChannel.

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

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 _fset, and nidas::util::FileSet::isNewFile().

bool nidas::core::FileSet::isNonBlocking ( ) const
throw (nidas::util::IOException
)
inlinevirtual
bool nidas::core::FileSet::keepOpening ( )
inline
void FileSet::mounted ( )
FileSet& nidas::core::FileSet::operator= ( const FileSet )
private

No assignment.

size_t nidas::core::FileSet::read ( void *  buf,
size_t  len 
)
throw (nidas::util::IOException
)
inlinevirtual

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 _fset, len, and nidas::util::FileSet::read().

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

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)

Set the directory portion of the file search path.

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

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

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

Set/get the file length in seconds.

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

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

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

Set the file portion of the file search path.

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

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

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

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

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

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

Referenced by NidsMerge::run().

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

FileSet will own the FsMount.

References _mount.

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

Recognizeable name of this IOChannel - used for informative messages.

Implements nidas::core::IOChannel.

References _name.

Referenced by setDir(), and setFileName().

void nidas::core::FileSet::setNonBlocking ( bool  val)
throw (nidas::util::IOException
)
inlinevirtual

Implements nidas::core::IOChannel.

References getName(), and PLOG.

virtual void nidas::core::IOChannel::setRequestType ( enum McSocketRequest  )
inlinevirtualinherited
void nidas::core::FileSet::setStartTime ( const nidas::util::UTime val)
inline
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
)
inlinevirtual

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 _fset, getName(), len, and nidas::util::FileSet::write().

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

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 _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
protected
FsMount* nidas::core::FileSet::_mount
protected
std::string nidas::core::FileSet::_name
protected

Referenced by getName(), and setName().

IOChannelRequester* nidas::core::FileSet::_requester
protected

Referenced by mounted().


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