//# MemoryLogSink.h: Save log messages in memory //# Copyright (C) 2001,2003 //# 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_MEMORYLOGSINK_H #define CASA_MEMORYLOGSINK_H //# Includes #include #include #include #include namespace casacore { //# NAMESPACE CASACORE - BEGIN //# Forward Declarations // // Save log messages in memory. // // // // // //
  • LogSinkInterface // // // // This class posts messages which pass the filter to // memory. // // // // See Logging.h. // // // // For temporary images log messages must be held in memory temporarily. // // //# //# class MemoryLogSink : public LogSinkInterface { public: // Create an empty sink without a filter. MemoryLogSink(); // Create an empty sink with the given filter. // explicit MemoryLogSink (LogMessage::Priority filter); explicit MemoryLogSink (const LogFilterInterface& filter); // // Copy constructor (copy semantics). MemoryLogSink (const MemoryLogSink& other); // Assignment (copy semantics). MemoryLogSink& operator= (const MemoryLogSink& other); virtual ~MemoryLogSink(); // Get number of messages in sink. virtual uInt nelements() const; // Get given part of the i-th message from the sink. // virtual Double getTime (uInt i) const; virtual String getPriority (uInt i) const; virtual String getMessage (uInt i) const; virtual String getLocation (uInt i) const; virtual String getObjectID (uInt i) const; // // If the message passes the filter, write it to memory virtual Bool postLocally (const LogMessage& message); // Write a message (usually from another logsink) into the local one. virtual void writeLocally (Double time, const String& message, const String& priority, const String& location, const String& objectID); // Clear the local sink (i.e. remove all messages from it). virtual void clearLocally(); // Returns the id for this class... static String localId( ); // Returns the id of the LogSink in use... String id( ) const; private: // Avoid duplicating code in copy ctor and assignment operator void copy_other (const MemoryLogSink& other); // Rezize the blocks to the given size, but at least 64 elements // more than the current size. void resize (uInt nrnew); uInt nmsg_p; Block time_p; Block priority_p; Block message_p; Block location_p; Block objectID_p; }; } //# NAMESPACE CASACORE - END #endif