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

#include "device/usb/scoped_libusb_device_ref.h"

#include "device/usb/usb_context.h"
#include "third_party/libusb/src/libusb/libusb.h"

namespace device {

ScopedLibusbDeviceRef::ScopedLibusbDeviceRef(libusb_device* device,
                                             scoped_refptr<UsbContext> context)
    : device_(device), context_(std::move(context)) {}

ScopedLibusbDeviceRef::ScopedLibusbDeviceRef(ScopedLibusbDeviceRef&& other)
    : device_(other.device_), context_(std::move(other.context_)) {
  other.device_ = nullptr;
}

ScopedLibusbDeviceRef::~ScopedLibusbDeviceRef() {
  Reset();
}

void ScopedLibusbDeviceRef::Reset() {
  libusb_unref_device(device_);
  device_ = nullptr;
  context_.reset();
}

bool ScopedLibusbDeviceRef::IsValid() const {
  return device_ != nullptr;
}

bool operator==(const ScopedLibusbDeviceRef& ref, libusb_device* device) {
  return ref.get() == device;
}

}  // namespace device
