19 #ifndef INCLUDE_RCF_PROTOCOL_PROTOCOL_HPP 20 #define INCLUDE_RCF_PROTOCOL_PROTOCOL_HPP 24 #include <RCF/Config.hpp> 26 #include <RCF/ErrorMsg.hpp> 27 #include <RCF/MemStream.hpp> 28 #include <RCF/Tools.hpp> 32 class SerializationProtocolIn;
33 class SerializationProtocolOut;
42 static std::string getName()
52 std::size_t archiveSize,
55 SerializationProtocolIn & spIn)
57 RCF_UNUSED_VARIABLE(is);
58 RCF_UNUSED_VARIABLE(archiveSize);
59 RCF_UNUSED_VARIABLE(runtimeVersion);
60 RCF_UNUSED_VARIABLE(archiveVersion);
61 RCF_UNUSED_VARIABLE(spIn);
70 RCF_UNUSED_VARIABLE(t);
72 RcfError_UnknownSerializationProtocol,
85 SerializationProtocolOut & spOut)
87 RCF_UNUSED_VARIABLE(os);
88 RCF_UNUSED_VARIABLE(runtimeVersion);
89 RCF_UNUSED_VARIABLE(archiveVersion);
90 RCF_UNUSED_VARIABLE(spOut);
97 Out &operator<<(
const T &t)
99 RCF_UNUSED_VARIABLE(t);
101 RcfError_UnknownSerializationProtocol,
109 template<
typename IS,
typename OS>
110 class ProtocolImpl_SF
118 std::size_t archiveSize,
121 SerializationProtocolIn & spIn)
124 mAr.setIs(is, archiveSize, runtimeVersion, archiveVersion);
125 mAr.setRemoteCallContext(&spIn);
131 template<
typename T> In &operator>>(T &t)
154 SerializationProtocolOut & spOut)
157 mAr.setOs(os, runtimeVersion, archiveVersion);
158 mAr.setRemoteCallContext(&spOut);
159 mAr.suppressArchiveMetadata();
165 template<
typename T> Out &operator<<(
const T &t)
171 OS & getOStream() {
return mAr; }
179 template<
typename IS,
typename OS>
180 class ProtocolImpl_BSer
188 std::size_t archiveSize,
191 SerializationProtocolIn & spIn)
193 RCF_UNUSED_VARIABLE(archiveSize);
194 RCF_UNUSED_VARIABLE(runtimeVersion);
195 RCF_UNUSED_VARIABLE(archiveVersion);
196 RCF_UNUSED_VARIABLE(spIn);
198 mAr.reset(
new IS(is) );
199 invokeCustomizationCallback();
207 template<
typename T> In &operator>>(T &t)
213 typedef std::function<void(IS &)> CustomizationCallback;
215 void setCustomizationCallback(CustomizationCallback customizationCallback)
217 mCustomizationCallback = customizationCallback;
218 invokeCustomizationCallback();
222 std::unique_ptr<IS> mAr;
224 CustomizationCallback mCustomizationCallback;
226 void invokeCustomizationCallback()
228 if (mCustomizationCallback)
230 mCustomizationCallback(*mAr);
243 SerializationProtocolOut & spOut)
245 RCF_UNUSED_VARIABLE(runtimeVersion);
246 RCF_UNUSED_VARIABLE(archiveVersion);
247 RCF_UNUSED_VARIABLE(spOut);
249 mAr.reset(
new OS(os) );
250 invokeCustomizationCallback();
258 template<
typename T> Out &operator<<(
const T &t)
264 typedef std::function<void(OS &)> CustomizationCallback;
266 void setCustomizationCallback(CustomizationCallback customizationCallback)
268 mCustomizationCallback = customizationCallback;
269 invokeCustomizationCallback();
273 std::unique_ptr<OS> mAr;
275 CustomizationCallback mCustomizationCallback;
277 void invokeCustomizationCallback()
279 if (mCustomizationCallback)
281 mCustomizationCallback(*mAr);
SerializationProtocol
Describes which serialization implementation to use when serializing data structures for a remote cal...
Definition: Enums.hpp:167
Base class for all RCF exceptions.
Definition: Exception.hpp:64
Definition: AmiIoHandler.hpp:24