nidas v1.2.3
|
#include <AsciiOutput.h>
Public Types | |
enum | format { DEFAULT , ASCII , HEX , SIGNED_SHORT , UNSIGNED_SHORT , FLOAT , IRIG } |
typedef enum nidas::dynld::AsciiOutput::format | format_t |
Static Public Member Functions | |
static const XMLCh * | getNamespaceURI () |
Protected Member Functions | |
AsciiOutput * | clone (IOChannel *iochannel) |
AsciiOutput (AsciiOutput &, IOChannel *) | |
Copy constructor, with a new IOChannel. | |
void | printHeader () |
size_t | incrementDiscardedSamples () |
SampleConnectionRequester * | getSampleConnectionRequester () |
void | disconnect () |
Close the IOChannel and notify whoever did the requestConnection that it is time to disconnect, perhaps because of an IOException. | |
Protected Attributes | |
std::string | _name |
Private Member Functions | |
AsciiOutput (const AsciiOutput &) | |
Copy constructor. | |
Private Attributes | |
std::ostringstream | _ostr |
format_t | _format |
std::map< dsm_sample_id_t, dsm_time_t > | _prevTT |
Previous time tags by sample id. | |
bool | _headerOut |
nidas::util::Mutex | _tagsMutex |
std::list< SampleTag * > | _requestedTags |
std::list< const SampleTag * > | _constRequestedTags |
IOChannel * | _iochan |
SampleConnectionRequester * | _connectionRequester |
dsm_time_t | _nextFileTime |
HeaderSource * | _headerSource |
const DSMConfig * | _dsm |
size_t | _nsamplesDiscarded |
std::map< std::string, Parameter * > | _parameters |
Map of parameters by name. | |
std::list< const Parameter * > | _constParameters |
List of const pointers to Parameters for providing via getParameters(). | |
std::list< const SampleTag * > | _sourceTags |
SampleOutput * | _original |
Pointer to the SampleOutput that I was cloned from. | |
float | _latency |
int | _reconnectDelaySecs |
dsm_time_t | _startTime |
Clipping time window. | |
dsm_time_t | _endTime |
Static Private Attributes | |
static XMLCh * | namespaceURI = 0 |
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.
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::getSample().
Referenced by nidas::core::SampleOutputBase::fromDOMElement().
nidas::util::InvalidParameterException |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_constRequestedTags, nidas::core::SampleOutputBase::_requestedTags, nidas::core::SampleOutputBase::_tagsMutex, and nidas::core::getSample().
Referenced by nidas::dynld::raf::CVIOutput::addRequestedSampleTag(), and nidas::core::SampleOutputBase::SampleOutputBase().
nidas::util::InvalidParameterException |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_sourceTags, nidas::core::SampleOutputBase::_tagsMutex, and nidas::core::getSample().
Referenced by nidas::core::SampleOutputBase::addSourceSampleTags(), and nidas::core::SampleOutputBase::SampleOutputBase().
|
virtualinherited |
nidas::util::InvalidParameterException |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::addSourceSampleTag(), and nidas::core::getSample().
|
protectedvirtual |
Implements nidas::core::SampleOutput.
References AsciiOutput().
|
virtualinherited |
nidas::util::IOException |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::SampleOutputStream, and nidas::dynld::UDPSampleOutput.
References nidas::core::SampleOutputBase::_iochan, nidas::core::SampleOutputBase::_nextFileTime, nidas::core::IOChannel::close(), DLOG, nidas::core::SampleOutputBase::getName(), and nidas::core::getSample().
Referenced by nidas::dynld::SampleOutputStream::close(), nidas::dynld::UDPSampleOutput::close(), and nidas::core::SampleOutputBase::disconnect().
void AsciiOutput::connect | ( | nidas::core::SampleSource * | source | ) |
|
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::SampleOutputStream, and nidas::dynld::UDPSampleOutput.
References nidas::core::SampleOutputBase::_connectionRequester, nidas::core::SampleOutputBase::_iochan, nidas::core::SampleOutputBase::_nextFileTime, nidas::core::SampleOutput::clone(), nidas::core::IOChannel::close(), nidas::core::SampleConnectionRequester::connect(), nidas::core::getSample(), nidas::core::SampleOutputBase::setIOChannel(), and nidas::core::SampleOutputBase::setName().
Referenced by nidas::dynld::SampleOutputStream::connected(), and nidas::dynld::UDPSampleOutput::connected().
|
inherited |
nidas::util::IOException |
References nidas::core::SampleOutputBase::_headerSource, nidas::core::SampleOutputBase::_nextFileTime, nidas::core::IOChannel::createFile(), nidas::core::SampleOutputBase::getIOChannel(), nidas::core::HeaderSource::sendDefaultHeader(), and nidas::core::HeaderSource::sendHeader().
Referenced by receive(), and nidas::dynld::raf::CVIOutput::receive().
|
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().
nidas::util::IOException |
References nidas::core::SampleOutputBase::_connectionRequester, nidas::core::SampleOutputBase::close(), nidas::core::SampleConnectionRequester::disconnect(), nidas::core::SampleOutputBase::getName(), nidas::core::getSample(), and ILOG.
Referenced by receive(), and nidas::dynld::raf::CVIOutput::receive().
|
inlinevirtual |
Implementation of SampleClient::flush().
Implements nidas::core::SampleClient.
nidas::util::InvalidParameterException |
Implements nidas::core::DOMable.
Reimplemented in nidas::dynld::UDPSampleOutput.
References nidas::core::SampleOutputBase::addParameter(), nidas::core::IOChannel::createIOChannel(), nidas::core::Parameter::createParameter(), nidas::core::SampleOutputBase::getDSMConfig(), nidas::core::Project::getInstance(), nidas::core::SampleOutputBase::getIOChannel(), nidas::core::SampleOutputBase::getName(), nidas::core::getSample(), nidas::core::SampleOutputBase::setIOChannel(), nidas::core::SampleOutputBase::setLatency(), nidas::core::SampleOutputBase::setName(), and WLOG.
Referenced by nidas::dynld::UDPSampleOutput::fromDOMElement().
|
virtualinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_iochan, and nidas::core::IOChannel::getFd().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_iochan.
Referenced by AsciiOutput(), AsciiOutput(), connect(), nidas::core::SampleOutputBase::createNextFile(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::core::SampleOutputBase::fromDOMElement(), nidas::dynld::RawSampleOutputStream::fromDOMElement(), nidas::dynld::UDPSampleOutput::fromDOMElement(), printHeader(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), receive(), nidas::dynld::raf::CVIOutput::receive(), nidas::dynld::raf::CVIOutput::requestConnection(), nidas::dynld::SampleOutputStream::SampleOutputStream(), nidas::dynld::SampleOutputStream::SampleOutputStream(), nidas::dynld::raf::CVIOutput::setIOChannel(), and nidas::dynld::UDPSampleOutput::write().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_latency.
Referenced by nidas::dynld::SampleOutputStream::SampleOutputStream(), and nidas::dynld::SampleOutputStream::SampleOutputStream().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_name.
Referenced by nidas::dynld::UDPSampleOutput::ConnectionMonitor::addConnection(), AsciiOutput(), AsciiOutput(), nidas::dynld::UDPSampleOutput::XMLSocketListener::checkWorkers(), nidas::core::SampleOutputBase::close(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::core::SampleOutputBase::disconnect(), nidas::dynld::UDPSampleOutput::XMLSocketListener::fireWorkers(), nidas::dynld::SampleOutputStream::flush(), nidas::core::SampleOutputBase::fromDOMElement(), nidas::dynld::UDPSampleOutput::fromDOMElement(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), receive(), nidas::dynld::raf::CVIOutput::receive(), nidas::dynld::UDPSampleOutput::ConnectionMonitor::removeConnection(), nidas::dynld::SampleOutputStream::SampleOutputStream(), nidas::dynld::SampleOutputStream::SampleOutputStream(), nidas::dynld::raf::CVIOutput::setIOChannel(), and nidas::dynld::SampleOutputStream::setLatency().
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::Datasets::toDOMParent(), nidas::core::ProjectConfig::toDOMParent(), nidas::core::ProjectConfigs::toDOMParent(), nidas::core::DSMConfig::toDOMParent(), nidas::core::DSMSensor::toDOMParent(), nidas::core::Project::toDOMParent(), nidas::core::SampleTag::toDOMParent(), nidas::core::Site::toDOMParent(), nidas::core::ServerSocket::toDOMParent(), nidas::core::Variable::toDOMParent(), nidas::core::Datasets::writeXML(), and nidas::core::ProjectConfigs::writeXML().
|
inlineinherited |
References nidas::core::SampleOutputBase::_nextFileTime.
Referenced by receive(), and nidas::dynld::raf::CVIOutput::receive().
|
inlineinherited |
|
inlinevirtualinherited |
Get pointer to SampleOutput that was cloned.
Will be NULL if this SampleOutput is an un-cloned original.
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_original.
Fetch a parameter by name.
Returns a NULL pointer if no such parameter exists.
References nidas::core::SampleOutputBase::_parameters.
|
inlineinherited |
Get list of parameters.
References nidas::core::SampleOutputBase::_constParameters.
Referenced by nidas::dynld::UDPSampleOutput::fromDOMElement().
|
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().
|
inlineprotectedinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_sourceTags, nidas::core::SampleOutputBase::_tagsMutex, and nidas::core::getSample().
|
inlineprotectedinherited |
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
|
protected |
nidas::util::IOException |
References _headerOut, _ostr, nidas::core::SampleOutputBase::getIOChannel(), nidas::core::getSample(), and nidas::core::IOChannel::write().
Referenced by receive().
)
Implements nidas::core::SampleClient.
References _format, _headerOut, _ostr, _prevTT, ASCII, nidas::core::CHAR_ST, nidas::core::SampleOutputBase::createNextFile(), DEFAULT, nidas::core::SampleOutputBase::disconnect(), nidas::core::DOUBLE_ST, FLOAT, nidas::core::FLOAT_ST, fp, GET_DSM_ID, GET_SHORT_ID, nidas::core::Sample::getConstVoidDataPtr(), nidas::core::Sample::getDataByteLength(), nidas::core::Sample::getDataValue(), nidas::core::SampleOutputBase::getIOChannel(), nidas::core::SampleOutputBase::getName(), nidas::core::SampleOutputBase::getNextFileTime(), nidas::core::getSample(), HEX, IRIG, LOG_ERR, printHeader(), SIGNED_SHORT, UNSIGNED_SHORT, USECS_PER_SEC, and nidas::core::IOChannel::write().
|
virtual |
Request a connection, of this SampleOutput, but don't wait for it.
The SampleConnectionRequester will be notified via a call back to SampleConnectionRequester::connected(SampleOutput*,SampleOutput*) where the first SampleOutput points to the SampleOutput of the original request, and the second is often a new instance of a SampleOutput with a new IOChannel connection. Or the two pointers may point to the same SampleOutput.
nidas::util::IOException |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::requestConnection().
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_dsm, and nidas::core::getSample().
Set the format for character samples.
Raw sensor samples are character samples.
References _format, and nidas::core::getSample().
|
inlinevirtualinherited |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_headerSource, and nidas::core::getSample().
Referenced by ARLIngest::run(), NidsMerge::run(), and SensorExtract::run().
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.
References nidas::core::SampleOutputBase::_iochan, nidas::core::SampleOutputBase::getDSMConfig(), nidas::core::getSample(), and nidas::core::IOChannel::setDSMConfig().
Referenced by connect(), nidas::core::SampleOutputBase::connected(), nidas::core::SampleOutputBase::fromDOMElement(), and nidas::dynld::raf::CVIOutput::setIOChannel().
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. |
nidas::util::InvalidParameterException |
Implements nidas::core::SampleOutput.
Reimplemented in nidas::dynld::SampleOutputStream.
References nidas::core::SampleOutputBase::_latency, and nidas::core::getSample().
Referenced by nidas::core::SampleOutputBase::fromDOMElement(), and nidas::dynld::SampleOutputStream::setLatency().
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_name, and nidas::core::getSample().
Referenced by AsciiOutput(), AsciiOutput(), nidas::core::SampleOutputBase::connected(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::dynld::raf::CVIOutput::CVIOutput(), nidas::core::SampleOutputBase::fromDOMElement(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), nidas::dynld::RawSampleOutputStream::RawSampleOutputStream(), nidas::dynld::SampleOutputStream::SampleOutputStream(), nidas::dynld::SampleOutputStream::SampleOutputStream(), and nidas::dynld::raf::CVIOutput::setIOChannel().
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_reconnectDelaySecs, and nidas::core::getSample().
Referenced by nidas::dynld::raf::SyncServer::init().
|
inherited |
The sample output can have a time window which clips the samples outside the window.
Only samples at or after startTime
and before endTime
will be passed along. One or both of start and end time can be zero, in which case only the non-zero times are used to clip samples.
References nidas::core::SampleOutputBase::_endTime, nidas::core::SampleOutputBase::_startTime, and nidas::util::UTime::toUsecs().
Referenced by nidas::core::NidasApp::setOutputClipping().
|
virtualinherited |
Add my content into a DOMElement.
xercesc::DOMException |
Reimplemented in nidas::core::DSMConfig, nidas::core::DSMSensor, nidas::core::Project, nidas::core::SampleTag, nidas::core::Site, nidas::core::ServerSocket, and nidas::core::Variable.
Referenced by nidas::core::ServerSocket::toDOMParent().
|
virtualinherited |
Create a DOMElement and append it to the parent.
xercesc::DOMException |
Reimplemented in nidas::core::DSMConfig, nidas::core::DSMSensor, nidas::core::Project, nidas::core::SampleTag, nidas::core::Site, nidas::core::ServerSocket, and nidas::core::Variable.
Raw write method, typically used to write the initial header.
nidas::util::IOException |
Implements nidas::core::SampleOutput.
References nidas::core::SampleOutputBase::_iochan, nidas::core::getSample(), len, and nidas::core::IOChannel::write().
|
privateinherited |
List of const pointers to Parameters for providing via getParameters().
Referenced by nidas::core::SampleOutputBase::addParameter(), and nidas::core::SampleOutputBase::getParameters().
|
privateinherited |
|
private |
Referenced by receive(), and setFormat().
|
private |
Referenced by printHeader(), and receive().
|
privateinherited |
|
privateinherited |
Referenced by nidas::core::SampleOutputBase::close(), nidas::core::SampleOutputBase::connected(), nidas::core::SampleOutputBase::getFd(), nidas::core::SampleOutputBase::getIOChannel(), nidas::core::SampleOutputBase::getReconnectDelaySecs(), nidas::core::SampleOutputBase::requestConnection(), nidas::core::SampleOutputBase::SampleOutputBase(), nidas::core::SampleOutputBase::setIOChannel(), nidas::core::SampleOutputBase::write(), and nidas::core::SampleOutputBase::~SampleOutputBase().
|
privateinherited |
|
protectedinherited |
Referenced by nidas::core::SampleOutputBase::getName(), and nidas::core::SampleOutputBase::setName().
|
privateinherited |
|
privateinherited |
|
privateinherited |
Pointer to the SampleOutput that I was cloned from.
Referenced by nidas::core::SampleOutputBase::getOriginal().
|
private |
Referenced by printHeader(), and receive().
|
privateinherited |
Map of parameters by name.
Referenced by nidas::core::SampleOutputBase::addParameter(), nidas::core::SampleOutputBase::getParameter(), and nidas::core::SampleOutputBase::~SampleOutputBase().
|
private |
|
privateinherited |
|
privateinherited |
|
privateinherited |
Clipping time window.
Samples outside the given time window will not pass.
Referenced by nidas::core::SampleOutputBase::receive(), and nidas::core::SampleOutputBase::setTimeClippingWindow().
|
mutableprivateinherited |
|
staticprivateinherited |
Referenced by nidas::core::DOMable::getNamespaceURI().