00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 #ifndef COH_SIMPLE_POF_CONTEXT_HPP
00017 #define COH_SIMPLE_POF_CONTEXT_HPP
00018 
00019 #include "coherence/lang.ns"
00020 
00021 #include "coherence/io/ReadBuffer.hpp"
00022 #include "coherence/io/WriteBuffer.hpp"
00023 #include "coherence/io/pof/PofContext.hpp"
00024 #include "coherence/io/pof/PofSerializer.hpp"
00025 #include "coherence/util/LongArray.hpp"
00026 #include "coherence/util/Map.hpp"
00027 
00028 COH_OPEN_NAMESPACE3(coherence,io,pof)
00029 
00030 using coherence::io::ReadBuffer;
00031 using coherence::io::WriteBuffer;
00032 using coherence::util::LongArray;
00033 using coherence::util::Map;
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 class COH_EXPORT SimplePofContext
00044     : public cloneable_spec<SimplePofContext,
00045         extends<Object>,
00046         implements<PofContext> >
00047     {
00048     friend class factory<SimplePofContext>;
00049 
00050     
00051 
00052     protected:
00053 
00054 
00055 
00056         SimplePofContext();
00057 
00058 
00059 
00060 
00061         SimplePofContext(const SimplePofContext& that);
00062 
00063 
00064     
00065 
00066     public:
00067 
00068 
00069 
00070 
00071 
00072 
00073 
00074 
00075 
00076 
00077 
00078 
00079 
00080 
00081 
00082         virtual void registerUserType(int32_t nTypeId, Class::View vClass,
00083                 PofSerializer::View vSerializer);
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 
00093 
00094         virtual void unregisterUserType(int32_t nTypeId);
00095 
00096 
00097     
00098 
00099     public:
00100 
00101 
00102 
00103         virtual PofSerializer::View getPofSerializer(int32_t nTypeId) const;
00104 
00105 
00106 
00107 
00108         virtual int32_t getUserTypeIdentifier(Object::View v) const;
00109 
00110 
00111 
00112 
00113         virtual int32_t getUserTypeIdentifier(Class::View vClass) const;
00114 
00115 
00116 
00117 
00118         virtual int32_t getUserTypeIdentifier(String::View vsClass) const;
00119 
00120 
00121 
00122 
00123         virtual String::View getClassName(int32_t nTypeId) const;
00124 
00125 
00126 
00127 
00128         virtual Class::View getClass(int32_t nTypeId) const;
00129 
00130 
00131 
00132 
00133         virtual bool isUserType(Object::View v) const;
00134 
00135 
00136 
00137 
00138         virtual bool isUserType(Class::View vClass) const;
00139 
00140 
00141 
00142 
00143         virtual bool isUserType(String::View vsClass) const;
00144 
00145 
00146     
00147 
00148     public:
00149 
00150 
00151 
00152         virtual void serialize(WriteBuffer::BufferOutput::Handle hOut,
00153                 Object::View v) const;
00154 
00155 
00156 
00157 
00158         virtual Object::Holder deserialize(
00159                 ReadBuffer::BufferInput::Handle hIn) const;
00160 
00161 
00162     
00163 
00164     public:
00165 
00166 
00167 
00168         virtual void toStream(std::ostream& out) const;
00169 
00170 
00171     
00172 
00173     protected:
00174 
00175 
00176 
00177 
00178 
00179 
00180 
00181 
00182         virtual void validateTypeId(int32_t nTypeId) const;
00183 
00184 
00185     
00186 
00187     public:
00188 
00189 
00190 
00191 
00192 
00193 
00194 
00195 
00196         virtual bool isReferenceEnabled() const;
00197 
00198 
00199 
00200 
00201 
00202 
00203 
00204 
00205 
00206 
00207         virtual void setReferenceEnabled(bool fEnabled);
00208 
00209 
00210 
00211 
00212 
00213 
00214 
00215 
00216 
00217 
00218         virtual void setReferenceEnabled(bool fEnabled) const;
00219 
00220 
00221     
00222 
00223     protected:
00224 
00225 
00226 
00227         FinalHandle<LongArray> f_hlaClass;
00228 
00229 
00230 
00231 
00232         FinalHandle<LongArray> f_hlaSerializer;
00233 
00234 
00235 
00236 
00237 
00238         FinalHandle<Map> f_hMapClassName;
00239 
00240 
00241 
00242 
00243         mutable bool m_fReferenceEnabled;
00244     };
00245 
00246 COH_CLOSE_NAMESPACE3
00247 
00248 #endif // COH_SIMPLE_POF_CONTEXT_HPP