Curator RPC - an RPC server for using Apache Curator APIs and recipes from non JVM languages.

Arguments:
    <none>    show this help
    <config>  either a path to a JSON or YAML configuration file or a JSON/YAML object for
              configuration

Curator RPC uses Dropwizard for configuration. The format is JSON or YAML (your choice). Here is
the model configuration shown in JSON with added comments. Required fields have "*" in the comment.

{
    "thrift": { // * Thrift server configuration
        "bindAddress": "string", // address to bind to. Default is "localhost"
        "port": int, // * port to listen on
        "acceptBacklog": int, // default is 1024
        "connectionLimit": int, // max concurrent connections. Default is unlimited.
        "acceptorThreadCount": int, // default is 1
        "ioThreadCount": int, // default is 2 * number of processors
        "idleConnectionTimeout": "Duration", // default is 60 seconds
        "transportName": "string", // default is "framed"
        "protocolName": "string" // default is "binary"
    },

    "projectionExpiration": "Duration", // time for projections to expire if unused. Default is 3
                                        // minutes.

    "pingTime": "Duration", // time that the EventService will return PING if no other events.
                            // Default is 5 seconds.

    "connections": [ // * list of ZooKeeper connections
        "name": "string", // * unique name for the connection
        "connectionString": "string", // * ZooKeeper connection string (e.g. "host1:2181,host2:2181")
        "sessionLength": "Duration", // duration for the session. Default is 1 minute.
        "connectionTimeout": "Duration", // duration for connecting. Default is 15 seconds.
        "authorization": { // Authorization spec. Default is NULL.
            "scheme": "string", // * the authorization scheme
            "auth": "string" // * the authorization auth
        },
        "namespace": "string", // Curator namespace. Default is NULL.
        "retry": {  // Retry policy. Default is an exponential-backoff policy.
            "type": "string", // Policy type. Either "exponential-backoff",
                              // "bounded-exponential-backoff" or "ntimes"
            -- Remaining values depending on type. See below --
        },
    ],

    "logging": { // logging config - Dropwizard's logging library is used
        See http://dropwizard.readthedocs.org/en/latest/manual/configuration.html#logging
    }
}

"Duration" is a string. E.g. "1s" (1 second), "10m" (10 minutes)

Retry Policy Specs:
    For type: "exponential-backoff"
        {
            "baseSleepTime": "Duration", // default is 100 milliseconds
            "maxRetries": int // default is 3
        }

    For type: "bounded-exponential-backoff"
        {
            "baseSleepTime": "Duration", // default is 100 milliseconds
            "maxSleepTime": "Duration",  // default is 30 seconds
            "maxRetries": int // default is 3
        }

    For type: "ntimes"
        {
            "sleepBetweenRetries": "Duration", // default is 100 milliseconds
            "n": int // default is 3
        }
