Beispiel #1
0
::dsn::error_code simple_kv_client_app::start(int argc, char** argv)
{
    if (argc < 2)
        return ::dsn::ERR_INVALID_PARAMETERS;

    std::vector<rpc_address> meta_servers;
    replica_helper::load_meta_servers(meta_servers);

    _meta_server_group.assign_group(dsn_group_build("meta-servers"));
    for (auto& ms : meta_servers)
    {
        dsn_group_add(_meta_server_group.group_handle(), ms.c_addr());
    }

    // argv[1]: e.g., dsn://mycluster/simple-kv.instance0
    _service_addr = url_host_address(argv[1]);
    _simple_kv_client.reset(new simple_kv_client(_service_addr));

    dsn::tasking::enqueue(
            LPC_SIMPLE_KV_TEST,
            this,
            std::bind(&simple_kv_client_app::run, this));

    return ::dsn::ERR_OK;
}
Beispiel #2
0
Datei: rpc.cpp Projekt: am11/rDSN
static ::dsn::rpc_address build_group() {
    ::dsn::rpc_address server_group;
    server_group.assign_group(dsn_group_build("server_group.test"));
    for (uint16_t p = TEST_PORT_BEGIN; p<=TEST_PORT_END; ++p) {
        dsn_group_add(server_group.group_handle(), ::dsn::rpc_address("localhost", p).c_addr());
    }

    dsn_group_set_leader(server_group.group_handle(), ::dsn::rpc_address("localhost", TEST_PORT_BEGIN).c_addr());
    return server_group;
}
replication_failure_detector::replication_failure_detector(
    replica_stub* stub, std::vector<::dsn::rpc_address>& meta_servers)
{
    _meta_servers.assign_group(dsn_group_build("meta.servers"));
    _stub = stub;
    for (auto& s : meta_servers)
    {
        dsn_group_add(_meta_servers.group_handle(), s.c_addr());
    }

    dsn_group_set_leader(_meta_servers.group_handle(),
        meta_servers[random32(0, (uint32_t)meta_servers.size() - 1)].c_addr());
}
Beispiel #4
0
    uri_resolver::uri_resolver(const char * name, const char* factory, const char * arguments)
        : _name(name), _factory(factory)
    {
        _meta_server.assign_group(dsn_group_build(name));

        std::vector<std::string> args;
        utils::split_args(arguments, args, ',');
        for (auto& arg : args)
        {
            // name:port
            auto pos1 = arg.find_first_of(':');
            if (pos1 != std::string::npos)
            {
                ::dsn::rpc_address ep(arg.substr(0, pos1).c_str(), atoi(arg.substr(pos1 + 1).c_str()));
                dsn_group_add(_meta_server.group_handle(), ep.c_addr());
            }
        }
    }