casacore
MemoryLogSink.h
Go to the documentation of this file.
1//# MemoryLogSink.h: Save log messages in memory
2//# Copyright (C) 2001,2003
3//# Associated Universities, Inc. Washington DC, USA.
4//#
5//# This library is free software; you can redistribute it and/or modify it
6//# under the terms of the GNU Library General Public License as published by
7//# the Free Software Foundation; either version 2 of the License, or (at your
8//# option) any later version.
9//#
10//# This library is distributed in the hope that it will be useful, but WITHOUT
11//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13//# License for more details.
14//#
15//# You should have received a copy of the GNU Library General Public License
16//# along with this library; if not, write to the Free Software Foundation,
17//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18//#
19//# Correspondence concerning AIPS++ should be addressed as follows:
20//# Internet email: aips2-request@nrao.edu.
21//# Postal address: AIPS++ Project Office
22//# National Radio Astronomy Observatory
23//# 520 Edgemont Road
24//# Charlottesville, VA 22903-2475 USA
25//#
26//#
27//# $Id$
28
29#ifndef CASA_MEMORYLOGSINK_H
30#define CASA_MEMORYLOGSINK_H
31
32//# Includes
33#include <casacore/casa/aips.h>
34#include <casacore/casa/Logging/LogSinkInterface.h>
35#include <casacore/casa/Containers/Block.h>
36#include <casacore/casa/BasicSL/String.h>
37
38namespace casacore { //# NAMESPACE CASACORE - BEGIN
39
40//# Forward Declarations
41
42// <summary>
43// Save log messages in memory.
44// </summary>
45
46// <use visibility=export>
47
48// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="tLogging.cc" demos="dLogging.cc">
49// </reviewed>
50
51// <prerequisite>
52// <li> <linkto class=LogSinkInterface>LogSinkInterface</linkto>
53// </prerequisite>
54//
55// <synopsis>
56// This class posts messages which pass the filter to
57// memory.
58// </synopsis>
59//
60// <example>
61// See <linkto file="Logging.h">Logging.h</linkto>.
62// </example>
63//
64// <motivation>
65// For temporary images log messages must be held in memory temporarily.
66// </motivation>
67//
68//# <todo asof="2001/06/12">
69//# </todo>
70
72{
73public:
74 // Create an empty sink without a filter.
76
77 // Create an empty sink with the given filter.
78 // <group>
81 // </group>
82
83 // Copy constructor (copy semantics).
85
86 // Assignment (copy semantics).
88
89 virtual ~MemoryLogSink();
90
91 // Get number of messages in sink.
92 virtual uInt nelements() const;
93
94 // Get given part of the i-th message from the sink.
95 // <group>
96 virtual Double getTime (uInt i) const;
97 virtual String getPriority (uInt i) const;
98 virtual String getMessage (uInt i) const;
99 virtual String getLocation (uInt i) const;
100 virtual String getObjectID (uInt i) const;
101 // </group>
102
103 // If the message passes the filter, write it to memory
104 virtual Bool postLocally (const LogMessage& message);
105
106 // Write a message (usually from another logsink) into the local one.
107 virtual void writeLocally (Double time, const String& message,
108 const String& priority, const String& location,
109 const String& objectID);
110
111 // Clear the local sink (i.e. remove all messages from it).
112 virtual void clearLocally();
113
114 // Returns the id for this class...
115 static String localId( );
116 // Returns the id of the LogSink in use...
117 String id( ) const;
118
119private:
120 // Avoid duplicating code in copy ctor and assignment operator
121 void copy_other (const MemoryLogSink& other);
122
123 // Rezize the blocks to the given size, but at least 64 elements
124 // more than the current size.
125 void resize (uInt nrnew);
126
133};
134
135
136
137} //# NAMESPACE CASACORE - END
138
139#endif
Priority
An "importance" which is assigned to each LogMessage.
Definition: LogMessage.h:105
virtual const LogFilterInterface & filter() const
Get/set the filter.
MemoryLogSink()
Create an empty sink without a filter.
Block< String > priority_p
virtual uInt nelements() const
Get number of messages in sink.
virtual String getMessage(uInt i) const
virtual String getObjectID(uInt i) const
virtual void clearLocally()
Clear the local sink (i.e.
MemoryLogSink(const LogFilterInterface &filter)
virtual String getLocation(uInt i) const
virtual String getPriority(uInt i) const
static String localId()
Returns the id for this class...
virtual Double getTime(uInt i) const
Get given part of the i-th message from the sink.
Block< String > location_p
MemoryLogSink(LogMessage::Priority filter)
Create an empty sink with the given filter.
Block< String > message_p
Block< String > objectID_p
MemoryLogSink & operator=(const MemoryLogSink &other)
Assignment (copy semantics).
void resize(uInt nrnew)
Rezize the blocks to the given size, but at least 64 elements more than the current size.
MemoryLogSink(const MemoryLogSink &other)
Copy constructor (copy semantics).
String id() const
Returns the id of the LogSink in use...
Block< Double > time_p
virtual void writeLocally(Double time, const String &message, const String &priority, const String &location, const String &objectID)
Write a message (usually from another logsink) into the local one.
void copy_other(const MemoryLogSink &other)
Avoid duplicating code in copy ctor and assignment operator.
virtual Bool postLocally(const LogMessage &message)
If the message passes the filter, write it to memory.
String: the storage and methods of handling collections of characters.
Definition: String.h:225
this file contains all the compiler specific defines
Definition: mainpage.dox:28
TableExprNode time(const TableExprNode &node)
Definition: ExprNode.h:1580
unsigned int uInt
Definition: aipstype.h:51
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
double Double
Definition: aipstype.h:55