blob: 31d744d2decb48b5b23f1f14c704c660d519ca81 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/developer/debug/zxdb/client/symbol_server.h"
#include "src/developer/debug/zxdb/client/cloud_storage_symbol_server.h"
#include "src/developer/debug/zxdb/common/string_util.h"
namespace zxdb {
namespace {
constexpr size_t kMaxRetries = 5;
} // namespace
void SymbolServer::IncrementRetries() {
if (++retries_ == kMaxRetries) {
ChangeState(SymbolServer::State::kUnreachable);
}
}
void SymbolServer::ChangeState(SymbolServer::State state) {
if (state_ == state) {
return;
}
state_ = state;
if (state_ == SymbolServer::State::kReady) {
retries_ = 0;
error_log_.clear();
ready_count_++;
}
if (state_change_callback_)
state_change_callback_(this, state_);
}
std::unique_ptr<SymbolServer> SymbolServer::FromURL(Session* session, const std::string& url,
bool require_authentication) {
if (StringStartsWith(url, "gs://")) {
return CloudStorageSymbolServer::Impl(session, url, require_authentication);
}
return nullptr;
}
} // namespace zxdb