#include <msvis/MSVis/VisibilityIterator.h>
#include <msvis/MSVis/VisibilityIteratorImplAsync.h>
#include <msvis/MSVis/VisBufferAsync.h>
#include <msvis/MSVis/VisBufferAsyncWrapper.h>
#include <msvis/MSVis/VLAT.h>
#include <msvis/MSVis/AsynchronousInterface.h>
#include <stdcasa/UtilJ.h>
#include <casacore/casa/Utilities/GenSort.h>
#include <casacore/ms/MeasurementSets/MSColumns.h>
#include <casacore/casa/System/AipsrcValue.h>
using namespace casacore;
using namespace casa::utilj;
using namespace casacore;
using namespace casa::asyncio;
#define Log(level, ...) \
{if (VlaData::loggingInitialized_p && level <= VlaData::logLevel_p) \
Logger::get()->log (__VA_ARGS__);};
#define NotImplemented Throw ("VisibilityIteratorReadImplAsync: Method not implemented!");
#define VIWIA_NotImplemented() \
Throw ("ViWriteImplAsync --> Operation not permitted!\n" \
"Modify VisBuffer, mark components as dirty and use VisibilityIterator::writeBack.");
#define ThrowIfNoVbaAttached() \
ThrowIf (visBufferAsync_p == 0, "No VisBufferAsync attached to VI; try doing vi.origin() first.");
using namespace casacore;
ViReadImplAsync::ViReadImplAsync (const Block<MeasurementSet> & mss,
const PrefetchColumns & prefetchColumns,
const Block<Int> & sortColumns,
const Bool addDefaultSortCols,
: visBufferAsync_p (NULL),
construct (mss, prefetchColumns, sortColumns, addDefaultSortCols,