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.
to make providing a name for the values to be logged optional; if not
specified, the variable name will be generated. In other words,
you can now say ilog("${foo}", (foo)) instead of ilog("${foo}", ("foo", foo)).
- 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)