reSIProcate 1.13 is in the makings and is in the current GitHub master branch at: https://github.com/resiprocate/resiprocate
In this version of reSIProcate we've taken measures to update the stack to more modern C++ semantics. There are other changes in this version, but this post focuses on those changes that cause a break in API/ABI for applications that are based off of the reSIProcate API's. These applications will require some relatively easy changes to be applied to the application source code in order to build with this new version.
Summary of the changes that are specific to API/ABI and build:
Application Porting Guide:
stack/dum/return/recon applications:
Proxy applications:
In this version of reSIProcate we've taken measures to update the stack to more modern C++ semantics. There are other changes in this version, but this post focuses on those changes that cause a break in API/ABI for applications that are based off of the reSIProcate API's. These applications will require some relatively easy changes to be applied to the application source code in order to build with this new version.
Summary of the changes that are specific to API/ABI and build:
- addition of VS2019 solution and project files, and removal of VS2013 solutions and projects
- replace std::auto_ptr with std::unique_ptr
- replace resip::SharedPtr with std::shared_ptr
- return project, replace boost::shared_ptr with std::shared_ptr
- makefile now requires C++11 compiler support
- replace boost::bind with std::bind or lambda expressions
Application Porting Guide:
stack/dum/return/recon applications:
- Remove any #include references to <rutil/SharedPtr.hxx>
- Find and replace: resip::SharedPtr with std::shared_ptr
- Find and replace: SharedPtr with std::shared_ptr
- Many reisp API's changed from std::auto_ptr use to std::unique_ptr use
- update all code that interacts with these to use std::unique_ptr
- when passing a std::unique pointer to a method call you will need to wrap in in std::move
- For Example:
- mDum.getSipStack().postMS(std::move(pMsg),
getUserProfile()->getDefaultStaleCallTime() * 1000, &mDum); - Callback/handlers that used std::auto_ptr (usually for Message contents) were updated to std::unique_ptr
- Applications will need to update their callback overrides accordingly
- Consider doing a selective find and replace:
- std::auto_ptr -> std::unique_ptr
- auto_ptr -> std::unique_ptr
- Then build and fix up to add std::move's where needed.
Proxy applications:
- repro::Dispatcher recently moved from repro namespace to resip namespace - adjust as needed
- Find and replace: repro::Dispatcher with resip::Dispatcher
- include is now: #include <resip/stack/Dispatcher.hxx>
- ServerAuthManager::AsyncBool moved to it's own class and is now in resip namespace
- UserAuthGrabber changed from taking a UserStore to taking the entire DataStore - pass in the correct type now