18 #ifndef INCLUDE_RCF_PROTOCOL_PROTOCOL_HPP 19 #define INCLUDE_RCF_PROTOCOL_PROTOCOL_HPP 23 #include <RCF/Config.hpp> 25 #include <RCF/ErrorMsg.hpp> 26 #include <RCF/MemStream.hpp> 27 #include <RCF/Tools.hpp> 31 class SerializationProtocolIn;
32 class SerializationProtocolOut;
41 static std::string getName()
51 std::size_t archiveSize,
54 SerializationProtocolIn & spIn)
56 RCF_UNUSED_VARIABLE(is);
57 RCF_UNUSED_VARIABLE(archiveSize);
58 RCF_UNUSED_VARIABLE(runtimeVersion);
59 RCF_UNUSED_VARIABLE(archiveVersion);
60 RCF_UNUSED_VARIABLE(spIn);
69 RCF_UNUSED_VARIABLE(t);
71 RcfError_UnknownSerializationProtocol,
84 SerializationProtocolOut & spOut)
86 RCF_UNUSED_VARIABLE(os);
87 RCF_UNUSED_VARIABLE(runtimeVersion);
88 RCF_UNUSED_VARIABLE(archiveVersion);
89 RCF_UNUSED_VARIABLE(spOut);
96 Out &operator<<(
const T &t)
98 RCF_UNUSED_VARIABLE(t);
100 RcfError_UnknownSerializationProtocol,
108 template<
typename IS,
typename OS>
109 class ProtocolImpl_SF
117 std::size_t archiveSize,
120 SerializationProtocolIn & spIn)
123 mAr.setIs(is, archiveSize, runtimeVersion, archiveVersion);
124 mAr.setRemoteCallContext(&spIn);
130 template<
typename T> In &operator>>(T &t)
153 SerializationProtocolOut & spOut)
156 mAr.setOs(os, runtimeVersion, archiveVersion);
157 mAr.setRemoteCallContext(&spOut);
158 mAr.suppressArchiveMetadata();
164 template<
typename T> Out &operator<<(
const T &t)
170 OS & getOStream() {
return mAr; }
178 template<
typename IS,
typename OS>
179 class ProtocolImpl_BSer
187 std::size_t archiveSize,
190 SerializationProtocolIn & spIn)
192 RCF_UNUSED_VARIABLE(archiveSize);
193 RCF_UNUSED_VARIABLE(runtimeVersion);
194 RCF_UNUSED_VARIABLE(archiveVersion);
195 RCF_UNUSED_VARIABLE(spIn);
197 mAr.reset(
new IS(is) );
198 invokeCustomizationCallback();
206 template<
typename T> In &operator>>(T &t)
212 typedef std::function<void(IS &)> CustomizationCallback;
214 void setCustomizationCallback(CustomizationCallback customizationCallback)
216 mCustomizationCallback = customizationCallback;
217 invokeCustomizationCallback();
221 std::unique_ptr<IS> mAr;
223 CustomizationCallback mCustomizationCallback;
225 void invokeCustomizationCallback()
227 if (mCustomizationCallback)
229 mCustomizationCallback(*mAr);
242 SerializationProtocolOut & spOut)
244 RCF_UNUSED_VARIABLE(runtimeVersion);
245 RCF_UNUSED_VARIABLE(archiveVersion);
246 RCF_UNUSED_VARIABLE(spOut);
248 mAr.reset(
new OS(os) );
249 invokeCustomizationCallback();
257 template<
typename T> Out &operator<<(
const T &t)
263 typedef std::function<void(OS &)> CustomizationCallback;
265 void setCustomizationCallback(CustomizationCallback customizationCallback)
267 mCustomizationCallback = customizationCallback;
268 invokeCustomizationCallback();
272 std::unique_ptr<OS> mAr;
274 CustomizationCallback mCustomizationCallback;
276 void invokeCustomizationCallback()
278 if (mCustomizationCallback)
280 mCustomizationCallback(*mAr);
SerializationProtocol
Describes which serialization implementation to use when serializing data structures for a remote cal...
Definition: Enums.hpp:166
Base class for all RCF exceptions.
Definition: Exception.hpp:67
Definition: AmiIoHandler.hpp:23