nidas
v1.2-1520
|
A class for serializing Samples on an OutputStream. More...
#include <SampleOutputStream.h>
Public Member Functions | |
SampleOutputStream () | |
SampleOutputStream (IOChannel *iochan, SampleConnectionRequester *rqstr=0) | |
Create a SampleOutputStream with a connected IOChannel. More... | |
virtual | ~SampleOutputStream () |
SampleOutput * | connected (IOChannel *ochan) throw () |
Implementation of IOChannelRequester::connected(). More... | |
IOStream * | getIOStream () |
Get the IOStream of this SampleOutputStream. More... | |
void | close () throw (nidas::util::IOException) |
bool | receive (const Sample *s) throw () |
Method called to pass a sample to this client. More... | |
void | flush () throw () |
Ask that this SampleClient send out any buffered Samples that it may be holding. More... | |
size_t | write (const void *buf, size_t len, bool streamFlush) throw (nidas::util::IOException) |
void | setLatency (float val) throw (nidas::util::InvalidParameterException) |
Outgoing data is buffered in an IOStream. More... | |
virtual void | setIOChannel (IOChannel *val) |
Set the IOChannel for this SampleOutput. More... | |
SampleOutput * | getOriginal () const |
Get pointer to SampleOutput that was cloned. More... | |
void | setName (const std::string &val) |
const std::string & | getName () const |
bool | isRaw () const |
void | addRequestedSampleTag (SampleTag *tag) throw (nidas::util::InvalidParameterException) |
Some SampleOutputs don't send out all the Samples that they receive. More... | |
std::list< const SampleTag * > | getRequestedSampleTags () const |
void | addSourceSampleTag (const SampleTag *tag) throw (nidas::util::InvalidParameterException) |
Some SampleOutputs like to be informed of what SampleTags they will be receiving from their SampleSources before they make a connection. More... | |
void | addSourceSampleTags (const std::list< const SampleTag * > &tags) throw (nidas::util::InvalidParameterException) |
std::list< const SampleTag * > | getSourceSampleTags () const |
void | requestConnection (SampleConnectionRequester *) throw (nidas::util::IOException) |
Request a connection, but don't wait for it. More... | |
int | getReconnectDelaySecs () const |
Base class implementation. More... | |
void | setReconnectDelaySecs (int val) |
int | getFd () const |
dsm_time_t | getNextFileTime () const |
void | createNextFile (dsm_time_t) throw (nidas::util::IOException) |
size_t | write (const void *buf, size_t len) override throw (nidas::util::IOException) |
Raw write method, typically used to write the initial header. More... | |
void | fromDOMElement (const xercesc::DOMElement *node) throw (nidas::util::InvalidParameterException) |
Initialize myself from a xercesc::DOMElement. More... | |
IOChannel * | getIOChannel () const |
void | setHeaderSource (HeaderSource *val) |
void | setDSMConfig (const DSMConfig *val) |
const DSMConfig * | getDSMConfig () const |
size_t | getNumDiscardedSamples () const |
void | addParameter (Parameter *val) |
Add a parameter to this DSMSensor. More... | |
const std::list< const Parameter * > & | getParameters () const |
Get list of parameters. More... | |
const Parameter * | getParameter (const std::string &name) const |
Fetch a parameter by name. More... | |
float | getLatency () const |
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 const XMLCh * | getNamespaceURI () |
Protected Member Functions | |
SampleOutputStream * | clone (IOChannel *iochannel) |
SampleOutputStream (SampleOutputStream &, IOChannel *) | |
Copy constructor, with a new IOChannel. More... | |
size_t | write (const Sample *samp, bool streamFlush) throw (nidas::util::IOException) |
size_t | incrementDiscardedSamples () |
SampleConnectionRequester * | getSampleConnectionRequester () |
void | disconnect () throw (nidas::util::IOException) |
Close the IOChannel and notify whoever did the requestConnection that it is time to disconnect, perhaps because of an IOException. More... | |
Protected Attributes | |
IOStream * | _iostream |
std::string | _name |
Private Member Functions | |
SampleOutputStream (const SampleOutputStream &) | |
No copy. More... | |
SampleOutputStream & | operator= (const SampleOutputStream &) |
No assignment. More... | |
Private Attributes | |
int | _maxUsecs |
Maximum number of microseconds between physical writes. More... | |
dsm_time_t | _lastFlushTT |
Timetag of last flush of IOStream. More... | |
A class for serializing Samples on an OutputStream.
SampleOutputStream::SampleOutputStream | ( | ) |
References USECS_PER_SEC.
Referenced by clone().
SampleOutputStream::SampleOutputStream | ( | IOChannel * | iochan, |
SampleConnectionRequester * | rqstr = 0 |
||
) |
Create a SampleOutputStream with a connected IOChannel.
References _iostream, _maxUsecs, nidas::core::SampleOutputBase::getIOChannel(), nidas::core::SampleOutputBase::getLatency(), nidas::core::SampleOutputBase::getName(), nidas::core::SampleOutputBase::setName(), and USECS_PER_SEC.
|
protected |
Copy constructor, with a new IOChannel.
References _iostream, _maxUsecs, nidas::core::SampleOutputBase::getIOChannel(), nidas::core::SampleOutputBase::getLatency(), nidas::core::SampleOutputBase::getName(), nidas::core::SampleOutputBase::setName(), and USECS_PER_SEC.
|
private |
No copy.
|
inherited |
Add a parameter to this DSMSensor.
DSMSensor will then own the pointer and will delete it in its destructor. If a Parameter exists with the same name, it will be replaced with the new Parameter.
References nidas::core::SampleOutputBase::_constParameters, nidas::core::SampleOutputBase::_parameters, and nidas::core::Parameter::getName().
|
virtualinherited |
Some SampleOutputs don't send out all the Samples that they receive.
At configuration time, one can use this method to request the SampleTags that should be output from a SampleOutput. SampleOutput will own the pointer.
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::isff::GOESOutput, and nidas::dynld::raf::CVIOutput.
Referenced by nidas::dynld::raf::CVIOutput::addRequestedSampleTag(), nidas::dynld::isff::GOESOutput::addRequestedSampleTag(), and nidas::core::SampleOutputBase::SampleOutputBase().
|
virtualinherited |
Some SampleOutputs like to be informed of what SampleTags they will be receiving from their SampleSources before they make a connection.
Users of SampleOutputs should call this method before calling requestConnection().
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::isff::GOESOutput.
Referenced by nidas::dynld::isff::GOESOutput::addSourceSampleTag(), and nidas::core::SampleOutputBase::SampleOutputBase().
|
virtualinherited |
Implements nidas::core::SampleOutput.
|
protectedvirtual |
Implements nidas::core::SampleOutput.
References SampleOutputStream().
|
virtual |
Reimplemented from nidas::core::SampleOutputBase.
References _iostream, nidas::core::SampleOutputBase::close(), and VLOG.
Referenced by NidsMerge::run(), SensorExtract::run(), and ARLIngest::run().
|
virtual |
Implementation of IOChannelRequester::connected().
How an IOChannel indicates that it has received a connection.
Reimplemented from nidas::core::SampleOutputBase.
References nidas::core::SampleOutputBase::connected().
Referenced by nidas::dynld::psql::PSQLSampleOutput::connected().
|
inherited |
References nidas::core::HeaderSource::sendDefaultHeader().
|
protectedinherited |
Close the IOChannel and notify whoever did the requestConnection that it is time to disconnect, perhaps because of an IOException.
This is typically called in the receive() method of a SampleOutput if it gets an IOException when writing data. A common implementation of a connection requester is to delete this SampleOutput after the removing it from the sample stream. So the caller method should immediately return after calling disconnect().
References nidas::core::SampleOutputBase::_connectionRequester, nidas::core::SampleOutputBase::close(), nidas::core::SampleConnectionRequester::disconnect(), nidas::core::SampleOutputBase::getName(), and ILOG.
|
virtual |
Ask that this SampleClient send out any buffered Samples that it may be holding.
Implements nidas::core::SampleClient.
References _iostream, nidas::core::IOStream::flush(), nidas::util::Exception::getErrno(), nidas::core::SampleOutputBase::getName(), VLOG, nidas::util::Exception::what(), and WLOG.
Referenced by NidsMerge::run(), SensorExtract::run(), and ARLIngest::run().
|
virtualinherited |
Initialize myself from a xercesc::DOMElement.
Implements nidas::core::DOMable.
Reimplemented in nidas::dynld::isff::GOESOutput, nidas::dynld::psql::PSQLSampleOutput, nidas::dynld::UDPSampleOutput, and nidas::dynld::RawSampleOutputStream.
References nidas::core::IOChannel::createIOChannel(), nidas::core::Parameter::createParameter(), nidas::core::DOMable::fromDOMElement(), nidas::core::Project::getInstance(), nidas::core::XDOMAttr::getName(), nidas::core::XDOMElement::getNodeName(), nidas::core::IOChannel::setDSMConfig(), and WLOG.
Referenced by nidas::dynld::RawSampleOutputStream::fromDOMElement(), and nidas::dynld::UDPSampleOutput::fromDOMElement().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Referenced by nidas::core::SampleOutputBase::SampleOutputBase(), and nidas::core::SampleOutputBase::setIOChannel().
|
virtualinherited |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::psql::PSQLSampleOutput.
References nidas::core::SampleOutputBase::_iochan, and nidas::core::IOChannel::getFd().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Referenced by nidas::dynld::AsciiOutput::AsciiOutput(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::dynld::isff::GOESOutput::GOESOutput(), nidas::dynld::AsciiOutput::printHeader(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), SampleOutputStream(), nidas::dynld::isff::GOESOutput::setIOChannel(), and nidas::dynld::raf::CVIOutput::setIOChannel().
|
inline |
Get the IOStream of this SampleOutputStream.
SampleOutputStream owns the pointer and will delete the IOStream in its destructor. The IOStream is available after a SammpleOutputStream is constructed with an connected IOChannel, or after the connected() method has been called and before close().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Referenced by SampleOutputStream().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::psql::PSQLSampleOutput.
Referenced by nidas::dynld::UDPSampleOutput::ConnectionMonitor::addConnection(), nidas::dynld::AsciiOutput::AsciiOutput(), nidas::dynld::isff::GOESOutput::cancelThread(), nidas::dynld::UDPSampleOutput::XMLSocketListener::checkWorkers(), nidas::core::SampleOutputBase::close(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::core::SampleOutputBase::disconnect(), nidas::dynld::UDPSampleOutput::XMLSocketListener::fireWorkers(), flush(), nidas::dynld::isff::GOESOutput::GOESOutput(), nidas::dynld::isff::GOESOutput::joinThread(), nidas::dynld::isff::GOESOutput::killThread(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), nidas::dynld::UDPSampleOutput::ConnectionMonitor::removeConnection(), nidas::dynld::isff::GOESOutput::run(), SampleOutputStream(), nidas::dynld::isff::GOESOutput::setIOChannel(), nidas::dynld::raf::CVIOutput::setIOChannel(), and nidas::dynld::isff::GOESOutput::write().
|
inlinestaticinherited |
References nidas::core::DOMable::namespaceURI.
Referenced by nidas::dynld::UDPSampleOutput::getProjectDOM(), nidas::core::Dataset::toDOMElement(), nidas::core::ProjectConfig::toDOMElement(), nidas::core::Dataset::toDOMParent(), nidas::core::ProjectConfig::toDOMParent(), nidas::core::Datasets::toDOMParent(), nidas::core::ProjectConfigs::toDOMParent(), nidas::core::DSMConfig::toDOMParent(), nidas::core::Project::toDOMParent(), nidas::core::Site::toDOMParent(), nidas::core::SampleTag::toDOMParent(), nidas::core::ServerSocket::toDOMParent(), nidas::core::Variable::toDOMParent(), nidas::core::DSMSensor::toDOMParent(), nidas::core::Datasets::writeXML(), and nidas::core::ProjectConfigs::writeXML().
|
inlineinherited |
|
inlineinherited |
|
inlinevirtualinherited |
Get pointer to SampleOutput that was cloned.
Will be NULL if this SampleOutput is an un-cloned original.
Implements nidas::core::SampleOutput.
|
inherited |
Fetch a parameter by name.
Returns a NULL pointer if no such parameter exists.
References nidas::core::SampleOutputBase::_parameters.
|
inlineinherited |
Get list of parameters.
|
virtualinherited |
Base class implementation.
If setReconnectDelaySecs() has been called on this SampleOutput, then that value will be returned. Otherwise this will return the value of the IOChannel.
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_iochan, nidas::core::SampleOutputBase::_reconnectDelaySecs, and nidas::core::IOChannel::getReconnectDelaySecs().
|
virtualinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_constRequestedTags, and nidas::core::SampleOutputBase::_tagsMutex.
Referenced by nidas::dynld::isff::GOESProject::GOESProject(), nidas::dynld::isff::GOESOutput::run(), and nidas::core::SampleOutputBase::SampleOutputBase().
|
inlineprotectedinherited |
|
virtualinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_sourceTags, and nidas::core::SampleOutputBase::_tagsMutex.
Referenced by nidas::core::SampleOutputBase::SampleOutputBase().
|
inlineprotectedinherited |
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::psql::PSQLSampleOutput, and nidas::dynld::RawSampleOutputStream.
|
private |
No assignment.
|
virtual |
Method called to pass a sample to this client.
This method is typically called by a SampleSource for each of its SampleClients when it has a sample ready. Returns true: success false: sample rejected. This is meant to signal a warning-type situation - like a socket not being available temporarily. True errors will be thrown as an IOException.
Implements nidas::core::SampleClient.
References nidas::util::Exception::getErrno(), NLOG, VLOG, nidas::util::Exception::what(), and WLOG.
Referenced by NidsMerge::receiveAllowedDsm(), SensorExtract::run(), and ARLIngest::writeLine().
|
virtualinherited |
Request a connection, but don't wait for it.
Requester will be notified via SampleConnectionRequester interface when the connection has been made. It is not necessary to call this method if a SampleOutput is constructed with a connected IOChannel.
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::psql::PSQLSampleOutput, nidas::dynld::raf::CVIOutput, and nidas::dynld::AsciiOutput.
Referenced by nidas::dynld::AsciiOutput::requestConnection(), and nidas::dynld::raf::CVIOutput::requestConnection().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Referenced by NidsMerge::run(), SensorExtract::run(), and ARLIngest::run().
|
virtualinherited |
Set the IOChannel for this SampleOutput.
This IOChannel is not yet connected. The IOChannel must be connected before the SampleOutput is used for I/O, using the requestConnection() method, or by IOChannel::connect() followed by SampleOutput::connected(IOChannel*).
Reimplemented in nidas::dynld::raf::CVIOutput, and nidas::dynld::isff::GOESOutput.
References nidas::core::SampleOutputBase::_iochan, nidas::core::SampleOutputBase::getDSMConfig(), and nidas::core::IOChannel::setDSMConfig().
Referenced by nidas::dynld::isff::GOESOutput::setIOChannel(), and nidas::dynld::raf::CVIOutput::setIOChannel().
|
virtual |
Outgoing data is buffered in an IOStream.
The stream will be flushed when the difference between successive time tags exceeds this value. This is a useful parameter for real-time applications.
val | Number of seconds between physical writes. Default is set in SampleOutputBase. |
Reimplemented from nidas::core::SampleOutputBase.
References nidas::core::SampleOutputBase::setLatency(), and USECS_PER_SEC.
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::psql::PSQLSampleOutput.
Referenced by nidas::dynld::AsciiOutput::AsciiOutput(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::dynld::isff::GOESOutput::GOESOutput(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), SampleOutputStream(), nidas::dynld::isff::GOESOutput::setIOChannel(), and nidas::dynld::raf::CVIOutput::setIOChannel().
|
virtualinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_reconnectDelaySecs.
Referenced by nidas::dynld::raf::SyncServer::init().
|
virtualinherited |
Add my content into a DOMElement.
Reimplemented in nidas::core::DSMSensor, nidas::core::Variable, nidas::core::ServerSocket, nidas::core::SampleTag, nidas::core::Site, nidas::core::Project, and nidas::core::DSMConfig.
Referenced by nidas::core::ServerSocket::toDOMParent().
|
virtualinherited |
Create a DOMElement and append it to the parent.
Reimplemented in nidas::core::DSMSensor, nidas::core::Variable, nidas::core::ServerSocket, nidas::core::SampleTag, nidas::core::Site, nidas::core::Project, and nidas::core::DSMConfig.
size_t SampleOutputStream::write | ( | const void * | buf, |
size_t | len, | ||
bool | streamFlush | ||
) | |||
throw | ( | nidas::util::IOException | |
) |
References len.
|
protected |
|
overridevirtualinherited |
Raw write method, typically used to write the initial header.
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::isff::GOESOutput.
References len.
|
protected |
Referenced by close(), flush(), SampleOutputStream(), and ~SampleOutputStream().
|
private |
Timetag of last flush of IOStream.
|
private |
Maximum number of microseconds between physical writes.
Referenced by SampleOutputStream().
|
protectedinherited |