blob: 482522bb00182bb368e80cf31522b6895275d301 [file] [log] [blame]
// 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 "chromeos/services/secure_channel/device_id_pair.h"
#include <functional>
#include "base/hash.h"
#include "chromeos/components/multidevice/remote_device_ref.h"
namespace chromeos {
namespace secure_channel {
DeviceIdPair::DeviceIdPair(const std::string& remote_device_id,
const std::string& local_device_id)
: remote_device_id_(remote_device_id), local_device_id_(local_device_id) {}
DeviceIdPair::DeviceIdPair(const DeviceIdPair& other)
: remote_device_id_(other.remote_device_id_),
local_device_id_(other.local_device_id_) {}
DeviceIdPair::~DeviceIdPair() = default;
bool DeviceIdPair::operator==(const DeviceIdPair& other) const {
return remote_device_id_ == other.remote_device_id_ &&
local_device_id_ == other.local_device_id_;
}
bool DeviceIdPair::operator!=(const DeviceIdPair& other) const {
return !(*this == other);
}
bool DeviceIdPair::operator<(const DeviceIdPair& other) const {
if (remote_device_id_ != other.remote_device_id_)
return remote_device_id_ < other.remote_device_id_;
return local_device_id_ < other.local_device_id_;
}
size_t DeviceIdPairHash::operator()(const DeviceIdPair& device_id_pair) const {
static std::hash<std::string> string_hash;
return base::HashInts64(string_hash(device_id_pair.remote_device_id()),
string_hash(device_id_pair.local_device_id()));
}
std::ostream& operator<<(std::ostream& stream,
const DeviceIdPair& device_id_pair) {
stream << "{remote_id: \""
<< multidevice::RemoteDeviceRef::TruncateDeviceIdForLogs(
device_id_pair.remote_device_id())
<< "\", local_id: \""
<< multidevice::RemoteDeviceRef::TruncateDeviceIdForLogs(
device_id_pair.local_device_id())
<< "\"}";
return stream;
}
} // namespace secure_channel
} // namespace chromeos