dcsctp: move HandoverReadinessStatus::ToString definition to build target public:socket

This allows build targets that need only HandoverReadinessStatus
to depend only on public:socket, and not on socket:dcsctp_socket.

Bug: webrtc:13154
Change-Id: I29f41910cdb5baed96b57fd7284b96fc50a56ba4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/232331
Reviewed-by: Victor Boivie <boivie@webrtc.org>
Commit-Queue: Sergey Sukhanov <sergeysu@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35037}
diff --git a/net/dcsctp/public/BUILD.gn b/net/dcsctp/public/BUILD.gn
index 8fb521c..74136ac 100644
--- a/net/dcsctp/public/BUILD.gn
+++ b/net/dcsctp/public/BUILD.gn
@@ -35,6 +35,7 @@
     "../../../rtc_base:rtc_base_approved",
   ]
   sources = [
+    "dcsctp_handover_state.cc",
     "dcsctp_handover_state.h",
     "dcsctp_socket.h",
     "packet_observer.h",
diff --git a/net/dcsctp/public/dcsctp_handover_state.cc b/net/dcsctp/public/dcsctp_handover_state.cc
new file mode 100644
index 0000000..6a1bd06
--- /dev/null
+++ b/net/dcsctp/public/dcsctp_handover_state.cc
@@ -0,0 +1,68 @@
+/*
+ *  Copyright (c) 2021 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+#include "net/dcsctp/public/dcsctp_handover_state.h"
+
+#include <string>
+
+#include "absl/strings/string_view.h"
+
+namespace dcsctp {
+namespace {
+constexpr absl::string_view HandoverUnreadinessReasonToString(
+    HandoverUnreadinessReason reason) {
+  switch (reason) {
+    case HandoverUnreadinessReason::kWrongConnectionState:
+      return "WRONG_CONNECTION_STATE";
+    case HandoverUnreadinessReason::kSendQueueNotEmpty:
+      return "SEND_QUEUE_NOT_EMPTY";
+    case HandoverUnreadinessReason::kDataTrackerTsnBlocksPending:
+      return "DATA_TRACKER_TSN_BLOCKS_PENDING";
+    case HandoverUnreadinessReason::kReassemblyQueueDeliveredTSNsGap:
+      return "REASSEMBLY_QUEUE_DELIVERED_TSN_GAP";
+    case HandoverUnreadinessReason::kStreamResetDeferred:
+      return "STREAM_RESET_DEFERRED";
+    case HandoverUnreadinessReason::kOrderedStreamHasUnassembledChunks:
+      return "ORDERED_STREAM_HAS_UNASSEMBLED_CHUNKS";
+    case HandoverUnreadinessReason::kUnorderedStreamHasUnassembledChunks:
+      return "UNORDERED_STREAM_HAS_UNASSEMBLED_CHUNKS";
+    case HandoverUnreadinessReason::kRetransmissionQueueOutstandingData:
+      return "RETRANSMISSION_QUEUE_OUTSTANDING_DATA";
+    case HandoverUnreadinessReason::kRetransmissionQueueFastRecovery:
+      return "RETRANSMISSION_QUEUE_FAST_RECOVERY";
+    case HandoverUnreadinessReason::kRetransmissionQueueNotEmpty:
+      return "RETRANSMISSION_QUEUE_NOT_EMPTY";
+    case HandoverUnreadinessReason::kPendingStreamReset:
+      return "PENDING_STREAM_RESET";
+    case HandoverUnreadinessReason::kPendingStreamResetRequest:
+      return "PENDING_STREAM_RESET_REQUEST";
+  }
+}
+}  // namespace
+
+std::string HandoverReadinessStatus::ToString() const {
+  std::string result;
+  for (uint32_t bit = 1;
+       bit <= static_cast<uint32_t>(HandoverUnreadinessReason::kMax);
+       bit *= 2) {
+    auto flag = static_cast<HandoverUnreadinessReason>(bit);
+    if (Contains(flag)) {
+      if (!result.empty()) {
+        result.append(",");
+      }
+      absl::string_view s = HandoverUnreadinessReasonToString(flag);
+      result.append(s.data(), s.size());
+    }
+  }
+  if (result.empty()) {
+    result = "READY";
+  }
+  return result;
+}
+}  // namespace dcsctp
diff --git a/net/dcsctp/socket/dcsctp_socket.cc b/net/dcsctp/socket/dcsctp_socket.cc
index afc30f6..bfe248c 100644
--- a/net/dcsctp/socket/dcsctp_socket.cc
+++ b/net/dcsctp/socket/dcsctp_socket.cc
@@ -138,58 +138,8 @@
   return TieTag(static_cast<uint64_t>(tie_tag_upper) << 32 |
                 static_cast<uint64_t>(tie_tag_lower));
 }
-
-constexpr absl::string_view HandoverUnreadinessReasonToString(
-    HandoverUnreadinessReason reason) {
-  switch (reason) {
-    case HandoverUnreadinessReason::kWrongConnectionState:
-      return "WRONG_CONNECTION_STATE";
-    case HandoverUnreadinessReason::kSendQueueNotEmpty:
-      return "SEND_QUEUE_NOT_EMPTY";
-    case HandoverUnreadinessReason::kDataTrackerTsnBlocksPending:
-      return "DATA_TRACKER_TSN_BLOCKS_PENDING";
-    case HandoverUnreadinessReason::kReassemblyQueueDeliveredTSNsGap:
-      return "REASSEMBLY_QUEUE_DELIVERED_TSN_GAP";
-    case HandoverUnreadinessReason::kStreamResetDeferred:
-      return "STREAM_RESET_DEFERRED";
-    case HandoverUnreadinessReason::kOrderedStreamHasUnassembledChunks:
-      return "ORDERED_STREAM_HAS_UNASSEMBLED_CHUNKS";
-    case HandoverUnreadinessReason::kUnorderedStreamHasUnassembledChunks:
-      return "UNORDERED_STREAM_HAS_UNASSEMBLED_CHUNKS";
-    case HandoverUnreadinessReason::kRetransmissionQueueOutstandingData:
-      return "RETRANSMISSION_QUEUE_OUTSTANDING_DATA";
-    case HandoverUnreadinessReason::kRetransmissionQueueFastRecovery:
-      return "RETRANSMISSION_QUEUE_FAST_RECOVERY";
-    case HandoverUnreadinessReason::kRetransmissionQueueNotEmpty:
-      return "RETRANSMISSION_QUEUE_NOT_EMPTY";
-    case HandoverUnreadinessReason::kPendingStreamReset:
-      return "PENDING_STREAM_RESET";
-    case HandoverUnreadinessReason::kPendingStreamResetRequest:
-      return "PENDING_STREAM_RESET_REQUEST";
-  }
-}
 }  // namespace
 
-std::string HandoverReadinessStatus::ToString() const {
-  std::string result;
-  for (uint32_t bit = 1;
-       bit <= static_cast<uint32_t>(HandoverUnreadinessReason::kMax);
-       bit *= 2) {
-    auto flag = static_cast<HandoverUnreadinessReason>(bit);
-    if (Contains(flag)) {
-      if (!result.empty()) {
-        result.append(",");
-      }
-      absl::string_view s = HandoverUnreadinessReasonToString(flag);
-      result.append(s.data(), s.size());
-    }
-  }
-  if (result.empty()) {
-    result = "READY";
-  }
-  return result;
-}
-
 DcSctpSocket::DcSctpSocket(absl::string_view log_prefix,
                            DcSctpSocketCallbacks& callbacks,
                            std::unique_ptr<PacketObserver> packet_observer,