These libraries are not required by FC. However, the only way I've found to get CMake to pass them to the linker
in an order which will allow steemd to successfully link, is to put them in FC's CMakeLists.txt.
atoi() has undefined behavior when given a string that can't be parsed as an integer.
This patch replaces atoi() with boost_lexical_cast() and throws an exception when we get
something that's not a number.
- Create class `api_base` to be base class of `api<T>`, and `typedef shared_ptr<api_base> api_ptr`
- Create function `api_base::as<T>()` to allow simple downcast to `api<T>`
- Create class `any_api` to contain an API which has been returned from the remote end, but not yet cast with `as<T>`
- `to_generic()` override allowing remote API to return `api_ptr`, thus we need not know the type of the returned API at compile time
- Allow API's to be referenced by name, if we call with a string API name in the JSON the framework calls get_api_by_name on API 1 to determine the API ID
When clients of fc (such as graphene) do an install (via `make install` or similar), websocketpp was installing as well. This commit prevents this from happening.
compression. Refactored the code to remove duplication between tls/non-tls
versions of the server, which appear to have been cut & paste copies of
one another that had diverged slightly. This makes some of the fixes to
the non-tls server available in the tls server.
cryptonomex/graphene#619
when creating the websocket servers to enable deflate compression on
websocket frames. This is relevant to cryptonomex/graphene#540 because
the spammed data is higly compressible. In my tests, it reduces bandwidth
for a single idle node by a factor of ~16, from 577kbps down to 36kbps.
This doesn't require any changes to the wallets, simply upgrading the
public servers will begin sending compressed data to all clients that
support it.
Note: this commit adds a dependency on zlib for non-apple platforms
(it was already required on apple)