Apache log4cxx Version 0.13.0
cacheddateformat.h
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef _LOG4CXX_HELPERS_CACHED_DATE_FORMAT_H
19#define _LOG4CXX_HELPERS_CACHED_DATE_FORMAT_H
20
22
23#if defined(_MSC_VER)
24 #pragma warning ( push )
25 #pragma warning ( disable: 4251 )
26#endif
27
28namespace log4cxx
29{
30namespace pattern
31{
33{
34 public:
35 enum
36 {
37 /*
38 * Constant used to represent that there was no change
39 * observed when changing the millisecond count.
40 */
41 NO_MILLISECONDS = -2,
42 /*
43 * Constant used to represent that there was an
44 * observed change, but was an expected change.
45 */
46 UNRECOGNIZED_MILLISECONDS = -1
47 };
48
49 private:
56 static const logchar digits[];
57
58
63 static const int magic1;
64
65
69 static const logchar magicString1[];
70
71
76 static const int magic2;
77
78
82 static const logchar magicString2[];
83
84
88 static const logchar zeroString[];
89
93 log4cxx::helpers::DateFormatPtr formatter;
94
99 mutable int millisecondStart;
100
104 mutable log4cxx_time_t slotBegin;
105
106
110 mutable LogString cache;
111
112
118 const int expiration;
119
123 mutable log4cxx_time_t previousTime;
124
125 public:
134 CachedDateFormat(const log4cxx::helpers::DateFormatPtr& dateFormat, int expiration);
135
147 log4cxx_time_t time, const LogString& formatted,
148 const log4cxx::helpers::DateFormatPtr& formatter,
150
158 virtual void format(LogString& sbuf,
159 log4cxx_time_t date,
160 log4cxx::helpers::Pool& p) const;
161
162 private:
170 static void millisecondFormat(int millis,
171 LogString& buf,
172 int offset);
173
174
175 public:
183 virtual void setTimeZone(const log4cxx::helpers::TimeZonePtr& zone);
184
191 virtual void numberFormat(LogString& s,
192 int n,
193 log4cxx::helpers::Pool& p) const;
194
202 static int getMaximumCacheValidity(const LogString& pattern);
203
204 private:
206 CachedDateFormat& operator=(const CachedDateFormat&);
207
217 static bool regionMatches(
218 const LogString& target,
219 size_t toffset,
220 const LogString& other,
221 size_t ooffset,
222 size_t len);
223
224};
225
226
227
228} // namespace helpers
229} // namespace log4cxx
230
231#if defined(_MSC_VER)
232 #pragma warning (pop)
233#endif
234
235#endif // _LOG4CXX_HELPERS_SIMPLE_DATE_FORMAT_H
DateFormat is an abstract class for date/time formatting patterned after java.text....
Definition: dateformat.h:34
Definition: pool.h:33
Definition: cacheddateformat.h:33
CachedDateFormat(const log4cxx::helpers::DateFormatPtr &dateFormat, int expiration)
Creates a new CachedDateFormat object.
static int findMillisecondStart(log4cxx_time_t time, const LogString &formatted, const log4cxx::helpers::DateFormatPtr &formatter, log4cxx::helpers::Pool &pool)
Finds start of millisecond field in formatted time.
virtual void numberFormat(LogString &s, int n, log4cxx::helpers::Pool &p) const
Format an integer consistent with the format method.
virtual void format(LogString &sbuf, log4cxx_time_t date, log4cxx::helpers::Pool &p) const
Formats a Date into a date/time string.
static int getMaximumCacheValidity(const LogString &pattern)
Gets maximum cache validity for the specified SimpleDateTime conversion pattern.
virtual void setTimeZone(const log4cxx::helpers::TimeZonePtr &zone)
Set timezone.
Definition: messagehandler.h:23
std::basic_string< logchar > LogString
Definition: logstring.h:66