1
#pragma once
2

            
3
#include <memory>
4

            
5
#include "envoy/extensions/filters/network/wasm/v3/wasm.pb.validate.h"
6
#include "envoy/stats/sink.h"
7

            
8
#include "source/extensions/common/wasm/wasm.h"
9

            
10
namespace Envoy {
11
namespace Extensions {
12
namespace StatSinks {
13
namespace Wasm {
14

            
15
using Envoy::Extensions::Common::Wasm::PluginHandleSharedPtr;
16
using Envoy::Extensions::Common::Wasm::PluginSharedPtr;
17

            
18
class WasmStatSink : public Stats::Sink {
19
public:
20
  WasmStatSink(Common::Wasm::PluginConfigPtr plugin_config)
21
2
      : plugin_config_(std::move(plugin_config)) {}
22

            
23
2
  void flush(Stats::MetricSnapshot& snapshot) override {
24
2
    if (Common::Wasm::Wasm* wasm = plugin_config_->wasm(); wasm != nullptr) {
25
2
      wasm->onStatsUpdate(plugin_config_->plugin(), snapshot);
26
2
    }
27
2
  }
28

            
29
2
  void onHistogramComplete(const Stats::Histogram& histogram, uint64_t value) override {
30
2
    (void)histogram;
31
2
    (void)value;
32
2
  }
33

            
34
private:
35
  Common::Wasm::PluginConfigPtr plugin_config_;
36
};
37

            
38
} // namespace Wasm
39
} // namespace StatSinks
40
} // namespace Extensions
41
} // namespace Envoy