7 #ifndef CORRELATORDATA_H
8 #define CORRELATORDATA_H
10 #include "carma/correlator/lib/CorrelatorBand.h"
12 #include "carma/util/PthreadMutex.h"
18 namespace correlator {
21 class CorrelatorConfigChecker;
30 using carma::util::Serializable::deserializeVer1;
57 void mySerialize(
char * byteArray,
int * offset )
const;
70 void deserializeVer1(
const char * byteArray,
int * offset,
78 void deserializeSwapVer1(
const char * byteArray,
int * offset,
103 const std::vector<carma::correlator::lib::CorrelatorBand>&
106 std::vector<carma::correlator::lib::CorrelatorBand> &
getBands( );
119 bool hasBand(
int bandNumber )
const;
133 void setHeaderMJD(
double mjd );
134 void setHeaderTransmissionMJD(
double mjd );
135 void setHeaderReceivedMJD(
double mjd );
174 bool incrementRefCountIfZero( );
181 void reserveBands(
size_t numBands );
183 void setBandMJD(
int bandNumber,
double mjd );
185 bool baselineCountsPhysicallyValid( )
const;
193 std::vector<carma::correlator::lib::CorrelatorBand> band_;
201 class carma::correlator::lib::CorrelatorData::ScopedRef {
208 ScopedRef(
const ScopedRef & rhs );
209 ScopedRef &
operator=(
const ScopedRef & rhs );
230 header_( rhs.header_ ),
246 if ( &rhs !=
this ) {
249 header_ = rhs.header_;
278 inline const ::std::vector< carma::correlator::lib::CorrelatorBand > &
284 inline ::std::vector< carma::correlator::lib::CorrelatorBand > &
300 carma::correlator::lib::CorrelatorData::setHeaderMJD(
const double mjd )
302 header_.setMJD( mjd );
307 carma::correlator::lib::CorrelatorData::setHeaderTransmissionMJD(
310 header_.setTransmissionMJD( mjd );
314 carma::correlator::lib::CorrelatorData::setHeaderReceivedMJD(
317 header_.setReceivedMJD( mjd );
321 carma::correlator::lib::CorrelatorData::reserveBands(
const size_t numBands )
323 band_.reserve( numBands );
328 carma::correlator::lib::CorrelatorData::ScopedRef::ScopedRef(
329 CorrelatorData & cd ) :
332 cd_.incrementRefCount();
337 carma::correlator::lib::CorrelatorData::ScopedRef::~ScopedRef( )
339 cd_.decrementRefCount();
Abstract Class used to allow object to serialize themselves into a byte array.
void incrementRefCount()
Increment the reference count.
int getNumberOfBands() const
Get number of Correlator Bands.
CorrelatorData & operator=(const CorrelatorData &rhs)
Assignment.
void normalize()
Normalize data.
void deserializeSwapVer0(const char *byteArray, int *offset, int byteArraySize)
Used to reconstruct object.
CorrelatorData()
Constructor.
const carma::correlator::lib::CorrelatorBand & getBand(int bandNumber) const
Get a single Correlator Band bandNumber is the number assigned to this band.
Class to hold a Band of Correlator Data.
void mySerialize(char *byteArray, int *offset) const
Used to serialize data.
int getRefCount() const
Return the refCount.
bool addInIgnoringDups(const CorrelatorBand &band)
Add a CorrelatorBand but ignore duplicates.
virtual void deserializeVer0(const char *byteArray, int *offset, int byteArraySize)=0
Called to continue the reconstruction of member objects from the byte Array.
Class used to represents bands of Correlator Data.
void addIn(const CorrelatorData &rhs)
Add a CorrelatorData into this one.
void decrementRefCount()
Decrement the reference count.
virtual ~CorrelatorData()
Destructor.
void deserializeVer0(const char *byteArray, int *offset, int byteArraySize)
Used to reconstruct object.
void setHeader(const carma::correlator::lib::CorrelatorHeader &h)
Set Correlator Header.
const carma::correlator::lib::CorrelatorHeader & getHeader() const
Get Correlator Header.
int getSizeInBytes() const
Return size in bytes of object.
void addBand(const carma::correlator::lib::CorrelatorBand &band)
Add a Correlator Band.
A simple wrapper class that makes use of ::pthread_mutex_t easier in a C++ world. ...
const std::vector< carma::correlator::lib::CorrelatorBand > & getBands() const
Get Correlator Bands.
void addBandViaSwap(carma::correlator::lib::CorrelatorBand &band)
Add a correlator band using a swap.