Skip to content

Commit

Permalink
envoy: http connection pool for metadata upstream extension (#3314)
Browse files Browse the repository at this point in the history
* envoy: http connection pool for metadata upstream extension

* clang-format

* proper clang-format
  • Loading branch information
tbarrella committed May 5, 2021
1 parent b79565e commit bcabf3d
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/envoy/upstreams/http/metadata/BUILD
Expand Up @@ -30,8 +30,13 @@ envoy_cc_library(
hdrs = ["upstream_request.h"],
repository = "@envoy",
deps = [
"@com_google_absl//absl/types:optional",
"@envoy//include/envoy/http:codec_interface",
"@envoy//include/envoy/router:router_interface",
"@envoy//include/envoy/stream_info:stream_info_interface",
"@envoy//include/envoy/upstream:host_description_interface",
"@envoy//include/envoy/upstream:load_balancer_interface",
"@envoy//include/envoy/upstream:thread_local_cluster_interface",
"@envoy//source/extensions/upstreams/http/http:upstream_request_lib",
],
)
Expand Down
32 changes: 32 additions & 0 deletions src/envoy/upstreams/http/metadata/upstream_request.cc
Expand Up @@ -14,3 +14,35 @@
*/

#include "src/envoy/upstreams/http/metadata/upstream_request.h"

#include <memory>
#include <utility>

#include "absl/types/optional.h"
#include "envoy/http/codec.h"
#include "envoy/http/protocol.h"
#include "envoy/stream_info/stream_info.h"
#include "envoy/upstream/host_description.h"

namespace Envoy {
namespace Upstreams {
namespace Http {
namespace Metadata {

void MetadataConnPool::onPoolReady(
Envoy::Http::RequestEncoder& request_encoder,
Upstream::HostDescriptionConstSharedPtr host,
const StreamInfo::StreamInfo& info,
absl::optional<Envoy::Http::Protocol> protocol) {
conn_pool_stream_handle_ = nullptr;
auto upstream = std::make_unique<MetadataUpstream>(
callbacks_->upstreamToDownstream(), &request_encoder);
callbacks_->onPoolReady(std::move(upstream), host,
request_encoder.getStream().connectionLocalAddress(),
info, protocol);
}

} // namespace Metadata
} // namespace Http
} // namespace Upstreams
} // namespace Envoy
22 changes: 22 additions & 0 deletions src/envoy/upstreams/http/metadata/upstream_request.h
Expand Up @@ -15,15 +15,37 @@

#pragma once

#include "absl/types/optional.h"
#include "envoy/http/codec.h"
#include "envoy/http/protocol.h"
#include "envoy/router/router.h"
#include "envoy/stream_info/stream_info.h"
#include "envoy/upstream/host_description.h"
#include "envoy/upstream/load_balancer.h"
#include "envoy/upstream/thread_local_cluster.h"
#include "extensions/upstreams/http/http/upstream_request.h"

namespace Envoy {
namespace Upstreams {
namespace Http {
namespace Metadata {

class MetadataConnPool
: public Extensions::Upstreams::Http::Http::HttpConnPool {
public:
MetadataConnPool(Upstream::ThreadLocalCluster& thread_local_cluster,
bool is_connect, const Router::RouteEntry& route_entry,
absl::optional<Envoy::Http::Protocol> downstream_protocol,
Upstream::LoadBalancerContext* ctx)
: HttpConnPool(thread_local_cluster, is_connect, route_entry,
downstream_protocol, ctx) {}

void onPoolReady(Envoy::Http::RequestEncoder& callbacks_encoder,
Upstream::HostDescriptionConstSharedPtr host,
const StreamInfo::StreamInfo& info,
absl::optional<Envoy::Http::Protocol> protocol) override;
};

class MetadataUpstream
: public Extensions::Upstreams::Http::Http::HttpUpstream {
public:
Expand Down

0 comments on commit bcabf3d

Please sign in to comment.