Loading...
Searching...
No Matches
StandardStManAccessor.h
Go to the documentation of this file.
//# StandardStManAccessor.h: Gives access to some StandardStMan functions
//# Copyright (C) 2000,2001
//# 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: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef TABLES_STANDARDSTMANACCESSOR_H
#define TABLES_STANDARDSTMANACCESSOR_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/tables/DataMan/DataManAccessor.h>
#include <casacore/casa/iosfwd.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
//# Forward Declarations
class SSMBase;
class DataManager;
class Table;
class String;
// <summary>
// Give access to some StandardStMan functions
// </summary>
// <use visibility=export>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tStandardStMan">
// </reviewed>
// <prerequisite>
//# Classes you should understand before using this one.
// <li> <linkto class=StandardStMan>StandardStMan</linkto>
// </prerequisite>
// <synopsis>
// The Table system has one or more storage managers underneath.
// One of these possible storage managers is the
// <linkto class=StandardStMan>StandardStMan</linkto>.
// This storage manager uses a cache of buckets. The default
// cache size is defined when the StandardStMan object was
// constructed at the time the table was created.
// <p>
// Sometimes it can be useful to change the cache size. E.g. when
// the table is accessed in a random way, the hit rate may drop
// when the cache is too small. The class ROStandardStManAccessor makes
// it possible to change the cache size in a temporary way.
// <br>
// It is also possible to get the cache size.
// <p>
// Furthermore it is possible to show some statistics (about the cache
// and the internals of SSM classes).
// </synopsis>
// <motivation>
// In principle a pointer to StandardStMan could be used.
// However, that would give access to all public functions.
// Furthermore it could not distinguish between read/write and readonly
// tables.
// </motivation>
// <example>
// This example shows how to set the cache size for
// the standard storage manager with the name "SSMExample". The cache
// size is not persistent, i.e. when the same table is reopened
// at a later time, this cache size is not remembered.
// <srcblock>
// // Open a table.
// Table table("someName.data");
// // Set the cache size of its standard storage manager SSMExample
// // to 5 buckets.
// ROStandardStManAccessor accessor(table, "SSMExample");
// accessor.setCacheSize (5);
// </srcblock>
// </example>
//# <todo asof="$DATE:$">
//# </todo>
class ROStandardStManAccessor : public RODataManAccessor
{
public:
// Construct the object for a data manager in the table given the name
// of the data manager or the column.
// An exception is thrown if the data manager type is not the incremental
// storage manager.
ROStandardStManAccessor (const Table& table, const String& name,
Bool byColumn=False);
virtual ~ROStandardStManAccessor();
// Copy constructor (reference semantics).
ROStandardStManAccessor (const ROStandardStManAccessor& that);
// Assignment (reference semantics).
ROStandardStManAccessor& operator=
(const ROStandardStManAccessor& that);
// Set the cache size (in buckets) to be used by the
// storage manager.
// The cache size given in this way is not persistent.
// Only the cache size given to the constructors of the Standard
// storage managers, is persistent.
// If <src>canExceedNrBuckets=True</src>, the given cache size can be
// larger than the nr of buckets in the file. In this way the cache can
// be made large enough for a future file extension.
// Otherwise, it is limited to the actual number of buckets. This is useful
// if one wants the entire file to be cached.
void setCacheSize (uInt aSize, Bool canExceedNrBuckets=True);
// Get the cache size (in buckets).
uInt getCacheSize() const;
// Clear the cache used by this storage manager.
// It will flush the cache as needed and remove all buckets from it
// resulting in a drop in memory used.
void clearCache();
// Show the statistics for the base class.
void showBaseStatistics (ostream& anOs) const;
// Show the statistics for each index used by this storage manager.
void showIndexStatistics (ostream& anOs) const;
private:
//# Declare the data members.
SSMBase* itsSSMPtr;
};
} //# NAMESPACE CASACORE - END
#endif
casacore::DataManager
Abstract base class for a data manager.
Definition DataManager.h:219
casacore::RODataManAccessor::RODataManAccessor
RODataManAccessor()
Construct an empty object.
Definition DataManAccessor.h:79
casacore::ROStandardStManAccessor::itsSSMPtr
SSMBase * itsSSMPtr
Definition StandardStManAccessor.h:150
casacore::ROStandardStManAccessor::ROStandardStManAccessor
ROStandardStManAccessor(const ROStandardStManAccessor &that)
Copy constructor (reference semantics).
casacore::ROStandardStManAccessor::~ROStandardStManAccessor
virtual ~ROStandardStManAccessor()
casacore::ROStandardStManAccessor::clearCache
void clearCache()
Clear the cache used by this storage manager.
casacore::ROStandardStManAccessor::setCacheSize
void setCacheSize(uInt aSize, Bool canExceedNrBuckets=True)
Set the cache size (in buckets) to be used by the storage manager.
casacore::ROStandardStManAccessor::showIndexStatistics
void showIndexStatistics(ostream &anOs) const
Show the statistics for each index used by this storage manager.
casacore::ROStandardStManAccessor::getCacheSize
uInt getCacheSize() const
Get the cache size (in buckets).
casacore::ROStandardStManAccessor::ROStandardStManAccessor
ROStandardStManAccessor(const Table &table, const String &name, Bool byColumn=False)
Construct the object for a data manager in the table given the name of the data manager or the column...
casacore::ROStandardStManAccessor::showBaseStatistics
void showBaseStatistics(ostream &anOs) const
Show the statistics for the base class.
casacore::SSMBase
Definition SSMBase.h:157
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::Table
Definition Table.h:157
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::False
const Bool False
Definition aipstype.h:42
casacore::uInt
unsigned int uInt
Definition aipstype.h:49
casacore::name
String name() const
Return the name of the field.
Definition RecordField.h:163
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::True
const Bool True
Definition aipstype.h:41