19 #ifndef INCLUDE_RCF_METHODINVOCATION_HPP 20 #define INCLUDE_RCF_METHODINVOCATION_HPP 27 #include <RCF/ByteBuffer.hpp> 28 #include <RCF/Export.hpp> 29 #include <RCF/Exception.hpp> 30 #include <RCF/SerializationProtocol_Base.hpp> 37 typedef std::shared_ptr<RcfSession> RcfSessionPtr;
38 class SerializationProtocolIn;
39 class SerializationProtocolOut;
41 class MethodInvocationResponse;
42 class MethodInvocationRequest;
46 typedef std::shared_ptr<Filter> FilterPtr;
49 typedef std::shared_ptr<I_RcfClient> RcfClientPtr;
52 static const int Descriptor_Error = 0;
53 static const int Descriptor_Request = 1;
54 static const int Descriptor_Response = 2;
55 static const int Descriptor_FilteredPayload = 3;
57 void encodeServerError(RcfServer & server, ByteBuffer & byteBuffer,
int error);
58 void encodeServerError(RcfServer & server, ByteBuffer & byteBuffer,
int error,
int arg0,
int arg1);
94 class RCF_EXPORT MethodInvocationRequest : Noncopyable
97 MethodInvocationRequest();
103 const MethodInvocationRequest & rhs);
106 const std::string & service,
112 bool ignoreRuntimeVersion,
113 std::uint32_t pingBackIntervalMs,
115 bool enableSfPointerTracking,
116 bool enableNativeWstringSerialization);
119 bool getOneway()
const;
120 bool getClose()
const;
121 const std::string & getService()
const;
122 void setService(
const std::string &service);
123 int getPingBackIntervalMs();
128 const std::vector<ByteBuffer> & buffers,
129 std::vector<ByteBuffer> & message,
130 const std::vector<FilterPtr> & filters);
135 RcfSessionPtr rcfSessionPtr,
141 bool enableSfPointerTracking);
146 MethodInvocationResponse & response,
147 const std::vector<FilterPtr> & filters);
149 RcfClientPtr locateStubEntryPtr(
158 void decodeFromMessage(
162 RcfSessionPtr rcfSessionPtr,
163 const std::vector<FilterPtr> & existingFilters);
165 void encodeToMessage(
166 std::vector<ByteBuffer> & message,
167 const std::vector<ByteBuffer> & buffers,
168 const std::vector<FilterPtr> & filters);
170 std::string mService;
176 bool mIgnoreRuntimeVersion;
182 bool mEnableNativeWstringSerialization =
false;
186 std::shared_ptr<std::vector<char> > mVecPtr;
189 friend RCF::MemOstream& operator<<(RCF::MemOstream& os,
const MethodInvocationRequest& r);
192 class RCF_EXPORT MethodInvocationResponse
195 MethodInvocationResponse();
197 bool isException()
const;
198 bool isError()
const;
199 int getError()
const;
202 bool getEnableSfPointerTracking()
const;
204 std::unique_ptr<RemoteException> getExceptionPtr();
207 friend class MethodInvocationRequest;
210 typedef std::unique_ptr<RemoteException> RemoteExceptionPtr;
213 RemoteExceptionPtr mExceptionPtr;
220 friend RCF::MemOstream& operator<<(RCF::MemOstream& os,
const MethodInvocationResponse& r);
227 Omt_RequestTransportFilters = 1,
228 Omt_CreateCallbackConnection = 2,
229 Omt_RequestSubscription = 3,
230 Omt_RequestProxyConnection = 4,
234 typedef std::shared_ptr<OobMessage> OobMessagePtr;
235 typedef std::shared_ptr< std::vector<char> > VecPtr;
237 class RCF_EXPORT OobMessage
241 OobMessage(
int runtimeVersion);
242 virtual ~OobMessage();
244 virtual OobMessageType getMessageType() = 0;
246 virtual void encodeRequest(
ByteBuffer & buffer) = 0;
247 virtual void decodeRequest(
const ByteBuffer & buffer, std::size_t & pos) = 0;
249 virtual void encodeResponse(
ByteBuffer & buffer);
250 virtual void decodeResponse(
const ByteBuffer & buffer);
253 void encodeRequestCommon(VecPtr vecPtr, std::size_t & pos);
256 static OobMessagePtr decodeRequestCommon(
const ByteBuffer & buffer);
259 void encodeResponseCommon(VecPtr vecPtr, std::size_t & pos);
260 void decodeResponseCommon(
const ByteBuffer & buffer, std::size_t & pos);
267 std::uint32_t mResponseError;
268 std::string mResponseErrorString;
271 class RCF_EXPORT OobRequestTransportFilters :
public OobMessage
274 OobRequestTransportFilters(
int runtimeVersion);
276 OobRequestTransportFilters(
278 const std::vector<FilterPtr> &filters);
280 virtual OobMessageType getMessageType();
281 virtual void encodeRequest(
ByteBuffer & buffer);
282 virtual void decodeRequest(
const ByteBuffer & buffer, std::size_t & pos);
284 std::vector<std::int32_t> mFilterIds;
287 class RCF_EXPORT OobCreateCallbackConnection :
public OobMessage
290 OobCreateCallbackConnection(
int runtimeVersion);
292 virtual OobMessageType getMessageType();
293 virtual void encodeRequest(
ByteBuffer & buffer);
294 virtual void decodeRequest(
const ByteBuffer & buffer, std::size_t & pos);
297 class RCF_EXPORT OobRequestSubscription :
public OobMessage
300 OobRequestSubscription(
int runtimeVersion);
302 OobRequestSubscription(
304 const std::string & publisherName,
305 std::uint32_t subToPubPingIntervalMs);
307 virtual OobMessageType getMessageType();
308 virtual void encodeRequest(
ByteBuffer & buffer);
309 virtual void decodeRequest(
const ByteBuffer & buffer, std::size_t & pos);
310 virtual void encodeResponse(
ByteBuffer & buffer);
311 virtual void decodeResponse(
const ByteBuffer & buffer);
314 std::string mPublisherName;
315 std::uint32_t mSubToPubPingIntervalMs;
316 std::uint32_t mPubToSubPingIntervalMs;
319 class RCF_EXPORT OobRequestProxyConnection :
public OobMessage
322 OobRequestProxyConnection(
int runtimeVersion);
324 OobRequestProxyConnection(
326 const std::string & proxyEndpointName);
328 virtual OobMessageType getMessageType();
329 virtual void encodeRequest(
ByteBuffer & buffer);
330 virtual void decodeRequest(
const ByteBuffer & buffer, std::size_t & pos);
331 virtual void encodeResponse(
ByteBuffer & buffer);
332 virtual void decodeResponse(
const ByteBuffer & buffer);
334 std::string mProxyEndpointName;
340 #endif // ! INCLUDE_RCF_METHODINVOCATION_HPP Contains details about the currently executing remote call.
Definition: MethodInvocation.hpp:63
Represents a server side session, associated with a client connection.
Definition: RcfSession.hpp:65
SerializationProtocol mSerializationProtocol
Serialization protocol.
Definition: MethodInvocation.hpp:79
Controls the client side of a RCF connection.
Definition: ClientStub.hpp:83
SerializationProtocol
Describes which serialization implementation to use when serializing data structures for a remote cal...
Definition: Enums.hpp:167
std::uint32_t mPingBackIntervalMs
Pingback interval in ms.
Definition: MethodInvocation.hpp:88
int mFnId
RCF interface method ID.
Definition: MethodInvocation.hpp:73
std::string mServantBindingName
Servant binding name.
Definition: MethodInvocation.hpp:70
Provides RCF server-side functionality.
Definition: RcfServer.hpp:54
bool mEnableSfPointerTracking
Whether SF pointer tracking is enabled for serialization of parameters.
Definition: MethodInvocation.hpp:91
Represents an error that occurs on a RCF server and is transmitted back to the client.
Definition: Exception.hpp:153
Definition: ByteBuffer.hpp:40
int mRuntimeVersion
Runtime version.
Definition: MethodInvocation.hpp:82
Definition: AmiIoHandler.hpp:24
int mArchiveVersion
Archive version.
Definition: MethodInvocation.hpp:85
bool mOneway
True if the call is a oneway call.
Definition: MethodInvocation.hpp:76
RCF_EXPORT bool init(RcfConfigT *=nullptr)
Reference-counted initialization of RCF library. May be called multiple times (see deinit())...