webrtc/rtc_base/win32socketinit.h
Mirko Bonadei ba5eaee9a2 Remove rtc::EnsureWinsockInit and g_winsockinit.
In the effort of enabling -Wglobal-constructors and
-Wexit-time-destructors, WebRTC has to remove the Winsock global
initializer.

This will also remove it from Chromium (since it was unused).

After this CL, applications will have to explicitly initialize Winsock
before using WebRTC, this can be done by using the class
rtc::WinsockInitializer provided in rtc_base/win32socketinit.h.

Bug: webrtc:9693, webrtc:9754
Change-Id: I4aae12ff43671ef2713a6fc4592e20759dc6b495
Reviewed-on: https://webrtc-review.googlesource.com/99660
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24903}
2018-10-01 07:02:20 +00:00

41 lines
975 B
C++

/*
* Copyright 2009 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.
*/
#ifndef RTC_BASE_WIN32SOCKETINIT_H_
#define RTC_BASE_WIN32SOCKETINIT_H_
#ifndef WEBRTC_WIN
#error "Only #include this header in Windows builds"
#endif
#include "rtc_base/win32.h"
namespace rtc {
class WinsockInitializer {
public:
WinsockInitializer() {
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(1, 0);
err_ = WSAStartup(wVersionRequested, &wsaData);
}
~WinsockInitializer() {
if (!err_)
WSACleanup();
}
int error() { return err_; }
private:
int err_;
};
} // namespace rtc
#endif // RTC_BASE_WIN32SOCKETINIT_H_