Enable the clang style plugin for the stunprober target

Bug: webrtc:163
Change-Id: I77c92dfc05626cb5e83d4e93d735c1370ed4af23
Reviewed-on: https://webrtc-review.googlesource.com/15783
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20435}
This commit is contained in:
Steve Anton 2017-10-25 14:46:18 -07:00 committed by Commit Bot
parent ca7d54e16a
commit eae3e65394
8 changed files with 105 additions and 56 deletions

View File

@ -129,6 +129,7 @@ if (rtc_include_tests) {
"base/fakeportallocator.h",
"base/mockicetransport.h",
"base/testrelayserver.h",
"base/teststunserver.cc",
"base/teststunserver.h",
"base/testturncustomizer.h",
"base/testturnserver.h",
@ -201,12 +202,6 @@ rtc_static_library("libstunprober") {
"stunprober/stunprober.h",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from Chrome's Clang plugins.
# See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
deps = [
":rtc_p2p",
"..:webrtc_common",
@ -236,10 +231,6 @@ if (rtc_include_tests) {
"//testing/gmock",
"//testing/gtest",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
defines = [ "GTEST_RELATIVE_PATH" ]
}
}

View File

@ -104,6 +104,18 @@ AsyncPacketSocket* BasicPacketSocketFactory::CreateServerTcpSocket(
return new AsyncTCPSocket(socket, true);
}
AsyncPacketSocket* BasicPacketSocketFactory::CreateClientTcpSocket(
const SocketAddress& local_address,
const SocketAddress& remote_address,
const ProxyInfo& proxy_info,
const std::string& user_agent,
int opts) {
PacketSocketTcpOptions tcp_options;
tcp_options.opts = opts;
return CreateClientTcpSocket(local_address, remote_address, proxy_info,
user_agent, tcp_options);
}
AsyncPacketSocket* BasicPacketSocketFactory::CreateClientTcpSocket(
const SocketAddress& local_address,
const SocketAddress& remote_address,

View File

@ -37,12 +37,7 @@ class BasicPacketSocketFactory : public PacketSocketFactory {
const SocketAddress& remote_address,
const ProxyInfo& proxy_info,
const std::string& user_agent,
int opts) override {
PacketSocketTcpOptions tcp_options;
tcp_options.opts = opts;
return CreateClientTcpSocket(local_address, remote_address, proxy_info,
user_agent, tcp_options);
}
int opts) override;
AsyncPacketSocket* CreateClientTcpSocket(
const SocketAddress& local_address,
const SocketAddress& remote_address,

View File

@ -18,11 +18,17 @@ namespace rtc {
// This structure contains options required to create TCP packet sockets.
struct PacketSocketTcpOptions {
PacketSocketTcpOptions();
~PacketSocketTcpOptions();
int opts;
std::vector<std::string> tls_alpn_protocols;
std::vector<std::string> tls_elliptic_curves;
};
inline PacketSocketTcpOptions::PacketSocketTcpOptions() = default;
inline PacketSocketTcpOptions::~PacketSocketTcpOptions() = default;
class AsyncPacketSocket;
class AsyncResolverInterface;
@ -70,10 +76,7 @@ class PacketSocketFactory {
const SocketAddress& remote_address,
const ProxyInfo& proxy_info,
const std::string& user_agent,
const PacketSocketTcpOptions& tcp_options) {
return CreateClientTcpSocket(local_address, remote_address, proxy_info,
user_agent, tcp_options.opts);
}
const PacketSocketTcpOptions& tcp_options);
virtual AsyncResolverInterface* CreateAsyncResolver() = 0;
@ -81,6 +84,16 @@ class PacketSocketFactory {
RTC_DISALLOW_COPY_AND_ASSIGN(PacketSocketFactory);
};
inline AsyncPacketSocket* PacketSocketFactory::CreateClientTcpSocket(
const SocketAddress& local_address,
const SocketAddress& remote_address,
const ProxyInfo& proxy_info,
const std::string& user_agent,
const PacketSocketTcpOptions& tcp_options) {
return CreateClientTcpSocket(local_address, remote_address, proxy_info,
user_agent, tcp_options.opts);
}
} // namespace rtc
#endif // P2P_BASE_PACKETSOCKETFACTORY_H_

View File

@ -0,0 +1,35 @@
/*
* Copyright 2017 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 "p2p/base/teststunserver.h"
namespace cricket {
TestStunServer* TestStunServer::Create(rtc::Thread* thread,
const rtc::SocketAddress& addr) {
rtc::AsyncSocket* socket =
thread->socketserver()->CreateAsyncSocket(addr.family(), SOCK_DGRAM);
rtc::AsyncUDPSocket* udp_socket = rtc::AsyncUDPSocket::Create(socket, addr);
return new TestStunServer(udp_socket);
}
void TestStunServer::OnBindingRequest(StunMessage* msg,
const rtc::SocketAddress& remote_addr) {
if (fake_stun_addr_.IsNil()) {
StunServer::OnBindingRequest(msg, remote_addr);
} else {
StunMessage response;
GetStunBindReqponse(msg, fake_stun_addr_, &response);
SendResponse(response, remote_addr);
}
}
} // namespace cricket

View File

@ -21,14 +21,7 @@ namespace cricket {
class TestStunServer : StunServer {
public:
static TestStunServer* Create(rtc::Thread* thread,
const rtc::SocketAddress& addr) {
rtc::AsyncSocket* socket =
thread->socketserver()->CreateAsyncSocket(addr.family(), SOCK_DGRAM);
rtc::AsyncUDPSocket* udp_socket =
rtc::AsyncUDPSocket::Create(socket, addr);
return new TestStunServer(udp_socket);
}
const rtc::SocketAddress& addr);
// Set a fake STUN address to return to the client.
void set_fake_stun_addr(const rtc::SocketAddress& addr) {
@ -39,15 +32,7 @@ class TestStunServer : StunServer {
explicit TestStunServer(rtc::AsyncUDPSocket* socket) : StunServer(socket) {}
void OnBindingRequest(StunMessage* msg,
const rtc::SocketAddress& remote_addr) override {
if (fake_stun_addr_.IsNil()) {
StunServer::OnBindingRequest(msg, remote_addr);
} else {
StunMessage response;
GetStunBindReqponse(msg, fake_stun_addr_, &response);
SendResponse(response, remote_addr);
}
}
const rtc::SocketAddress& remote_addr) override;
private:
rtc::SocketAddress fake_stun_addr_;

View File

@ -65,7 +65,7 @@ class StunProber::Requester : public sigslot::has_slots<> {
Requester(StunProber* prober,
rtc::AsyncPacketSocket* socket,
const std::vector<rtc::SocketAddress>& server_ips);
virtual ~Requester();
~Requester() override;
// There is no callback for SendStunRequest as the underneath socket send is
// expected to be completed immediately. Otherwise, it'll skip this request
@ -124,7 +124,7 @@ StunProber::Requester::~Requester() {
if (socket_) {
socket_->Close();
}
for (auto req : requests_) {
for (auto* req : requests_) {
if (req) {
delete req;
}
@ -220,7 +220,7 @@ void StunProber::Requester::OnStunResponseReceived(
StunProber::Requester::Request* StunProber::Requester::GetRequestByAddress(
const rtc::IPAddress& ipaddr) {
RTC_DCHECK(thread_checker_.CalledOnValidThread());
for (auto request : requests_) {
for (auto* request : requests_) {
if (request->server_addr == ipaddr) {
return request;
}
@ -229,6 +229,28 @@ StunProber::Requester::Request* StunProber::Requester::GetRequestByAddress(
return nullptr;
}
StunProber::Stats::Stats() = default;
StunProber::Stats::~Stats() = default;
StunProber::ObserverAdapter::ObserverAdapter() = default;
StunProber::ObserverAdapter::~ObserverAdapter() = default;
void StunProber::ObserverAdapter::OnPrepared(StunProber* stunprober,
Status status) {
if (status == SUCCESS) {
stunprober->Start(this);
} else {
callback_(stunprober, status);
}
}
void StunProber::ObserverAdapter::OnFinished(StunProber* stunprober,
Status status) {
callback_(stunprober, status);
}
StunProber::StunProber(rtc::PacketSocketFactory* socket_factory,
rtc::Thread* thread,
const rtc::NetworkManager::NetworkList& networks)
@ -239,12 +261,12 @@ StunProber::StunProber(rtc::PacketSocketFactory* socket_factory,
}
StunProber::~StunProber() {
for (auto req : requesters_) {
for (auto* req : requesters_) {
if (req) {
delete req;
}
}
for (auto s : sockets_) {
for (auto* s : sockets_) {
if (s) {
delete s;
}
@ -475,7 +497,7 @@ bool StunProber::GetStats(StunProber::Stats* prob_stats) const {
for (auto* requester : requesters_) {
std::map<rtc::SocketAddress, int> num_response_per_srflx_addr;
for (auto request : requester->requests()) {
for (auto* request : requester->requests()) {
if (request->sent_time_ms <= 0) {
continue;
}
@ -539,7 +561,7 @@ bool StunProber::GetStats(StunProber::Stats* prob_stats) const {
!srflx_addr.FromString(*(stats.srflx_addrs.begin()))) {
return false;
}
for (const auto& net : networks_) {
for (const auto* net : networks_) {
if (srflx_addr.ipaddr() == net->GetBestIP()) {
nat_type = stunprober::NATTYPE_NONE;
stats.host_ip = net->GetBestIP().ToString();

View File

@ -69,7 +69,8 @@ class StunProber : public sigslot::has_slots<> {
};
struct Stats {
Stats() {}
Stats();
~Stats();
// |raw_num_request_sent| is the total number of requests
// sent. |num_request_sent| is the count of requests against a server where
@ -100,7 +101,7 @@ class StunProber : public sigslot::has_slots<> {
StunProber(rtc::PacketSocketFactory* socket_factory,
rtc::Thread* thread,
const rtc::NetworkManager::NetworkList& networks);
virtual ~StunProber();
~StunProber() override;
// Begin performing the probe test against the |servers|. If
// |shared_socket_mode| is false, each request will be done with a new socket.
@ -153,17 +154,12 @@ class StunProber : public sigslot::has_slots<> {
// AsyncCallback.
class ObserverAdapter : public Observer {
public:
ObserverAdapter();
~ObserverAdapter() override;
void set_callback(AsyncCallback callback) { callback_ = callback; }
void OnPrepared(StunProber* stunprober, Status status) {
if (status == SUCCESS) {
stunprober->Start(this);
} else {
callback_(stunprober, status);
}
}
void OnFinished(StunProber* stunprober, Status status) {
callback_(stunprober, status);
}
void OnPrepared(StunProber* stunprober, Status status) override;
void OnFinished(StunProber* stunprober, Status status) override;
private:
AsyncCallback callback_;