1
#include "source/extensions/access_loggers/grpc/tcp_config.h"
2

            
3
#include "envoy/extensions/access_loggers/grpc/v3/als.pb.h"
4
#include "envoy/extensions/access_loggers/grpc/v3/als.pb.validate.h"
5
#include "envoy/registry/registry.h"
6
#include "envoy/server/filter_config.h"
7

            
8
#include "source/common/common/assert.h"
9
#include "source/common/common/macros.h"
10
#include "source/common/grpc/async_client_impl.h"
11
#include "source/common/protobuf/protobuf.h"
12
#include "source/extensions/access_loggers/grpc/config_utils.h"
13
#include "source/extensions/access_loggers/grpc/grpc_access_log_proto_descriptors.h"
14
#include "source/extensions/access_loggers/grpc/tcp_grpc_access_log_impl.h"
15

            
16
namespace Envoy {
17
namespace Extensions {
18
namespace AccessLoggers {
19
namespace TcpGrpc {
20

            
21
AccessLog::InstanceSharedPtr TcpGrpcAccessLogFactory::createAccessLogInstance(
22
    const Protobuf::Message& config, AccessLog::FilterPtr&& filter,
23
    Server::Configuration::GenericFactoryContext& context,
24
24
    std::vector<Formatter::CommandParserPtr>&& command_parsers) {
25
24
  GrpcCommon::validateProtoDescriptors();
26

            
27
24
  const auto& proto_config = MessageUtil::downcastAndValidate<
28
24
      const envoy::extensions::access_loggers::grpc::v3::TcpGrpcAccessLogConfig&>(
29
24
      config, context.messageValidationVisitor());
30

            
31
24
  return std::make_shared<TcpGrpcAccessLog>(
32
24
      std::move(filter), proto_config, context.serverFactoryContext().threadLocal(),
33
24
      GrpcCommon::getGrpcAccessLoggerCacheSingleton(context.serverFactoryContext()),
34
24
      command_parsers);
35
24
}
36

            
37
30
ProtobufTypes::MessagePtr TcpGrpcAccessLogFactory::createEmptyConfigProto() {
38
30
  return std::make_unique<envoy::extensions::access_loggers::grpc::v3::TcpGrpcAccessLogConfig>();
39
30
}
40

            
41
38
std::string TcpGrpcAccessLogFactory::name() const { return "envoy.access_loggers.tcp_grpc"; }
42

            
43
/**
44
 * Static registration for the TCP gRPC access log. @see RegisterFactory.
45
 */
46
LEGACY_REGISTER_FACTORY(TcpGrpcAccessLogFactory, AccessLog::AccessLogInstanceFactory,
47
                        "envoy.tcp_grpc_access_log");
48

            
49
} // namespace TcpGrpc
50
} // namespace AccessLoggers
51
} // namespace Extensions
52
} // namespace Envoy