diff options
Diffstat (limited to 'src')
5 files changed, 19 insertions, 5 deletions
diff --git a/src/buildtool/execution_api/execution_service/TARGETS b/src/buildtool/execution_api/execution_service/TARGETS index 97d70528..d8108279 100644 --- a/src/buildtool/execution_api/execution_service/TARGETS +++ b/src/buildtool/execution_api/execution_service/TARGETS @@ -135,7 +135,10 @@ , "srcs": ["capabilities_server.cpp"] , "proto": [["@", "bazel_remote_apis", "", "remote_execution_proto"]] , "stage": ["src", "buildtool", "execution_api", "execution_service"] - , "deps": [["src/buildtool/common", "bazel_types"]] + , "deps": + [ ["src/buildtool/common", "bazel_types"] + , ["src/buildtool/crypto", "hash_function"] + ] , "private-deps": [ ["src/buildtool/logging", "log_level"] , ["src/buildtool/logging", "logging"] diff --git a/src/buildtool/execution_api/execution_service/capabilities_server.cpp b/src/buildtool/execution_api/execution_service/capabilities_server.cpp index c4ec6b06..0f3f7855 100644 --- a/src/buildtool/execution_api/execution_service/capabilities_server.cpp +++ b/src/buildtool/execution_api/execution_service/capabilities_server.cpp @@ -25,7 +25,7 @@ auto CapabilitiesServiceImpl::GetCapabilities( const ::bazel_re::GetCapabilitiesRequest* /*request*/, ::bazel_re::ServerCapabilities* response) -> ::grpc::Status { - if (not ProtocolTraits::Instance().IsCompatible()) { + if (ProtocolTraits::IsNative(hash_type_)) { auto const* str = "GetCapabilities not implemented"; Logger::Log(LogLevel::Error, str); return ::grpc::Status{grpc::StatusCode::UNIMPLEMENTED, str}; diff --git a/src/buildtool/execution_api/execution_service/capabilities_server.hpp b/src/buildtool/execution_api/execution_service/capabilities_server.hpp index 57c49fc9..d1706584 100644 --- a/src/buildtool/execution_api/execution_service/capabilities_server.hpp +++ b/src/buildtool/execution_api/execution_service/capabilities_server.hpp @@ -17,9 +17,13 @@ #include "build/bazel/remote/execution/v2/remote_execution.grpc.pb.h" #include "src/buildtool/common/bazel_types.hpp" +#include "src/buildtool/crypto/hash_function.hpp" class CapabilitiesServiceImpl final : public bazel_re::Capabilities::Service { public: + explicit CapabilitiesServiceImpl(HashFunction::Type hash_type) noexcept + : hash_type_{hash_type} {} + // GetCapabilities returns the server capabilities configuration of the // remote endpoint. // Only the capabilities of the services supported by the endpoint will @@ -32,5 +36,8 @@ class CapabilitiesServiceImpl final : public bazel_re::Capabilities::Service { const ::bazel_re::GetCapabilitiesRequest* request, ::bazel_re::ServerCapabilities* response) -> ::grpc::Status override; + + private: + HashFunction::Type const hash_type_; }; -#endif +#endif // CAPABILITIES_SERVER_HPP diff --git a/src/buildtool/execution_api/execution_service/server_implementation.cpp b/src/buildtool/execution_api/execution_service/server_implementation.cpp index e6ad463c..67633b69 100644 --- a/src/buildtool/execution_api/execution_service/server_implementation.cpp +++ b/src/buildtool/execution_api/execution_service/server_implementation.cpp @@ -84,11 +84,13 @@ auto ServerImpl::Run(gsl::not_null<LocalContext const*> const& local_context, gsl::not_null<RemoteContext const*> const& remote_context, ApiBundle const& apis, std::optional<std::uint8_t> op_exponent) -> bool { + auto const hash_type = + local_context->storage_config->hash_function.GetType(); ExecutionServiceImpl es{local_context, &*apis.local, op_exponent}; ActionCacheServiceImpl ac{local_context}; CASServiceImpl cas{local_context}; BytestreamServiceImpl b{local_context}; - CapabilitiesServiceImpl cap{}; + CapabilitiesServiceImpl cap{hash_type}; OperationsServiceImpl op{&es.GetOpCache()}; grpc::ServerBuilder builder; diff --git a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp index be307ba5..f912894d 100644 --- a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp +++ b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp @@ -112,6 +112,8 @@ auto ServeServerImpl::Run( return false; } + auto const hash_type = + local_context->storage_config->hash_function.GetType(); SourceTreeService sts{&serve_config, local_context, &apis}; TargetService ts{&serve_config, local_context, @@ -133,7 +135,7 @@ auto ServeServerImpl::Run( [[maybe_unused]] ActionCacheServiceImpl ac{local_context}; [[maybe_unused]] CASServiceImpl cas{local_context}; [[maybe_unused]] BytestreamServiceImpl b{local_context}; - [[maybe_unused]] CapabilitiesServiceImpl cap{}; + [[maybe_unused]] CapabilitiesServiceImpl cap{hash_type}; [[maybe_unused]] OperationsServiceImpl op{&es.GetOpCache()}; if (with_execute) { builder.RegisterService(&es) |