// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef DEBUGD_SRC_PACKET_CAPTURE_TOOL_H_
#define DEBUGD_SRC_PACKET_CAPTURE_TOOL_H_

#include <map>
#include <string>

#include <base/macros.h>
#include <brillo/errors/error.h>
#include <brillo/variant_dictionary.h>
#include <dbus/file_descriptor.h>

#include "debugd/src/subprocess_tool.h"

namespace debugd {

class ProcessWithId;

class PacketCaptureTool : public SubprocessTool {
 public:
  PacketCaptureTool() = default;
  ~PacketCaptureTool() override = default;

  bool Start(const dbus::FileDescriptor& status_fd,
             const dbus::FileDescriptor& output_fd,
             const brillo::VariantDictionary& options,
             std::string* out_id,
             brillo::ErrorPtr* error);

 private:
  DISALLOW_COPY_AND_ASSIGN(PacketCaptureTool);
};

}  // namespace debugd

#endif  // DEBUGD_SRC_PACKET_CAPTURE_TOOL_H_
