Remote Call Framework 3.1
Migration Guide

Migrating from RCF 2.2 to RCF 3.0

This section is intended to assist users who are transitioning their codebases from RCF 2.2 to RCF 3.0.

Supported Compilers

RCF 2.2 maintained compatibility with a wide range of older C++ compilers.

RCF 3.0 is only compatible with compilers that support the C++11 and C++14 language updates.

For Windows development, this means you need to use Visual C++ 2015 or later to build against RCF 3.0.

For non-Windows development, you should use the latest versions of gcc or clang that you have available. RCF 3.0 has been tested against gcc 7.0 and clang 4.0.

Dropped or Reimplemented Features

  • JSON-RPC. The JSON-RPC feature has been dropped.
  • Boost.Serialization. Usage of Boost.Serialization (RCF_FEATURE_BOOST_SERIALIZATION) is deprecated and support for it will be removed in a future release.
  • File transfers. RCF 2.2 file transfer semantics are deprecated and should not be used. RCF 3.0 has new file transfer semantics which should be used instead.
  • Callback connections. In RCF 3.0, usage of RCF::createCallbackConnection() is deprecated. Use proxy endpoints instead, to implement server-to-client communication.

Boost Dependency

RCF 2.2 had a dependency on the Boost library, and a number of Boost types were utilized in RCF headers.

RCF 3.0 has no dependency on Boost at all, and Boost types have been replaced as follows:

RCF 2.2 RCF 3.0
boost::shared_ptr<> std::shared_ptr<>
boost::function<> std::function<>
boost::uint32_t etc std::uint32_t etc

Header Files

The following table lists RCF header files that have moved.

RCF 2.2 RCF 3.0
#include <RCF/util/Log.hpp> #include <RCF/Log.hpp>
#include <SF/any.hpp> #include <SF/boost/any.hpp>
#include <SF/array_boost.hpp> #include <SF/boost/array.hpp>
#include <SF/shared_ptr_boost.hpp> #include <SF/boost/shared_ptr.hpp>
#include <SF/intrusive_ptr.hpp> #include <SF/boost/intrusive_ptr.hpp>
#include <SF/scoped_ptr.hpp> #include <SF/boost/scoped_ptr.hpp>
#include <SF/tuple.hpp> #include <SF/boost/tuple.hpp>
#include <SF/variant.hpp> #include <SF/boost/variant.hpp>
#include <SF/array_tr1.hpp> #include <SF/tr1/array.hpp>
#include <SF/shared_ptr_tr1.hpp> #include <SF/tr1/shared_ptr.hpp>
#include <SF/tuple_tr1.hpp> #include <SF/tr1/tuple.hpp>
#include <SF/array_std.hpp> #include <SF/array.hpp>
#include <SF/shared_ptr_std.hpp> #include <SF/shared_ptr.hpp>
#include <SF/tuple_std.hpp> #include <SF/tuple.hpp>
#include <SF/Q*.hpp> #include <SF/qt/Q*.hpp>

Renamed Classes and Functions

The following table lists classes and functions that have been renamed.

RCF 2.2 RCF 3.0
RCF::RcfInitDeinit RCF::RcfInit
RCF::getGlobals() RCF::globals()
RCF::Exception::getErrorString() RCF::Exception::getErrorMessage()
RCF::ClientProgress No longer exists. Use RCF::ClientStub::setRemoteCallProgressCallback().
RCF::ClientStub::setEndpoint() RCF::ClientStub::setServerEndpoint()
RCF::ClientStub::getUsername() RCF::ClientStub::getUserName()
RCF::ClientStub::setUsername() RCF::ClientStub::setUserName()
RCF::ClientStub::getHttpProxyUsername() RCF::ClientStub::getHttpProxyUserName()
RCF::ClientStub::setHttpProxyUsername() RCF::ClientStub::setHttpProxyUserName()
RCF::RcfSession::getClientUsername() RCF::RcfSession::getClientUserName()
RCF::RcfServer::setSessionTimeoutMs() RCF::RcfServer::setConnectionIdleTimeoutMs()
RCF::RcfServer::getSessionTimeoutMs() RCF::RcfServer::getConnectionIdleTimeoutMs()
RCF::RcfServer::setSessionHarvestingIntervalMs() RCF::RcfServer::setConnectionIdleScanIntervalMs()
RCF::RcfServer::getSessionHarvestingIntervalMs() RCF::RcfServer::getConnectionIdleScanIntervalMs()
RCF::ServerTransport::setMaxMessageLength() RCF::ServerTransport::setMaxIncomingMessageLength()
RCF::ServerTransport::getMaxMessageLength() RCF::ServerTransport::getMaxIncomingMessageLength()
RCF::ClientTransport::setMaxMessageLength() RCF::ClientTransport::setMaxIncomingMessageLength()
RCF::ClientTransport::getMaxMessageLength() RCF::ClientTransport::getMaxIncomingMessageLength()
RCF::CertificateValidationCb RCF::CertificateValidationCallback
RCF::CbAccessControl RCF::AccessControlCallback
RCF::FileProgressCb RCF::FileProgressCallback
RCF::getDefaultRuntimeVersion() RCF::getRuntimeVersion()
RCF::setDefaultRuntimeVersion() RCF::setRuntimeVersion()
RCF::getDefaultArchiveVersion() RCF::getArchiveVersion()
RCF::setDefaultArchiveVersion() RCF::setArchiveVersion()
RCF::getLibraryVersion() RCF::getMaxSupportedRuntimeVersion()
RCF::RemoteCallRequest RCF::RemoteCallInfo

Defines

The RCF_AUTO_INIT_DEINIT define is no longer supported. Application code must explicitly initialize RCF using RCF::RcfInit or by calling RCF::init().

Most RCF_USE_XXX defines are deprecated, and replaced with feature defines (see Feature Defines). For example, if you built RCF 2.2 with OpenSSL and ZLib support by defining RCF_USE_OPENSSL and RCF_USE_ZLIB, you should now instead define RCF_FEATURE_OPENSSL=1 and RCF_FEATURE_ZLIB=1.