nidas
v1.2-1520
|
#include <AsciiOutput.h>
Public Types | |
enum | format { DEFAULT, ASCII, HEX, SIGNED_SHORT, UNSIGNED_SHORT, FLOAT, IRIG } |
typedef enum nidas::dynld::AsciiOutput::format | format_t |
Public Member Functions | |
AsciiOutput () | |
AsciiOutput (IOChannel *iochannel, SampleConnectionRequester *rqstr=0) | |
virtual | ~AsciiOutput () |
void | flush () throw () |
Implementation of SampleClient::flush(). More... | |
void | requestConnection (SampleConnectionRequester *requester) throw () |
Request a connection, but don't wait for it. More... | |
void | connect (nidas::core::SampleSource *) throw (nidas::util::IOException) |
void | setFormat (format_t val) |
Set the format for character samples. More... | |
bool | receive (const Sample *samp) throw () |
Method called to pass a sample to this client. 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 |
SampleOutput * | connected (IOChannel *ochan) throw () |
Implementation of IOChannelRequester::connected(). More... | |
int | getReconnectDelaySecs () const |
Base class implementation. More... | |
void | setReconnectDelaySecs (int val) |
int | getFd () const |
void | close () throw (nidas::util::IOException) |
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... | |
void | setLatency (float val) throw (nidas::util::InvalidParameterException) |
Set desired latency, providing some control over the response time vs buffer efficiency tradeoff. 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 | |
AsciiOutput * | clone (IOChannel *iochannel) |
AsciiOutput (AsciiOutput &, IOChannel *) | |
Copy constructor, with a new IOChannel. More... | |
void | printHeader () 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 | |
std::string | _name |
Private Member Functions | |
AsciiOutput (const AsciiOutput &) | |
Copy constructor. More... | |
Private Attributes | |
std::ostringstream | _ostr |
format_t | _format |
std::map< dsm_sample_id_t, dsm_time_t > | _prevTT |
Previous time tags by sample id. More... | |
bool | _headerOut |
AsciiOutput::AsciiOutput | ( | ) |
Referenced by clone().
AsciiOutput::AsciiOutput | ( | IOChannel * | iochannel, |
SampleConnectionRequester * | rqstr = 0 |
||
) |
|
inlinevirtual |
|
protected |
Copy constructor, with a new IOChannel.
References nidas::core::SampleOutputBase::getIOChannel(), nidas::core::SampleOutputBase::getName(), and nidas::core::SampleOutputBase::setName().
|
private |
Copy constructor.
|
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 AsciiOutput().
|
virtualinherited |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::isff::GOESOutput, nidas::dynld::psql::PSQLSampleOutput, nidas::dynld::UDPSampleOutput, and nidas::dynld::SampleOutputStream.
References nidas::core::SampleOutputBase::_iochan, nidas::core::SampleOutputBase::_nextFileTime, nidas::core::IOChannel::close(), DLOG, and nidas::core::SampleOutputBase::getName().
Referenced by nidas::dynld::SampleOutputStream::close(), nidas::dynld::UDPSampleOutput::close(), nidas::dynld::isff::GOESOutput::close(), and nidas::core::SampleOutputBase::disconnect().
void AsciiOutput::connect | ( | nidas::core::SampleSource * | source | ) | |
throw | ( | nidas::util::IOException | |||
) |
|
virtualinherited |
Implementation of IOChannelRequester::connected().
How an IOChannel calls back to a SampleConnectionRequester that it is connected. The ConnectionRequester can then return a clone of itself if the IOChannel is a new instance.
Implements nidas::core::IOChannelRequester.
Reimplemented in nidas::dynld::isff::GOESOutput, nidas::dynld::psql::PSQLSampleOutput, nidas::dynld::UDPSampleOutput, and nidas::dynld::SampleOutputStream.
References nidas::core::SampleOutput::close().
Referenced by nidas::dynld::SampleOutputStream::connected(), nidas::dynld::UDPSampleOutput::connected(), and nidas::dynld::isff::GOESOutput::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.
|
inlinevirtual |
Implementation of SampleClient::flush().
Implements nidas::core::SampleClient.
|
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 AsciiOutput(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::dynld::isff::GOESOutput::GOESOutput(), printHeader(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), nidas::dynld::SampleOutputStream::SampleOutputStream(), nidas::dynld::isff::GOESOutput::setIOChannel(), and nidas::dynld::raf::CVIOutput::setIOChannel().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Referenced by nidas::dynld::SampleOutputStream::SampleOutputStream().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::psql::PSQLSampleOutput.
Referenced by nidas::dynld::UDPSampleOutput::ConnectionMonitor::addConnection(), 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(), nidas::dynld::SampleOutputStream::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(), nidas::dynld::SampleOutputStream::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.
|
protected |
|
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::core::CHAR_ST, nidas::core::DOUBLE_ST, nidas::core::FLOAT_ST, nidas::util::UTime::format(), fp, GET_DSM_ID, GET_SHORT_ID, nidas::util::Logger::getInstance(), nidas::util::Logger::log(), LOG_ERR, nidas::dynld::raf::IRIGSensor::statusString(), USECS_PER_SEC, and nidas::util::Exception::what().
|
virtual |
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.
Reimplemented from nidas::core::SampleOutputBase.
References nidas::core::SampleOutputBase::requestConnection().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
|
inline |
Set the format for character samples.
Raw sensor samples are character samples.
|
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().
|
inlinevirtualinherited |
Set desired latency, providing some control over the response time vs buffer efficiency tradeoff.
Setting a latency of 1/10 sec means buffer data in the IOStream for a 1/10 sec, then send the data to the physical device.
val | Latency, in seconds. |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::SampleOutputStream.
Referenced by nidas::dynld::SampleOutputStream::setLatency().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::psql::PSQLSampleOutput.
Referenced by AsciiOutput(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::dynld::isff::GOESOutput::GOESOutput(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), nidas::dynld::SampleOutputStream::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.
|
overridevirtualinherited |
Raw write method, typically used to write the initial header.
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::isff::GOESOutput.
References len.
|
private |
|
private |
Referenced by printHeader().
|
protectedinherited |
|
private |
Referenced by printHeader().
|
private |
Previous time tags by sample id.
Used for displaying time diffs.