Apache log4cxx  Version 0.12.1
objectoutputstream.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_OBJECTOUTPUTSTREAM_H
19 #define _LOG4CXX_HELPERS_OBJECTOUTPUTSTREAM_H
20 
21 #include <log4cxx/helpers/object.h>
22 #include <log4cxx/mdc.h>
25 
26 namespace log4cxx
27 {
28 namespace helpers
29 {
33 class LOG4CXX_EXPORT ObjectOutputStream : public Object
34 {
35  public:
40 
41  ObjectOutputStream(OutputStreamPtr os, Pool& p);
42  virtual ~ObjectOutputStream();
43 
44  void close(Pool& p);
45  void flush(Pool& p);
46  void reset(Pool& p);
47 
48  void writeObject(const LogString&, Pool& p);
49  void writeUTFString(const std::string&, Pool& p);
50  void writeObject(const MDC::Map& mdc, Pool& p);
51  void writeInt(int val, Pool& p);
52  void writeLong(log4cxx_time_t val, Pool& p);
53  void writeProlog(const char* className,
54  int classDescIncrement,
55  char* bytes,
56  size_t len,
57  Pool& p);
58  void writeNull(Pool& p);
59 
60  enum { STREAM_MAGIC = 0xACED };
61  enum { STREAM_VERSION = 5 };
62  enum
63  {
64  TC_NULL = 0x70,
65  TC_REFERENCE = 0x71,
66  TC_CLASSDESC = 0x72,
67  TC_OBJECT = 0x73,
68  TC_STRING = 0x74,
69  TC_ARRAY = 0x75,
70  TC_CLASS = 0x76,
71  TC_BLOCKDATA = 0x77,
72  TC_ENDBLOCKDATA = 0x78,
73  TC_RESET = 0x79
74  };
75  enum
76  {
77  SC_WRITE_METHOD = 0x01,
78  SC_SERIALIZABLE = 0x02
79  };
80 
81  void writeByte(char val, Pool& p);
82  void writeBytes(const char* bytes, size_t len, Pool& p);
83 
84  private:
86  ObjectOutputStream& operator=(const ObjectOutputStream&);
87 
88  OutputStreamPtr os;
89  log4cxx::helpers::CharsetEncoderPtr utf8Encoder;
90  const unsigned int objectHandleDefault;
91  unsigned int objectHandle;
92  typedef std::map<std::string, unsigned int> ClassDescriptionMap;
93  ClassDescriptionMap* classDescriptions;
94 };
95 
97 } // namespace helpers
98 
99 } //namespace log4cxx
100 
101 #endif //_LOG4CXX_HELPERS_OUTPUTSTREAM_H
102 
std::map< LogString, LogString > Map
String to string stl map.
Definition: mdc.h:46
#define DECLARE_ABSTRACT_LOG4CXX_OBJECT(object)
Definition: object.h:26
#define LOG4CXX_CAST_ENTRY(Interface)
Definition: object.h:148
#define END_LOG4CXX_CAST_MAP()
Definition: object.h:142
LOG4CXX_PTR_DEF(AppenderAttachableImpl)
#define BEGIN_LOG4CXX_CAST_MAP()
Definition: object.h:136
Emulates java serialization.
Definition: objectoutputstream.h:33
base class for java-like objects.
Definition: object.h:101
Definition: pool.h:32
Definition: appender.h:32
std::basic_string< logchar > LogString
Definition: logstring.h:66