//ERR_OBJECT_NOT_FOUND not in cache. //ERR_IO_PENDING in cache but invalid, remove from cache. //ERR_OK in cache and valid error_code partition_resolver_simple::get_address(int partition_index, /*out*/ rpc_address& addr) { //partition_configuration config; { zauto_read_lock l(_config_lock); auto it = _config_cache.find(partition_index); if (it != _config_cache.end()) { //config = it->second->config; addr = get_address(it->second->config); if (addr.is_invalid()) { return ERR_IO_PENDING; } else { return ERR_OK; } } else { return ERR_OBJECT_NOT_FOUND; } } }
inline error_code unmarshall_json(const rapidjson::Value &doc, rpc_address& val) { TEST_PARAM(doc.IsUint64()); dsn_address_t addr; addr.u.value = doc.GetUint64(); val = rpc_address(addr); TEST_PARAM(!val.is_invalid()) return ERR_OK; }