/usr/include/casacore/casa/IO/BucketBase.h is in casacore-dev 2.2.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | //# BucketBase.h: Abstract base class for Bucket classes
//# Copyright (C) 2010
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: aips2-request@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
//# $Id$
#ifndef CASA_BUCKETBASE_H
#define CASA_BUCKETBASE_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/casa/IO/BucketFile.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
// <summary>
// Abstract base class for Bucket classes.
// </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="" demos="">
// </reviewed>
// <prerequisite>
//# Classes you should understand before using this one.
// <li> <linkto class=BucketFile>BucketFile</linkto>
// </prerequisite>
// <synopsis>
// BucketBase is the abstract baseclass for the various Bucket classes
// like BucketMapped and BucketBuffered.
// It is used by TSMCube to do the IO in the required way.
// </synopsis>
class BucketBase
{
public:
// Create the bucket access for (part of) a file.
// The file part starts at startOffset. Its length is
// bucketSize*nrOfBuckets bytes.
// If the file is smaller, the remainder is indicated as an extension
// similarly to the behaviour of function extend.
BucketBase (BucketFile* file, Int64 startOffset, uInt bucketSize,
uInt nrOfBuckets);
// Detach the file. The BucketFile is not closed.
virtual ~BucketBase();
// Flush the cached buckets.
// Possibly remaining uninitialized buckets will be initialized first.
// A True status is returned if buckets had to be written.
// The actual flushing is done using <src>doFlush</src> in the derived
// class.
Bool flush();
// Resynchronize the object (after another process updated the file).
// It remaps the file if the nr of buckets has changed.
// the new sizes.
virtual void resync (uInt nrBucket);
// Get the current nr of buckets in the file.
uInt nBucket() const
{ return itsCurNrOfBuckets; }
// Extend the file with the given number of buckets.
// The buckets get initialized when they are acquired
// (using getBucket) for the first time.
void extend (uInt nrBucket);
// Set that data has been written.
void setWritten()
{ itsHasWritten = True; }
protected:
// Copy constructor is not possible.
BucketBase (const BucketBase&);
// Assignment is not possible.
BucketBase& operator= (const BucketBase&);
// Do the actual flushing.
virtual void doFlush() = 0;
// Do the actual resync-ing.
virtual void doResync() = 0;
// Do the actual extension of the file.
// Note that itsNewNrOfBuckets has been increased before doExtend is called.
virtual void doExtend (uInt nrBucket) = 0;
// Initialize the bucket buffer.
// The uninitialized buckets before this bucket are also initialized.
virtual void initializeBuckets (uInt bucketNr) = 0;
// The file used.
BucketFile* itsFile;
// The starting offsets of the buckets in the file.
Int64 itsStartOffset;
// The bucket size.
uInt itsBucketSize;
// The current nr of buckets in the file.
uInt itsCurNrOfBuckets;
// The new nr of buckets in the file (after extension).
uInt itsNewNrOfBuckets;
// Have data been written?
Bool itsHasWritten;
};
} //# NAMESPACE CASACORE - END
#endif
|