Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: net/quic/platform/impl/quic_ip_address_impl.cc

Issue 2881673002: Avoid heap allocations in IPAddress (Closed)
Patch Set: copys Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/platform/impl/quic_ip_address_impl.h" 5 #include "net/quic/platform/impl/quic_ip_address_impl.h"
6 6
7 #include "net/base/address_family.h" 7 #include "net/base/address_family.h"
8 #include "net/quic/platform/api/quic_bug_tracker.h" 8 #include "net/quic/platform/api/quic_bug_tracker.h"
9 9
10 #if defined(OS_WIN) 10 #if defined(OS_WIN)
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 } 100 }
101 return QuicIpAddressImpl(ip_address_); 101 return QuicIpAddressImpl(ip_address_);
102 } 102 }
103 103
104 bool QuicIpAddressImpl::FromPackedString(const char* data, size_t length) { 104 bool QuicIpAddressImpl::FromPackedString(const char* data, size_t length) {
105 if (length != IPAddress::kIPv4AddressSize && 105 if (length != IPAddress::kIPv4AddressSize &&
106 length != IPAddress::kIPv6AddressSize) { 106 length != IPAddress::kIPv6AddressSize) {
107 QUIC_BUG << "Invalid packed IP address of length " << length; 107 QUIC_BUG << "Invalid packed IP address of length " << length;
108 return false; 108 return false;
109 } 109 }
110 std::vector<uint8_t> ip(length); 110 ip_address_ = IPAddress(reinterpret_cast<const uint8_t*>(data), length);
111 memcpy(&ip[0], data, length);
112 ip_address_ = IPAddress(ip);
113 return true; 111 return true;
114 } 112 }
115 113
116 bool QuicIpAddressImpl::FromString(string str) { 114 bool QuicIpAddressImpl::FromString(string str) {
117 return ip_address_.AssignFromIPLiteral(str); 115 return ip_address_.AssignFromIPLiteral(str);
118 } 116 }
119 117
120 bool QuicIpAddressImpl::IsIPv4() const { 118 bool QuicIpAddressImpl::IsIPv4() const {
121 return ip_address_.IsIPv4(); 119 return ip_address_.IsIPv4();
122 } 120 }
123 121
124 bool QuicIpAddressImpl::IsIPv6() const { 122 bool QuicIpAddressImpl::IsIPv6() const {
125 return ip_address_.IsIPv6(); 123 return ip_address_.IsIPv6();
126 } 124 }
127 125
128 bool QuicIpAddressImpl::InSameSubnet(const QuicIpAddressImpl& other, 126 bool QuicIpAddressImpl::InSameSubnet(const QuicIpAddressImpl& other,
129 int subnet_length) { 127 int subnet_length) {
130 return IPAddressMatchesPrefix(ip_address_, other.ip_address(), subnet_length); 128 return IPAddressMatchesPrefix(ip_address_, other.ip_address(), subnet_length);
131 } 129 }
132 130
133 } // namespace net 131 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698