#ifndef SERVICES_NETWORK_NET_LOG_PROXY_SINK_H_
#define SERVICES_NETWORK_NET_LOG_PROXY_SINK_H_
#include "base/component_export.h"
#include "base/memory/weak_ptr.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/bindings/remote_set.h"
#include "net/log/net_log.h"
#include "services/network/public/mojom/net_log.mojom.h"
namespace base {
class SequencedTaskRunner;
}
namespace network {
class COMPONENT_EXPORT(NETWORK_SERVICE) NetLogProxySink
: public net::NetLog::ThreadSafeCaptureModeObserver,
public network::mojom::NetLogProxySink {
public:
NetLogProxySink();
~NetLogProxySink() override;
NetLogProxySink(const NetLogProxySink&) = delete;
NetLogProxySink& operator=(const NetLogProxySink&) = delete;
void AttachSource(mojo::PendingRemote<network::mojom::NetLogProxySource>
proxy_source_remote,
mojo::PendingReceiver<network::mojom::NetLogProxySink>
proxy_sink_receiver);
void OnCaptureModeUpdated(net::NetLogCaptureModeSet modes) override;
void AddEntry(uint32_t type,
uint32_t source_type,
uint32_t source_id,
base::TimeTicks source_start_time,
net::NetLogEventPhase phase,
base::TimeTicks time,
base::Value::Dict params) override;
private:
mojo::RemoteSet<network::mojom::NetLogProxySource> proxy_source_remotes_;
mojo::ReceiverSet<network::mojom::NetLogProxySink> proxy_sink_receivers_;
scoped_refptr<base::SequencedTaskRunner> task_runner_;
base::WeakPtr<NetLogProxySink> weak_this_;
base::WeakPtrFactory<NetLogProxySink> weak_factory_{this};
};
}
#endif