Take new sharding implementation into use
The sharding implementation now uses a class to abstract the details of the shard. This allows for different design where each session makes a copy of the global shard map which is then used for the duration of the session. In addition to making the desing a bit clearer to understand, it also removes lock competition between threads. Due to the change to C++, the main entry points need to be wrapped in the exception-safety macros. The next step in the refactoring will be to use the router template. This will remove the need to manually define them.
This commit is contained in: