8 #ifndef ASYNCHRONOUS_INTERFACE_H_
9 #define ASYNCHRONOUS_INTERFACE_H_
35 class ROVisibilityIterator;
47 inline operator std::string( )
const {
55 virtual void print (std::ostream & o)
const = 0;
120 void print (std::ostream & o)
const;
137 void print (std::ostream & o)
const;
156 void print (std::ostream & o)
const;
172 typedef std::vector<RoviaModifier *>
Data;
194 virtual void print (std::ostream & o)
const;
367 class InterfaceController;
402 typedef std::queue<VlaDatum *>
Data;
467 template <
typename Data>
496 template <
typename Data>
505 template <
typename Data>
537 template <
typename Data>
596 std::pair<casacore::Bool, RoviaModifiers>
resetVi ();
void insertValidSubChunk(SubChunkPair)
SetIntervalModifier(casacore::Double timeInterval)
casacore::Bool channelBlocks_p
DeltaThreadTimes readWait_p
casacore::Bool empty(casacore::Bool alreadyLocked=false)
SubChunkPair subchunkPair_p
async::Condition interfaceDataChanged_p
void print(std::ostream &o) const
VisBufferAsync * getVisBuffer()
std::queue< casacore::Int > ValidChunks
RoviaModifiers transferModifiers()
void apply(ROVisibilityIterator *) const
LatticeExprNode arg(const LatticeExprNode &expr)
VlaData * getVlaData()
async::LockGuard getLockGuard () const;
VlaDatum is a single elemement in the VlaDatum buffer ring used to support the ROVisibilityIteratorAs...
casacore::Bool isLookaheadTerminationRequested() const
WriteData(const SubChunkPair &subchunkPair)
casacore::Double timeInterval_p
const casacore::Int MaxNBuffers_p
void apply(ROVisibilityIterator *) const
ROVisibilityIterator::DataColumn DataColumn
static casacore::Bool loggingInitialized_p
void(VisibilityIterator::* Setter)(const Data &)
casacore::MDoppler::Types dType_p
WriteDataImpl(const SubChunkPair &subchunkPair, const Data &data, Setter setter)
VLAT is the Visibility LookAhead Thread. This thread advances a visibility iterator and fills the dat...
VisBufferAsync * readStart(SubChunkPair)
virtual void print(std::ostream &o) const =0
void print(std::ostream &o) const
casacore::Block< casacore::Vector< casacore::Int > > blockWidth_p
casacore::Bool fillCanStart() const
const AsynchronousInterface * interface_p
casacore::Bool isValidChunk(casacore::Int chunkNumber) const
void initialize(const AsynchronousInterface *)
ValidSubChunks validSubChunks_p
static casacore::Bool initializeLogging()
std::queue< VlaDatum * > Data
static void debugBlock (); static void debugUnblock (); static casacore::Bool logThis (casacore::Int ...
casacore::MVRadialVelocity vStart_p
void terminateLookahead()
std::pair< casacore::Bool, RoviaModifiers > resetVi()
void initialize(const AsynchronousInterface *)
void add(RoviaModifier *)
volatile casacore::Bool viResetComplete_p
(e.g., prior to rewinding
virtual void apply(ROVisibilityIterator *) const =0
casacore::Block< casacore::Vector< casacore::Int > > blockIncr_p
casacore::MRadialVelocity::Types rvType_p
ABSTRACT CLASSES Deliberately vague to be general enough to allow for many different types of data
casacore::Int spectralWindow_p
Internal value for MRadialVelocity.
void storeChannelSelection(const asyncio::ChannelSelection &channelSelection)
void waitForInterfaceChange(async::UniqueLock &uniqueLock) const
casacore::Int spectralWindow_p
casacore::Bool isSubChunk(SubChunkPair) const
const VisBufferAsync * getVisBuffer () const;
void insertValidChunk(casacore::Int chunkNumber)
SelectChannelModifier(casacore::Int nGroup, casacore::Int start, casacore::Int width, casacore::Int increment, casacore::Int spectralWindow)
void copyBlock(const casacore::Block< casacore::Vector< casacore::Int > > &src, casacore::Block< casacore::Vector< casacore::Int > > &to) const
static casacore::Int logLevel_p
SetRowBlockingModifier(casacore::Int nRows)
volatile casacore::Bool sweepTerminationRequested_p
RoviaModifiers transferRoviaModifiers()
WriteDataImpl2(const SubChunkPair &subchunkPair, const Data &data, DataColumn dataColumn, Setter setter)
casacore::Int clock(casacore::Int arg, casacore::Int base)
casacore::String makeReport()
casacore::Int increment_p
const AsynchronousInterface * interface_p
DeltaThreadTimes fillCycle_p
DeltaThreadTimes fillWait_p
void print(std::ostream &o) const
AsynchronousInterface & operator=(const AsynchronousInterface &)=delete
void write(VisibilityIterator *vi)
volatile casacore::Bool viResetRequested_p
asyncio::RoviaModifiers roviaModifiers_p
static casacore::Bool logThis(casacore::Int level)
void notifyAllInterfaceChanged() const
Types
Types of known MRadialVelocity Warning: The order defines the order in the translation matrix FromTo...
bool Bool
Define the standard types used by Casacore.
void apply(ROVisibilityIterator *)
Types
Types of known MDopplers Warning: The order defines the order in the translation matrix FromTo in th...
VlaData(casacore::Int maxNBuffers, async::Mutex &mutex)
VlaDatum * fillStart(SubChunkPair, const ThreadTimes &fillStartTime)
casacore::Block< casacore::Vector< casacore::Int > > blockSpw_p
AsynchronousInterface(const AsynchronousInterface &)=delete
friend class InterfaceController;
casacore::Block< casacore::Vector< casacore::Int > > blockStart_p
VisBufferAsync * releaseVisBufferAsync()
WriteQueue & getWriteQueue()
async::Mutex & getMutex() const
std::queue< SubChunkPair > ValidSubChunks
void enqueue(WriteData *writeData)
casacore::MVRadialVelocity vInc_p
SelectVelocityModifier(casacore::Int nChan, const casacore::MVRadialVelocity &vStart, const casacore::MVRadialVelocity &vInc, casacore::MRadialVelocity::Types rvType, casacore::MDoppler::Types dType, casacore::Bool precise)
casacore::Bool isValidSubChunk(SubChunkPair) const
virtual void write(VisibilityIterator *vi)=0
void apply(ROVisibilityIterator *) const
VlaDatum & operator=(const VlaDatum &other)
Illegal operations.
WriteData * createWriteData(const SubChunkPair &subchunkPair, const Data &data, void(VisibilityIterator::*setter)(const Data &))
DeltaThreadTimes readCycle_p
SubChunkPair getSubChunkPair() const
casacore::String toCsv(const casacore::Block< casacore::Vector< casacore::Int > > &bv) const
void write(VisibilityIterator *vi)
asyncio::ChannelSelection getChannelSelection() const
String: the storage and methods of handling collections of characters.
*static casacore::Bool initializeLogging()
void write(VisibilityIterator *vi)
void fillComplete(VlaDatum *datum)
VisibilityIterator iterates through one or more writable MeasurementSets.
void apply(ROVisibilityIterator *) const
casacore::Block< casacore::Vector< casacore::Int > > blockNGroup_p
asyncio::ChannelSelection channelSelection_p
virtual void print(std::ostream &o) const
volatile casacore::Bool lookaheadTerminationRequested_p
o VisBuffer consumed o Write data queued o Sweep or thread termination requested
casacore::Bool viResetRequested()
ROVisibilityIterator iterates through one or more readonly MeasurementSets.
DeltaThreadTimes fillOperate_p
SubChunkPair getSubChunkPair() const
ValidChunks validChunks_p
casacore::Bool statsEnabled() const
std::vector< RoviaModifier * > Data
DeltaThreadTimes readOperate_p
ChannelSelection & operator=(const ChannelSelection &other)
VisBufferAsync * visBuffer_p
void(VisibilityIterator::* Setter)(const Data &, DataColumn)
void addModifier(asyncio::RoviaModifier *modifier)
casacore::Bool isSweepTerminationRequested() const
std::queue< WriteData * > queue_p
void readComplete(SubChunkPair)
VlaData & operator=(const VlaData &other)
ChannelSelection channelSelection_p
friend std::ostream & operator<<(std::ostream &o, const RoviaModifier &m)