// Copyright 2017 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 "net/socket/socket_tag.h"

#include <tuple>

#include "base/check.h"

#if defined(OS_ANDROID)
#include "net/android/network_library.h"
#endif  // OS_ANDROID

namespace net {

#if defined(OS_ANDROID)
// Expose UNSET_UID to Java.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.net
enum TrafficStatsUid {
  UNSET = -1,
};
// Java generator needs explicit integer, verify equality here.
static_assert(UNSET == SocketTag::UNSET_UID,
              "TrafficStatsUid does not match SocketTag::UNSET_UID");
#endif  // OS_ANDROID

bool SocketTag::operator<(const SocketTag& other) const {
#if defined(OS_ANDROID)
  return std::tie(uid_, traffic_stats_tag_) <
         std::tie(other.uid_, other.traffic_stats_tag_);
#else
  return false;
#endif  // OS_ANDROID
}

bool SocketTag::operator==(const SocketTag& other) const {
#if defined(OS_ANDROID)
  return std::tie(uid_, traffic_stats_tag_) ==
         std::tie(other.uid_, other.traffic_stats_tag_);
#else
  return true;
#endif  // OS_ANDROID
}

void SocketTag::Apply(SocketDescriptor socket) const {
#if defined(OS_ANDROID)
  net::android::TagSocket(socket, uid_, traffic_stats_tag_);
#else
  CHECK(false);
#endif  // OS_ANDROID
}

}  // namespace net
