Releases: ecorm/cppwamp
Releases · ecorm/cppwamp
Release 0.11.1
Release 0.11.0
Polymorphic codecs and transports
New features:
- Adding more codecs or transports in the future will no longer result in a combinatorial explosion of explicit template instantions due to the number of transport/codec combinations.
- Session is now a move-only type that can be instantiated on the stack.
- Added
ConnectionWish
andConnectionWishList
to replace the oldConnection
andConnectionList
classes. TcpHost
andUdsPath
now havewithFormat
methods which generate aConnectionWish
that can be passed toSession::connect
.- The
authenticate
,publish
, 'yield', andcancel
methods ofSession
not taking a completion handler now return anErrorOrDone
. The thread-safe overloads for those now return astd::future<ErrorOrDone>
. AnyCompletionExecutor
is now used by session to contain the user executor.- Added
Session::ongoingCall
for progressive call results, which automatically appliesrpc.withProgessiveResults(true)
. Session::fallbackExecutor
type relaxed toAnyCompletionExecutor
.- Added
wamp::spawn
andwamp::YieldContext
in<cppwamp/spawn.hpp>
, which are aliases to their Boost.Asio counterparts. - Added
wamp::spawnCompletionHandler
andwamp::CompletionYieldContext
to support spawning coroutines viaEvent::executor
and
Invocation::executor
. Challenge::authenticate
,Invocation::yield
andInterruption::yield
now have thread-safe and non-thread-safe overloads.- Added
SessionErrc
error codes corresponding to new predefined error URIs that have appeared in the WAMP spec. - Added
Session::setLogHandler
which takes a handler of typevoid (LogEntry)
and unifies all log event handling. - Added
Session::setLogLevel
for use withSession::setLogHandler
.
Release v0.10.0
Asio completion token support and thread-safe Session operations.
New features:
- Callback functions,
yield_context
,use_awaitable
, anduse_future
now supported as completion tokens. - C++20 coroutines now supported
- Migrated from
AsyncResult
to newErrorOr
class which better emulates the proposedstd::expected
. Session
's asynchonous operations now return anErrorOr
result when passed ayield_context
as the completion token.- Added
Session
overloads with theThreadSafe
tag type which can be called concurrently by multiple threads. - Added
Realm::captureAbort
. Session
'ssetWarningHandler
,setTraceHandler
,setStateChangeHandler
, andsetChallengeHandler
now take effect immediately even when connected.- Users can bind custom executors to their handlers and
Session
will use them when executing those handlers. - Boost.Asio cancellation slot support for
Session::call
. - Added
Rpc::withCancelMode
which specifies the cancel mode to use when triggered by Asio cancellation slots. - Added
withArgsTuple
,convertToTuple
andmoveToTuple
toPayload
class. - Added the
Deferment
tag type (withdeferment
constexpr variable) to more conveniently return a deferred
Outcome` from an RPC handler.
Release v0.9.3
Fix non-compilation of examples.
Release v0.9.1
Add -fPIC when building vendorized static Boost libraries.
Release v0.9.0
Migrated to jsoncons for all serialization.
- Support for CBOR has been added.
- Added
toString
free functions for dumpingVariant
,Array
, andObject
as a JSON-formattedstd::string
. - Changed Codec, Transport, and TransportBuffer type requirements.
- Variant instances are output as true JSON via
operator(ostream&, const Variant&)
ortoString
. - Session warnings no longer output to std::cerr by default. Session::setWarningHandler must be explicitly called to re-enable this behavior.
See CHANGELOG for more details.
Release v0.8.0
- Refactored WAMP message processing
- Consolidated peer/session data objects to the same C++ module
- WAMP message names are now printed in traces
- Automatic enum<->variant conversions now performed while allowing custom conversion of specific enum types
- Callbacks can now be registered for session state change events
- Caller-initiated timeout support
- Progressive call results for caller
- Enriched authentication-related API to handle CRA and SCRAM (user must still compute crypto signatures using a 3rd party library)
- Added session leave overloads that don't require a Reason
- Documentation improvements
See CHANGELOG.md for more changes.
Release v0.7.0
Support newer Boost.Asio. See CHANGELOG.md for details.
Release v0.6.3
Updated for latest versions of 3rd-party libraries.
Release v0.6.2
Variant conversion enhancements. See CHANGELOG.md for details.