Index: remoting/base/port_range.cc |
diff --git a/remoting/protocol/network_settings.cc b/remoting/base/port_range.cc |
similarity index 53% |
rename from remoting/protocol/network_settings.cc |
rename to remoting/base/port_range.cc |
index 65068ef951197ce2f76e28c896025f23f6200a0e..9003cbf134acb0ae84af4ca00249ee4259fb1c31 100644 |
--- a/remoting/protocol/network_settings.cc |
+++ b/remoting/base/port_range.cc |
@@ -1,8 +1,8 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Copyright 2015 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 "remoting/protocol/network_settings.h" |
+#include "remoting/base/port_range.h" |
#include <limits.h> |
#include <stdlib.h> |
@@ -11,23 +11,25 @@ |
#include "base/strings/string_util.h" |
namespace remoting { |
-namespace protocol { |
-// static |
- bool NetworkSettings::ParsePortRange(const std::string& port_range, |
- uint16* out_min_port, |
- uint16* out_max_port) { |
+bool PortRange::Parse(const std::string& port_range, PortRange* out) { |
+ DCHECK(out); |
+ |
+ if (port_range.empty()) { |
+ out->min_port = 0; |
+ out->max_port = 0; |
+ return true; |
+ } |
+ |
size_t separator_index = port_range.find('-'); |
if (separator_index == std::string::npos) |
return false; |
std::string min_port_string, max_port_string; |
base::TrimWhitespaceASCII(port_range.substr(0, separator_index), |
- base::TRIM_ALL, |
- &min_port_string); |
+ base::TRIM_ALL, &min_port_string); |
base::TrimWhitespaceASCII(port_range.substr(separator_index + 1), |
- base::TRIM_ALL, |
- &max_port_string); |
+ base::TRIM_ALL, &max_port_string); |
unsigned min_port, max_port; |
if (!base::StringToUint(min_port_string, &min_port) || |
@@ -38,10 +40,18 @@ namespace protocol { |
if (min_port == 0 || min_port > max_port || max_port > USHRT_MAX) |
return false; |
- *out_min_port = static_cast<uint16>(min_port); |
- *out_max_port = static_cast<uint16>(max_port); |
+ out->min_port = static_cast<uint16>(min_port); |
+ out->max_port = static_cast<uint16>(max_port); |
return true; |
} |
-} // namespace protocol |
+std::ostream& operator<<(std::ostream& os, const PortRange& port_range) { |
+ if (port_range.is_empty()) { |
+ os << "<no port range specified>"; |
+ } else { |
+ os << "[" << port_range.min_port << ", " << port_range.max_port << "]"; |
+ } |
+ return os; |
+} |
+ |
} // namespace remoting |