RCF::ServerObjectService
.Globals::setOnExceptionCallback()
so user code can intercept any RCF exceptions being thrown.RCF_OPENSSL_STATIC
defined.RcfServer::setHealthCheckResponse()
, to configure how a RcfServer
responds to load balancer health checks (HTTP GET on /).ClientStub::setHttpConnectionCloseHeader()
, to set the HTTP Close header on the next request.RCF::HttpEndpoint
and RCF::HttpsEndpoint
now include a HTTP path component. The path component is ignored by RCF servers, but may be utilized by intermediate network proxies.RCF::ClientStub::setHttpRedirectHandler()
).RCF::ClientStub::setHttpMessageVerifier()
).RCF::RemoteCallProgressInfo::mBytesTotal
, RCF::RemoteCallProgressInfo::mBytesTransferred
).<filesystem>
compatibility with Visual Studio 2019.system_timer
class for timeouts, to avoid erroneous timeouts when the system clock changes.RCF::RcfServer
responds with a HTTP 200 and a simple status message, when receiving a "GET /" request on its HTTP port.RCF::ClientStub::setHttpCookies()
and RCF::ClientStub::getHttpCookies()
, to set HTTP cookies explicitly. This allows multiple RCF connections to share session affinity.RcfClient<>
classes.RCF::ClientStub::getSspiMessageProtection()
and RCF::ClientStub::setSspiMessageProtection()
, to control whether messages on a NTLM/Kerberos connection are encrypted, signed, or unprotected.RCF::RcfServer
crashes when shutting down.CLOCK_MONOTONIC
. Only enabled if RCF_USE_CLOCK_MONOTONIC
is defined.deadline_timer
objects being associated with the wrong io_service
object.UdpClientTransport
- disconnect()
should close the local socket, so subsequent calls use a new socket and port.UdpServerTransport
- fix for thread init functors not being called.RCF_FEATURE_SF
and RCF_FEATURE_BOOST_SERIALIZATION
config macros, to respect legacy RCF_USE_SF_SERIALIZATION
and RCF_USE_BOOST_SERIALIZATION
macros.RcfClient<>
.RcfServer::getFilterService()
for code using legacy custom filters.RCF_USE_PROTOBUF
define not working.win_thread.hpp
).win_thread::join()
) - contributed by acDev on support forums.RcfServer
.RCF_OPENSSL_STATIC
define, to allow static linking to OpenSSL.SF/Q*.hpp
. Contributed by acDev on support forums.std::vector<bool>
.std::bitset<>
.SF_SERIALIZE_ENUM_CLASS
macro, to simplify serialization of C++11 enum classes.shared_ptr<const T>
.Publisher::getSubscriberCount()
, to return number of subscriptions for a publisher.RcfServer
destructor, when using multiple server transports.RCF_ZLIB_STATIC
in build.SessionTimeoutService
.RcfSession::hasDefaultServerStub()
(reported on gcc 4.6.3) .ByteBuffer
's in SSPI filter, to prevent potential fragmentation of network send operations.ThreadPool
refactored, with simpler constructors and get \/ set methods.I_Endpoint
to Endpoint
, I_ServerTransport
to ServerTransport
, I_ClientTransport
to ClientTransport
, I_NetworkSession
to NetworkSession
, I_RemoteAddress
to RemoteAddress
.NamedPipeEndpoint
class. Code using NamedPipeEndpoint
should use Win32NamedPipeEndpoint
or UnixLocalEndpoint
instead.RCF::setSslImplementation()
, RcfServer::setSslImplementation()
and ClientStub::setSslImplementation()
, to configure whether RCF uses Schannel or OpenSSL.setSslCertificate()
to setCertificate()
, and setSslCaCertificate()
to setCaCertificate()
.std::function<bool(OpenSslEncryptionFilter &)>
and std::function<bool(SspiFilter &)>
, to std::function<bool(I_Certificate *)>
.setSchannelCertificateValidationCb()
and setOpenSslCertificateValidationCb()
, to setCertificateValidationCallback()
.setSchannelDefaultCertificateValidation()
to setEnableSchannelCertificateValidation()
.Win32Certificate::getCertificateName()
, Win32Certificate::getIssuerName()
, X509Certificate::getCertificateName()
, and X509Certificate::getIssuerName()
functions.PfxCertificate::addToStore()
and StoreCertificate::StoreCertificate()
, using the Win32CertificateLocation
and Win32CertificateStore
enums.StoreCertificateIterator
class, for iterating through certificates in a Windows store.RCF::init()
and RCF::RcfInitDeinit::RcfInitDeinit()
, to trap compiler define mismatches when building RCF as a DLL.boost::shared_static_cast<>
.RCF_MAX_METHOD_COUNT=200
in your build.RCF_USE_ZLIB
or RCF_USE_OPENSSL
, you no longer need to link to zlib and OpenSSL. RCF will load the zlib and OpenSSL libraries at runtime, on the first execution of any compression code, or OpenSSL-based encryption code.pthread
and dl
on non-Windows platforms.UNICODE
or _UNICODE
when building RCF on non-Windows platforms.RCF_USE_BOOST_FILESYSTEM
together with RCF_USE_BOOST_SERIALIZATION
.ClientStub::setEnableCompression()
not applying compression in some circumstances.std::unique_ptr<>
, std::tuple<>
, std::shared_ptr<>
, std::array<>
. See Serialization.RCF_USE_BOOST_SERIALIZATION
is defined but not RCF_USE_SF_SERIALIZATION
.SIGPIPE
signals on non-Windows platforms.I_ServerTransport::getInitialNumberOfCOnnections()
/ I_ServerTransport::setInitialNumberOfCOnnections()
to get and set the initial number of listening connections that are created when a server transport starts. Default value is 1.WIN32_LEAN_AND_MEAN
.RCF_USE_BOOST_ASIO
configuration macro, to build RCF against the version of Asio that is in Boost. If RCF_USE_BOOST_ASIO
is not defined, RCF will be built against the version of Asio that is included in RCF.RCF_USE_BOOST_ASIO
is defined automatically.RCF_VERIFY()
macro.RCF_SINGLE_THREADED
no longer supported.