Use real Thread in examples/ instead of AutoThread

Bug: webrtc:469327588
Change-Id: I99fa0af31513400270490ee6ee7a4d0a6a6a6964
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/461347
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Auto-Submit: Evan Shrubsole <eshr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47310}
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index dae37ec..507b575 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -820,6 +820,7 @@
       "../pc:rtc_pc",
       "../rtc_base:async_udp_socket",
       "../rtc_base:ip_address",
+      "../rtc_base:net_helper",
       "../rtc_base:socket_address",
       "../rtc_base:socket_server",
       "../rtc_base:threading",
diff --git a/examples/peerconnection/client/linux/main.cc b/examples/peerconnection/client/linux/main.cc
index 60b7b53..358d28f 100644
--- a/examples/peerconnection/client/linux/main.cc
+++ b/examples/peerconnection/client/linux/main.cc
@@ -92,7 +92,9 @@
   wnd.Create();
 
   CustomSocketServer socket_server(&wnd);
-  webrtc::AutoSocketServerThread thread(&socket_server);
+  std::unique_ptr<webrtc::Thread> thread =
+      std::make_unique<webrtc::Thread>(&socket_server);
+  webrtc::ThreadManager::Instance()->SetCurrentThread(thread.get());
 
   webrtc::InitializeSSL();
   // Must be constructed after we set the socketserver.
@@ -101,7 +103,8 @@
   socket_server.set_client(&client);
   socket_server.set_conductor(conductor.get());
 
-  thread.Run();
+  thread->Run();
+  webrtc::ThreadManager::Instance()->SetCurrentThread(nullptr);
 
   // gtk_main();
   wnd.Destroy();
diff --git a/examples/peerconnection/client/main.cc b/examples/peerconnection/client/main.cc
index 9320fd9..83876e4 100644
--- a/examples/peerconnection/client/main.cc
+++ b/examples/peerconnection/client/main.cc
@@ -84,7 +84,9 @@
                     int cmd_show) {
   webrtc::WinsockInitializer winsock_init;
   webrtc::PhysicalSocketServer ss;
-  webrtc::AutoSocketServerThread main_thread(&ss);
+  std::unique_ptr<webrtc::Thread> main_thread =
+      std::make_unique<webrtc::Thread>(&ss);
+  webrtc::ThreadManager::Instance()->SetCurrentThread(main_thread.get());
 
   WindowsCommandLineArguments win_args;
   int argc = win_args.argc();
@@ -140,5 +142,6 @@
   }
 
   webrtc::CleanupSSL();
+  webrtc::ThreadManager::Instance()->SetCurrentThread(nullptr);
   return 0;
 }
diff --git a/examples/turnserver/turnserver_main.cc b/examples/turnserver/turnserver_main.cc
index 3bbf406..41d7672 100644
--- a/examples/turnserver/turnserver_main.cc
+++ b/examples/turnserver/turnserver_main.cc
@@ -20,10 +20,10 @@
 #include "api/environment/environment_factory.h"
 #include "examples/turnserver/read_auth_file.h"
 #include "p2p/base/basic_packet_socket_factory.h"
-#include "p2p/base/port_interface.h"
 #include "p2p/test/turn_server.h"
 #include "rtc_base/async_udp_socket.h"
 #include "rtc_base/ip_address.h"
+#include "rtc_base/net_helper.h"
 #include "rtc_base/physical_socket_server.h"
 #include "rtc_base/socket_address.h"
 #include "rtc_base/thread.h"
@@ -75,7 +75,9 @@
 
   const webrtc::Environment env = webrtc::CreateEnvironment();
   webrtc::PhysicalSocketServer socket_server;
-  webrtc::AutoSocketServerThread main(&socket_server);
+  std::unique_ptr<webrtc::Thread> main =
+      std::make_unique<webrtc::Thread>(&socket_server);
+  webrtc::ThreadManager::Instance()->SetCurrentThread(main.get());
   std::unique_ptr<webrtc::AsyncUDPSocket> int_socket =
       webrtc::AsyncUDPSocket::Create(env, int_addr, socket_server);
   if (!int_socket) {
@@ -84,7 +86,7 @@
     return 1;
   }
 
-  webrtc::TurnServer server(env, &main);
+  webrtc::TurnServer server(env, main.get());
   std::fstream auth_file(argv[4], std::fstream::in);
 
   TurnFileAuth auth(auth_file.is_open()
@@ -100,6 +102,7 @@
 
   std::cout << "Listening internally at " << int_addr.ToString() << std::endl;
 
-  main.Run();
+  main->Run();
+  webrtc::ThreadManager::Instance()->SetCurrentThread(nullptr);
   return 0;
 }