chromium/remoting/host/win/etw_trace_consumer.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef REMOTING_HOST_WIN_ETW_TRACE_CONSUMER_H_
#define REMOTING_HOST_WIN_ETW_TRACE_CONSUMER_H_

#include <memory>
#include <vector>

#include "base/memory/scoped_refptr.h"

namespace remoting {

class AutoThreadTaskRunner;
class HostEventLogger;

class EtwTraceConsumer {
 public:
  virtual ~EtwTraceConsumer() = default;

  // Creates an ETW Trace Consumer which listens for Host ETW events.
  // Listening starts as soon as an instance is created and stops when the
  // instance is destroyed.  Only one instance can be active at a time.
  static std::unique_ptr<EtwTraceConsumer> Create(
      scoped_refptr<AutoThreadTaskRunner> task_runner,
      std::vector<std::unique_ptr<HostEventLogger>> loggers);
};

}  // namespace remoting

#endif  // REMOTING_HOST_WIN_ETW_TRACE_CONSUMER_H_