mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-17 23:57:59 +01:00

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}
79 lines
2.4 KiB
C++
79 lines
2.4 KiB
C++
/*
|
|
* Copyright 2012 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 "examples/peerconnection/client/conductor.h"
|
|
#include "examples/peerconnection/client/flagdefs.h"
|
|
#include "examples/peerconnection/client/main_wnd.h"
|
|
#include "examples/peerconnection/client/peer_connection_client.h"
|
|
#include "rtc_base/checks.h"
|
|
#include "rtc_base/ssladapter.h"
|
|
#include "rtc_base/win32socketinit.h"
|
|
#include "rtc_base/win32socketserver.h"
|
|
|
|
int PASCAL wWinMain(HINSTANCE instance,
|
|
HINSTANCE prev_instance,
|
|
wchar_t* cmd_line,
|
|
int cmd_show) {
|
|
rtc::WinsockInitializer winsock_init;
|
|
rtc::Win32SocketServer w32_ss;
|
|
rtc::Win32Thread w32_thread(&w32_ss);
|
|
rtc::ThreadManager::Instance()->SetCurrentThread(&w32_thread);
|
|
|
|
rtc::WindowsCommandLineArguments win_args;
|
|
int argc = win_args.argc();
|
|
char** argv = win_args.argv();
|
|
|
|
rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, true);
|
|
if (FLAG_help) {
|
|
rtc::FlagList::Print(NULL, false);
|
|
return 0;
|
|
}
|
|
|
|
// Abort if the user specifies a port that is outside the allowed
|
|
// range [1, 65535].
|
|
if ((FLAG_port < 1) || (FLAG_port > 65535)) {
|
|
printf("Error: %i is not a valid port.\n", FLAG_port);
|
|
return -1;
|
|
}
|
|
|
|
MainWnd wnd(FLAG_server, FLAG_port, FLAG_autoconnect, FLAG_autocall);
|
|
if (!wnd.Create()) {
|
|
RTC_NOTREACHED();
|
|
return -1;
|
|
}
|
|
|
|
rtc::InitializeSSL();
|
|
PeerConnectionClient client;
|
|
rtc::scoped_refptr<Conductor> conductor(
|
|
new rtc::RefCountedObject<Conductor>(&client, &wnd));
|
|
|
|
// Main loop.
|
|
MSG msg;
|
|
BOOL gm;
|
|
while ((gm = ::GetMessage(&msg, NULL, 0, 0)) != 0 && gm != -1) {
|
|
if (!wnd.PreTranslateMessage(&msg)) {
|
|
::TranslateMessage(&msg);
|
|
::DispatchMessage(&msg);
|
|
}
|
|
}
|
|
|
|
if (conductor->connection_active() || client.is_connected()) {
|
|
while ((conductor->connection_active() || client.is_connected()) &&
|
|
(gm = ::GetMessage(&msg, NULL, 0, 0)) != 0 && gm != -1) {
|
|
if (!wnd.PreTranslateMessage(&msg)) {
|
|
::TranslateMessage(&msg);
|
|
::DispatchMessage(&msg);
|
|
}
|
|
}
|
|
}
|
|
|
|
rtc::CleanupSSL();
|
|
return 0;
|
|
}
|