diff --git a/Plugins/GameLiftServerSDK/GameLiftServerSDK.uplugin b/Plugins/GameLiftServerSDK/GameLiftServerSDK.uplugin deleted file mode 100644 index 83bbaee3..00000000 --- a/Plugins/GameLiftServerSDK/GameLiftServerSDK.uplugin +++ /dev/null @@ -1,35 +0,0 @@ -{ - "FileVersion": 3, - "Version": 5, - "VersionName": "5.4.0", - "FriendlyName": "GameLiftServerSDK", - "Description": "", - "Category": "Other", - "CreatedBy": "", - "CreatedByURL": "", - "DocsURL": "", - "MarketplaceURL": "", - "SupportURL": "", - "EnabledByDefault": false, - "CanContainContent": false, - "IsBetaVersion": false, - "Installed": false, - "Modules": [ - { - "Name": "GameLiftServerSDK", - "Type": "Runtime", - "LoadingPhase": "PreDefault", - "TargetAllowList": [ - "Server" - ] - }, - { - "Name": "GameLiftMetrics", - "Type": "Runtime", - "LoadingPhase": "PreDefault", - "TargetAllowList": [ - "Server" - ] - } - ] -} diff --git a/Plugins/GameLiftServerSDK/Release-notes/3.1.5-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/3.1.5-release-notes.txt deleted file mode 100644 index 87e59582..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/3.1.5-release-notes.txt +++ /dev/null @@ -1,3 +0,0 @@ -- Support for Windows and Linux operating systems. -- Support for Unreal Engine 4.13 or later -- Dependency on GameLift C++ Server SDK 3.1.5 \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/3.2.0-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/3.2.0-release-notes.txt deleted file mode 100644 index 6e5de43d..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/3.2.0-release-notes.txt +++ /dev/null @@ -1,3 +0,0 @@ -- Updated Google Protobuf to v3.3 -- TargetInfo updated to ReadOnlyTargetRules for UE4.16-4.18 -- Dependency on GameLift C++ Server SDK 3.2.0 \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/3.2.1-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/3.2.1-release-notes.txt deleted file mode 100644 index 94bf07c6..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/3.2.1-release-notes.txt +++ /dev/null @@ -1 +0,0 @@ -- New API GetTerminationTime diff --git a/Plugins/GameLiftServerSDK/Release-notes/3.3.0-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/3.3.0-release-notes.txt deleted file mode 100644 index 69ccdd90..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/3.3.0-release-notes.txt +++ /dev/null @@ -1,2 +0,0 @@ -- Support for Matchmaking backfill APIs -- Support for 4.19, 4.20 and 4.21 versions of Unreal Engine. \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/3.3.1-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/3.3.1-release-notes.txt deleted file mode 100644 index 35f68476..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/3.3.1-release-notes.txt +++ /dev/null @@ -1,2 +0,0 @@ -- Support for 4.22, 4.23 and 4.24 versions of Unreal Engine. -- Bug fixes diff --git a/Plugins/GameLiftServerSDK/Release-notes/3.3.2-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/3.3.2-release-notes.txt deleted file mode 100644 index 4c41ecc8..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/3.3.2-release-notes.txt +++ /dev/null @@ -1,2 +0,0 @@ -- Add missing delegate for OnUpdateGameSession -- Deprecate TerminateGameSession API \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/3.3.3-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/3.3.3-release-notes.txt deleted file mode 100644 index 4da80aa6..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/3.3.3-release-notes.txt +++ /dev/null @@ -1 +0,0 @@ -- Support for Unreal Engine 4.25 and 4.25 plus \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/3.4.0-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/3.4.0-release-notes.txt deleted file mode 100644 index 50f76c07..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/3.4.0-release-notes.txt +++ /dev/null @@ -1,4 +0,0 @@ -- Support for Unreal Engine 4.26 -- Support for DescribePlayerSessions API -- Support for GetInstanceCertificate API -- Bug fixes diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.0.2-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.0.2-release-notes.txt deleted file mode 100644 index 7e862539..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.0.2-release-notes.txt +++ /dev/null @@ -1,6 +0,0 @@ -- Support for Unreal Engine 5.1.1 -- Support for Amazon GameLift SDK 5.0 -- Added support for new SDK 5.0 APIs -- Removed APIs no longer supported in SDK 5.0 -- Changed InitSDK to reflect new FServerParameter requirement -- Added additional GameLift ERROR types \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.1.0-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.1.0-release-notes.txt deleted file mode 100644 index ec8ef1e5..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.1.0-release-notes.txt +++ /dev/null @@ -1,5 +0,0 @@ -- Add InitSDK() API with no parameters. This API reads server parameters from environment variables, such as fleet ID, - compute name, WebSocket URL, process ID and auth token. This API simplifies SDK initialization in Amazon GameLift - managed EC2 fleets. For initialization in Amazon GameLift Anywhere fleets, call InitSDK() with the ServerParameters parameter. -- Update ProcessReady() to retain a copy of FProcessParameters. This fixes segfaults that occur when Amazon GameLift C++ SDK - attempts to invoke user callbacks after FProcessParameters is freed in memory. diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.1.1-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.1.1-release-notes.txt deleted file mode 100644 index 8bfbe3ab..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.1.1-release-notes.txt +++ /dev/null @@ -1,2 +0,0 @@ -- Improved the reliability of the SDK by adding automatic reconnection in the event of network interruption. -- Fixed a problem with converting the expiration time returned from GetFleetRoleCredentials. diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.1.2-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.1.2-release-notes.txt deleted file mode 100644 index 61025738..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.1.2-release-notes.txt +++ /dev/null @@ -1,2 +0,0 @@ -- Introduced logging capabilities for the C++ Server SDK; logs are now accessible. -- Improved the reliability of SDK message transmission by implementing more robust reconnection mechanisms in the event of network interruptions or random message drops. \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.2.0-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.2.0-release-notes.txt deleted file mode 100644 index 30010c71..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.2.0-release-notes.txt +++ /dev/null @@ -1,2 +0,0 @@ -- Added support for GameLift container fleets. -- Added the option to initialize the SDK using AWS Region and AWS Credentials, providing an alternative to AuthToken based authentication. \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.3.0-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.3.0-release-notes.txt deleted file mode 100644 index 6b9c09aa..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.3.0-release-notes.txt +++ /dev/null @@ -1,15 +0,0 @@ -- Removes the need to manually download and build the server SDK. The new plugin version now includes the server SDK source code, which is automatically built along with the Unreal project using the Unreal Build Tool. - - CMake is no longer a prerequisite. -- Removes the need to install OpenSSL. The new plugin uses OpenSSL source in the Unreal Engine with static linking. - - When packaging a build for Amazon GameLift Servers, you no longer need to include the libcrypto and libssl files into your game server build. -- Integrates the Unreal cross-compiling toolkit that enables cross-compiled builds on native Windows and Linux. Removes the need for special steps, including the Amazon GameLift Servers toolkit to generate Linux libraries. -- Adds the missing Destroy() action. -- Supports ARM game server builds for UE5. -- Fixes MSVC 5130 Macro Warnings. -- Merges the two Unreal plugins (lightweight and standalone) into one repository. -- Adds or improves client-side validation in all server SDK actions. -- Adds more specific and improved error responses to API errors. -- Fixes an edge case in GetFleetRoleCredentials() that causes game server crash. -- Adds default logic to the onProcessTerminate() callback that terminates the game server process when this callback is invoked. -- Adds idempotency token support to allow InitSDK() retries to succeed. -- Includes autoBackfillMode in the data passed in the OnUpdateGameSession() callback. \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.3.1-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.3.1-release-notes.txt deleted file mode 100644 index ce9c91e8..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.3.1-release-notes.txt +++ /dev/null @@ -1,2 +0,0 @@ -- Support the Unreal Plugin and Server SDK on Unreal Engine 5.6 -- Fix compilation errors when packaging Android client targets. \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.3.2-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.3.2-release-notes.txt deleted file mode 100644 index d238c36a..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.3.2-release-notes.txt +++ /dev/null @@ -1 +0,0 @@ -- Isolate the Asio namespace in the ServerSDK module to improve packaging compatibility with other modules \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Release-notes/5.4.0-release-notes.txt b/Plugins/GameLiftServerSDK/Release-notes/5.4.0-release-notes.txt deleted file mode 100644 index d747a37d..00000000 --- a/Plugins/GameLiftServerSDK/Release-notes/5.4.0-release-notes.txt +++ /dev/null @@ -1,2 +0,0 @@ -- Adds support for publishing built-in and custom telemetry metrics, with pre-built dashboards for visualizing usage data. -- Fixes a potential null pointer exception in the client logging when attempting to re-establish the WebSocket connection. \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Resources/Icon128.png b/Plugins/GameLiftServerSDK/Resources/Icon128.png deleted file mode 100644 index 1231d4aa..00000000 Binary files a/Plugins/GameLiftServerSDK/Resources/Icon128.png and /dev/null differ diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/GameLiftMetrics.Build.cs b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/GameLiftMetrics.Build.cs deleted file mode 100644 index 341246a1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/GameLiftMetrics.Build.cs +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -using UnrealBuildTool; - -public class GameLiftMetrics : ModuleRules -{ - public GameLiftMetrics(ReadOnlyTargetRules Target) : base(Target) - { - PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; - bEnableExceptions = true; - bUseRTTI = false; - - PublicDependencyModuleNames.AddRange( - new string[] - { - "Core", - "GameLiftServerSDK", - } - ); - - PrivateDependencyModuleNames.AddRange( - new string[] - { - "CoreUObject", - "Core", - "Engine", - "Sockets", - "Networking", - } - ); - } -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetrics.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetrics.cpp deleted file mode 100644 index e81b6c4e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetrics.cpp +++ /dev/null @@ -1,319 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include "GameLiftMetrics.h" -#include "GameLiftMetricsTypes.h" -#include "GameLiftMetricsConfig.h" -#include "UnrealStatCollector.h" -#include "TickableCollector.h" - -#include "GameLiftServerSDK.h" -#include "aws/gamelift/server/GameLiftServerAPI.h" - -#include "Sockets.h" -#include "SocketSubsystem.h" -#include "IPAddress.h" -#include "Common/UdpSocketBuilder.h" - -#include - -#if PLATFORM_LINUX -#include -#endif - -FString FGameLiftMetricsModule::CurrentGameSessionId; -FThreadSafeCounter FGameLiftMetricsModule::CurrentPlayerCount(0); - -FGameLiftMetricsModule& FGameLiftMetricsModule::Load() -{ - return FModuleManager::LoadModuleChecked(FName("GameLiftMetrics")); -} - -FGameLiftMetricsModule& FGameLiftMetricsModule::Get() -{ - return FModuleManager::GetModuleChecked(FName("GameLiftMetrics")); -} - -FGameLiftMetricsModule* FGameLiftMetricsModule::GetPtr() -{ - return FModuleManager::GetModulePtr(FName("GameLiftMetrics")); -} - -#if WITH_GAMELIFT_METRICS -namespace -{ - const TCHAR* GAMELIFT_METRICS_FLEET_ID = TEXT("GAMELIFT_SDK_FLEET_ID"); - const TCHAR* GAMELIFT_METRICS_PROCESS_ID = TEXT("GAMELIFT_SDK_PROCESS_ID"); - - GAMELIFT_METRICS_DECLARE_GAUGE(MetricMaxPlayers, "server_max_players", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DEFINE_GAUGE(MetricMaxPlayers); - - GAMELIFT_METRICS_DECLARE_GAUGE(MetricPlayers, "server_players", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DEFINE_GAUGE(MetricPlayers); - - GAMELIFT_METRICS_DECLARE_COUNTER(MetricServerCrashes, "game_server_crashes", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DEFINE_COUNTER(MetricServerCrashes); -} - -void FGameLiftMetricsModule::StartupModule() {} - -void FGameLiftMetricsModule::ShutdownModule() -{ - // Terminate here just in case the user forgot. - Terminate(); -} - -void FGameLiftMetricsModule::StartMetricsCollector() -{ - FPlatformMisc::SetCrashHandler(&FGameLiftMetricsModule::CrashHandler); - - bMetricsRunning = true; - - auto *Module = FGameLiftMetricsModule::GetPtr(); - if (!Module) - { - UE_LOG(LogGameLiftMetrics, Error, TEXT("GameLiftMetrics module no longer loaded.")); - return; - } - - /* - * Begin ticking the collector. - */ - const bool bComputeFallbackGameThreadTime = !STATS; - Module->Collector.Reset(new FTickableCollector(bComputeFallbackGameThreadTime)); - - /* - * Create stats collector. - */ - if (STATS) - { - Module->UnrealStatCollector = TSharedPtr(new FUnrealStatCollector()); - Module->UnrealStatCollector->Subscribe(); - } - - UE_LOG(LogGameLiftMetrics, Log, TEXT("GameLift metrics initialized successfully.")); -} - -void FGameLiftMetricsModule::Initialize() -{ - if (GIsEditor) return; - - // Initialize GameLift Server SDK metrics - auto& ServerSDKModule = FModuleManager::LoadModuleChecked("GameLiftServerSDK"); - auto InitResult = ServerSDKModule.InitMetrics(); - if (!InitResult.IsSuccess()) - { - UE_LOG(LogGameLiftMetrics, Error, TEXT("Failed to initialize GameLift metrics: %s"), *InitResult.GetError().m_errorMessage); - return; - } - - StartMetricsCollector(); -} - -void FGameLiftMetricsModule::Initialize(const FMetricsParameters& metricsParameters) -{ - if (GIsEditor) return; - - // Initialize GameLift Server SDK metrics with parameters - auto& ServerSDKModule = FModuleManager::LoadModuleChecked("GameLiftServerSDK"); - auto InitResult = ServerSDKModule.InitMetrics(metricsParameters); - if (!InitResult.IsSuccess()) - { - UE_LOG(LogGameLiftMetrics, Error, TEXT("Failed to initialize GameLift metrics with parameters: %s"), *InitResult.GetError().m_errorMessage); - return; - } - - StartMetricsCollector(); -} - -void FGameLiftMetricsModule::Terminate() -{ - if (GIsEditor) { return; } - - if (UnrealStatCollector) - { - UnrealStatCollector->Unsubscribe(); - UnrealStatCollector.Reset(); - } - - Collector.Reset(); - - UE_LOG(LogGameLiftMetrics, Log, TEXT("GameLift metrics terminated successfully.")); -} - -void FGameLiftMetricsModule::OnStartGameSession(const Aws::GameLift::Server::Model::GameSession& Session) -{ - if (GIsEditor) { return; } - - // Store the session ID regardless of metrics being enabled - CurrentGameSessionId = FString(Session.GetGameSessionId()); - CurrentPlayerCount.Set(0); - - const UGameLiftMetricsConfig& Config = UGameLiftMetricsConfig::Get(); - if (!Config.bEnableMetrics) - { - UE_LOG(LogGameLiftMetrics, Verbose, TEXT("Metrics disabled: Skipping OnStartGameSession metrics")); - return; - } - - GAMELIFT_METRICS_SET(MetricMaxPlayers, Session.GetMaximumPlayerSessionCount()); - GAMELIFT_METRICS_RESET(MetricPlayers); -} - -void FGameLiftMetricsModule::OnAcceptPlayerSession() -{ - if (GIsEditor) { return; } - - // Always track player count even if metrics are disabled - int32 NewPlayerCount = CurrentPlayerCount.Increment(); - - const UGameLiftMetricsConfig& Config = UGameLiftMetricsConfig::Get(); - if (!Config.bEnableMetrics) - { - return; - } - - GAMELIFT_METRICS_SET(MetricPlayers, NewPlayerCount); -} - -void FGameLiftMetricsModule::OnRemovePlayerSession() -{ - if (GIsEditor) { return; } - - // Always track player count even if metrics are disabled - int32 NewPlayerCount = CurrentPlayerCount.Decrement(); - if (NewPlayerCount < 0) - { - CurrentPlayerCount.Set(0); - NewPlayerCount = 0; - } - - const UGameLiftMetricsConfig& Config = UGameLiftMetricsConfig::Get(); - if (!Config.bEnableMetrics) - { - return; - } - - GAMELIFT_METRICS_SET(MetricPlayers, NewPlayerCount); -} - -void FGameLiftMetricsModule::ReEmitMetrics() -{ - if (GIsEditor) { return; } - - const UGameLiftMetricsConfig& Config = UGameLiftMetricsConfig::Get(); - if (!Config.bEnableMetrics) - { - return; - } - - GAMELIFT_METRICS_SET(MetricPlayers, CurrentPlayerCount.GetValue()); -} - -void FGameLiftMetricsModule::CrashHandler(const FGenericCrashContext& GenericContext) -{ - UE_LOG(LogGameLiftMetrics, Log, TEXT("Server crashed, CrashHandler being called...")); - - const UGameLiftMetricsConfig& Config = UGameLiftMetricsConfig::Get(); - if (!Config.bEnableMetrics) - { - UE_LOG(LogGameLiftMetrics, Log, TEXT("Metrics disabled: Skipping crash metrics")); - return; - } - - if (!CurrentGameSessionId.IsEmpty()) - { - UE_LOG(LogGameLiftMetrics, Log, TEXT("Incrementing crash metrics for session: %s"), *CurrentGameSessionId); - GAMELIFT_METRICS_INCREMENT(MetricServerCrashes); - GAMELIFT_METRICS_TAG_SET(MetricServerCrashes, "game_session_id", TCHAR_TO_UTF8(*CurrentGameSessionId)); - UE_LOG(LogGameLiftMetrics, Log, TEXT("Crash metrics incremented")); - - // Force process the metrics - UE_LOG(LogGameLiftMetrics, Log, TEXT("Sending crash metrics...")); - Aws::GameLift::Metrics::MetricsProcess(); - - // Small sleep to allow the metrics to be sent - UE_LOG(LogGameLiftMetrics, Log, TEXT("Waiting for metrics to send...")); - FPlatformProcess::Sleep(0.2f); - - UE_LOG(LogGameLiftMetrics, Log, TEXT("Crash metrics incremented and processed")); - } - else - { - UE_LOG(LogGameLiftMetrics, Warning, TEXT("Server crashed with no active game session")); - } -} - -bool FGameLiftMetricsModule::SetMetricsEnabled(bool bEnable) -{ - if (GIsEditor) - { - UE_LOG(LogGameLiftMetrics, Warning, TEXT("Cannot enable/disable metrics in editor - only applicable in game server")); - return false; - } - - // If the state is already what's requested, no change needed - if (bEnable == bMetricsRunning) - { - UE_LOG(LogGameLiftMetrics, Log, TEXT("Metrics already %s, no change needed"), - bEnable ? TEXT("enabled") : TEXT("disabled")); - return true; - } - // Get current configuration and check current state - UGameLiftMetricsConfig* Config = const_cast(&UGameLiftMetricsConfig::Get()); - - if (bEnable) - { - // Enable metrics - UE_LOG(LogGameLiftMetrics, Log, TEXT("Enabling GameLift metrics at runtime")); - - // Initialize with default parameters - Initialize(); - - // Flag is set inside Initialize method based on success - return bMetricsRunning; - } - else - { - // Disable metrics - UE_LOG(LogGameLiftMetrics, Log, TEXT("Disabling GameLift metrics at runtime")); - - // Terminate metrics system - Terminate(); - Config->bEnableMetrics = false; - bMetricsRunning = false; - return true; - } -} - -bool FGameLiftMetricsModule::IsMetricsEnabled() const -{ - return bMetricsRunning; -} - -#else - -void FGameLiftMetricsModule::StartupModule() {} -void FGameLiftMetricsModule::ShutdownModule() {} -void FGameLiftMetricsModule::Initialize() {} -void FGameLiftMetricsModule::Initialize(const FMetricsParameters& metricsParameters) {} -void FGameLiftMetricsModule::Terminate() {} -void FGameLiftMetricsModule::OnStartGameSession(const Aws::GameLift::Server::Model::GameSession& Session) {} -void FGameLiftMetricsModule::OnAcceptPlayerSession() {} -void FGameLiftMetricsModule::OnRemovePlayerSession() {} -void FGameLiftMetricsModule::ReEmitMetrics() {} -bool FGameLiftMetricsModule::SetMetricsEnabled(bool bEnable) { return false; } -bool FGameLiftMetricsModule::IsMetricsEnabled() const { return false; } - -#endif // WITH_GAMELIFT_METRICS - -IMPLEMENT_MODULE(FGameLiftMetricsModule, GameLiftMetrics) diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetricsConfig.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetricsConfig.cpp deleted file mode 100644 index 9663f33c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetricsConfig.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include "GameLiftMetricsConfig.h" - - -const UGameLiftMetricsConfig& UGameLiftMetricsConfig::Get() -{ - UGameLiftMetricsConfig* CDO = Cast(StaticClass()->GetDefaultObject()); - check(IsValid(CDO)); - return *CDO; -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetricsTypes.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetricsTypes.cpp deleted file mode 100644 index 0dd1c9bd..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/GameLiftMetricsTypes.cpp +++ /dev/null @@ -1,15 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include "GameLiftMetricsTypes.h" - -DEFINE_LOG_CATEGORY(LogGameLiftMetrics); diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/MemoryStats.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/MemoryStats.cpp deleted file mode 100644 index 66cdff06..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/MemoryStats.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include "MemoryStats.h" - -#include "Engine.h" -#include "EngineStats.h" - -namespace Aws { -namespace GameLift { -namespace Metrics { - GAMELIFT_METRICS_DEFINE_GAUGE(MetricMemoryPhysicalTotal); - GAMELIFT_METRICS_DEFINE_GAUGE(MetricMemoryPhysicalAvailable); - GAMELIFT_METRICS_DEFINE_GAUGE(MetricMemoryPhysicalUsed); - - GAMELIFT_METRICS_DEFINE_GAUGE(MetricMemoryVirtualTotal); - GAMELIFT_METRICS_DEFINE_GAUGE(MetricMemoryVirtualAvailable); - GAMELIFT_METRICS_DEFINE_GAUGE(MetricMemoryVirtualUsed); -} -} -} - -void FMemoryStats::Collect() -{ - auto MemoryStats = FPlatformMemory::GetStats(); - - GAMELIFT_METRICS_SET(Aws::GameLift::Metrics::MetricMemoryPhysicalTotal, MemoryStats.TotalPhysical); - GAMELIFT_METRICS_SET(Aws::GameLift::Metrics::MetricMemoryPhysicalAvailable, MemoryStats.AvailablePhysical); - GAMELIFT_METRICS_SET(Aws::GameLift::Metrics::MetricMemoryPhysicalUsed, MemoryStats.UsedPhysical); - GAMELIFT_METRICS_SET(Aws::GameLift::Metrics::MetricMemoryVirtualTotal, MemoryStats.TotalVirtual); - GAMELIFT_METRICS_SET(Aws::GameLift::Metrics::MetricMemoryVirtualAvailable, MemoryStats.AvailableVirtual); - GAMELIFT_METRICS_SET(Aws::GameLift::Metrics::MetricMemoryVirtualUsed, MemoryStats.UsedVirtual); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/MemoryStats.h b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/MemoryStats.h deleted file mode 100644 index 4e9087a5..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/MemoryStats.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#pragma once - -#include "GameLiftMetricsTypes.h" - -namespace Aws { -namespace GameLift { -namespace Metrics { - GAMELIFT_METRICS_DECLARE_GAUGE(MetricMemoryPhysicalTotal, "server_mem_physical_total", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DECLARE_GAUGE(MetricMemoryPhysicalAvailable, "server_mem_physical_available", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DECLARE_GAUGE(MetricMemoryPhysicalUsed, "server_mem_physical_used", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - - GAMELIFT_METRICS_DECLARE_GAUGE(MetricMemoryVirtualTotal, "server_mem_virtual_total", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DECLARE_GAUGE(MetricMemoryVirtualAvailable, "server_mem_virtual_available", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DECLARE_GAUGE(MetricMemoryVirtualUsed, "server_mem_virtual_used", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); -} -} -} - -class FMemoryStats -{ -public: - void Collect(); -}; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/NetworkStats.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/NetworkStats.cpp deleted file mode 100644 index 691f01eb..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/NetworkStats.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include "NetworkStats.h" - -#include "Engine/NetDriver.h" -#include "Engine.h" - -namespace Aws { -namespace GameLift { -namespace Metrics { - GAMELIFT_METRICS_DEFINE_GAUGE(MetricConnectionCount); - - GAMELIFT_METRICS_DEFINE_COUNTER(MetricBytesIn); - GAMELIFT_METRICS_DEFINE_COUNTER(MetricBytesOut); - GAMELIFT_METRICS_DEFINE_COUNTER(MetricPacketsIn); - GAMELIFT_METRICS_DEFINE_COUNTER(MetricPacketsInLost); - GAMELIFT_METRICS_DEFINE_COUNTER(MetricPacketsOut); - GAMELIFT_METRICS_DEFINE_COUNTER(MetricPacketsOutLost); -} -} -} - -FNetworkStats::FNetworkStats() -{ - if (auto NetDriver = GetNetDriver()) - { - LastInBytes = NetDriver->InTotalBytes; - LastOutBytes = NetDriver->OutTotalBytes; - LastInPackets = NetDriver->InTotalPackets; - LastOutPackets = NetDriver->OutTotalPackets; - LastInPacketsLost = NetDriver->InTotalPacketsLost; - LastOutPacketsLost = NetDriver->OutTotalPacketsLost; - } -} - -void FNetworkStats::Collect() -{ - if (auto NetDriver = GetNetDriver()) - { - GAMELIFT_METRICS_ADD(Aws::GameLift::Metrics::MetricBytesIn, NetDriver->InTotalBytes - LastInBytes); - GAMELIFT_METRICS_ADD(Aws::GameLift::Metrics::MetricBytesOut, NetDriver->OutTotalBytes - LastOutBytes); - GAMELIFT_METRICS_ADD(Aws::GameLift::Metrics::MetricPacketsIn, NetDriver->InTotalPackets - LastInPackets); - GAMELIFT_METRICS_ADD(Aws::GameLift::Metrics::MetricPacketsOut, NetDriver->OutTotalPackets - LastOutPackets); - GAMELIFT_METRICS_ADD(Aws::GameLift::Metrics::MetricPacketsInLost, NetDriver->InTotalPacketsLost - LastInPacketsLost); - GAMELIFT_METRICS_ADD(Aws::GameLift::Metrics::MetricPacketsOutLost, NetDriver->OutTotalPacketsLost - LastOutPacketsLost); - - LastInBytes = NetDriver->InTotalBytes; - LastOutBytes = NetDriver->OutTotalBytes; - LastInPackets = NetDriver->InTotalPackets; - LastOutPackets = NetDriver->OutTotalPackets; - LastInPacketsLost = NetDriver->InTotalPacketsLost; - LastOutPacketsLost = NetDriver->OutTotalPacketsLost; - - GAMELIFT_METRICS_SET(Aws::GameLift::Metrics::MetricConnectionCount, NetDriver->ClientConnections.Num()); - } - else - { - UE_LOG(LogGameLiftMetrics, Error, TEXT("Net driver is null. Cannot log network metrics.")); - } -} - -const UNetDriver* FNetworkStats::GetNetDriver() const -{ - UEngine* Engine = GEngine; - if (!IsValid(Engine)) - { - UE_LOG(LogGameLiftMetrics, Error, TEXT("Engine pointer is not valid when retrieving net driver.")); - return nullptr; - } - - const auto& WorldContexts = Engine->GetWorldContexts(); - if (WorldContexts.Num() == 0) - { - // no worlds are loaded - // generally can only be true before everything is fully initialized - UE_LOG(LogGameLiftMetrics, Error, TEXT("No world is loaded when retrieving net driver.")); - return nullptr; - } - - // Only one world context should be present outside Editor. - // (editor has multiple) - // Refer to FWorldContext comment in Engine.h - const FWorldContext& WorldContext = WorldContexts[0]; - check(WorldContext.WorldType == EWorldType::Game); - - // In theory multiple net drivers might be present. - // One will be for gameplay but additional ones might be opened for non-gameplay traffic. - // Might be null during initialisation. - if (WorldContext.ActiveNetDrivers.Num() == 0) - { - UE_LOG(LogGameLiftMetrics, Error, TEXT("No active net drivers. Cannot acquire network metrics.")); - return nullptr; - } - - return WorldContext.ActiveNetDrivers[0].NetDriver; -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/NetworkStats.h b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/NetworkStats.h deleted file mode 100644 index 572fe416..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/NetworkStats.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#pragma once - -#include "GameLiftMetricsTypes.h" - -class UNetDriver; - -namespace Aws { -namespace GameLift { -namespace Metrics { - GAMELIFT_METRICS_DECLARE_GAUGE(MetricConnectionCount, "server_connections", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - - GAMELIFT_METRICS_DECLARE_COUNTER(MetricBytesIn, "server_bytes_in", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DECLARE_COUNTER(MetricBytesOut, "server_bytes_out", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - - GAMELIFT_METRICS_DECLARE_COUNTER(MetricPacketsIn, "server_packets_in", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DECLARE_COUNTER(MetricPacketsInLost, "server_packets_in_lost", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - - GAMELIFT_METRICS_DECLARE_COUNTER(MetricPacketsOut, "server_packets_out", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); - GAMELIFT_METRICS_DECLARE_COUNTER(MetricPacketsOutLost, "server_packets_out_lost", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); -} -} -} - -class FNetworkStats -{ -public: - FNetworkStats(); - - void Collect(); - -private: - const UNetDriver* GetNetDriver() const; - -private: - int32 LastInBytes = 0; - int32 LastOutBytes = 0; - int32 LastInPackets = 0; - int32 LastOutPackets = 0; - int32 LastInPacketsLost = 0; - int32 LastOutPacketsLost = 0; -}; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TickableCollector.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TickableCollector.cpp deleted file mode 100644 index 7eb914ee..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TickableCollector.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include "TickableCollector.h" -#include "TimeStats.h" -#include "GameLiftMetrics.h" - -#include "Misc/App.h" - -namespace Aws { -namespace GameLift { -namespace Metrics { - GAMELIFT_METRICS_DEFINE_GAUGE(MetricServerUp); -} -} -} - -#if WITH_GAMELIFT_METRICS -void FTickableCollector::Tick(float) -{ - GAMELIFT_METRICS_SET(Aws::GameLift::Metrics::MetricServerUp, 1); - - NetworkStats.Collect(); - MemoryStats.Collect(); - - const double DeltaTime = FApp::GetDeltaTime(); - GAMELIFT_METRICS_SET_SEC(Aws::GameLift::Metrics::MetricGameDeltaTime, DeltaTime); - if (bComputeFallbackGameThreadTime) - { - const double EstimatedGameThreadTime = DeltaTime - FApp::GetIdleTime(); - GAMELIFT_METRICS_SET_SEC(Aws::GameLift::Metrics::MetricGameTickTime, EstimatedGameThreadTime); - } - - // Re-emit specific metrics so that they don't go stale. - // Grafana reports no data for the metric after 5 minutes of it being stale. - FGameLiftMetricsModule::Get().ReEmitMetrics(); - - Aws::GameLift::Metrics::MetricsProcess(); -} -#else -void FTickableCollector::Tick(float) {} -#endif // WITH_GAMELIFT_METRICS - - -TStatId FTickableCollector::GetStatId() const -{ - return TStatId{}; -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TickableCollector.h b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TickableCollector.h deleted file mode 100644 index 67b672b6..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TickableCollector.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#pragma once - -#include "CoreMinimal.h" -#include "Tickable.h" - -#include "GameLiftMetricsTypes.h" - -#include "NetworkStats.h" -#include "MemoryStats.h" - - -namespace Aws { -namespace GameLift { -namespace Metrics { - GAMELIFT_METRICS_DECLARE_GAUGE(MetricServerUp, "server_up", Aws::GameLift::Metrics::Server, Aws::GameLift::Metrics::SampleAll()); -} -} -} - -class FTickableCollector : public FTickableGameObject -{ -public: - FTickableCollector(bool bComputeFallbackGameThreadTime) - : bComputeFallbackGameThreadTime(bComputeFallbackGameThreadTime) {} - - // FTickableGameObject - virtual void Tick(float) override; - - virtual bool IsTickable() const override { return true; } - - virtual bool IsTickableWhenPaused() const override { return true; } - virtual bool IsTickableInEditor() const override { return false; } - virtual ETickableTickType GetTickableTickType() const override { return ETickableTickType::Always; } - virtual TStatId GetStatId() const override; - // ~FTickableGameObject - -private: - bool bComputeFallbackGameThreadTime = false; - FNetworkStats NetworkStats; - FMemoryStats MemoryStats; -}; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TimeStats.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TimeStats.cpp deleted file mode 100644 index 81789d9e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TimeStats.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include "TimeStats.h" - -namespace Aws { -namespace GameLift { -namespace Metrics { - GAMELIFT_METRICS_DEFINE_TIMER(MetricGameDeltaTime); - - GAMELIFT_METRICS_DEFINE_TIMER(MetricGameTickTime); - GAMELIFT_METRICS_DEFINE_TIMER(MetricWorldTickTime); -} -} -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TimeStats.h b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TimeStats.h deleted file mode 100644 index d1e32713..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/TimeStats.h +++ /dev/null @@ -1,74 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#pragma once - -#include "GameLiftMetricsTypes.h" - -namespace Aws { -namespace GameLift { -namespace Metrics { - /** - * Server time-step in milliseconds. - * - * This is the time between consecutive ticks. - * - * When the server is under performing, this will exceed the target tick rate, - * otherwise it should hover in its vicinity. - * - * To compute the tick rate, compute the reciprocal: (1000 / server_delta_time) - */ - GAMELIFT_METRICS_DECLARE_TIMER( - MetricGameDeltaTime, "server_delta_time", - Aws::GameLift::Metrics::Server, - Aws::GameLift::Metrics::SampleAll(), - Aws::GameLift::Metrics::Percentiles(0.5, 0.9, 0.95) - ); - - /** - * The time it takes to process a single tick. - * - * A subset of delta time. - * server_tick_time <= server_delta_time at all times. Typically (much) smaller. - * - * This is the time it takes to actually process the tick. The remaining - * time-step duration is spent waiting for the next tick. - */ - GAMELIFT_METRICS_DECLARE_TIMER( - MetricGameTickTime, "server_tick_time", - Aws::GameLift::Metrics::Server, - Aws::GameLift::Metrics::SampleAll(), - Aws::GameLift::Metrics::Percentiles(0.5, 0.9, 0.95) - ); - - /** - * The time it takes to process the world update. - * - * A subset of tick time. - * - * This is the time it takes to process the Actors and Blueprints in the - * currently loaded Map. The remainder of server_tick_time is spent in - * other engine subsystems like network replication or physics. - * - * Only available in Debug or Development builds, or Shipping builds with - * USE_FORCE_STATS=1. - */ - GAMELIFT_METRICS_DECLARE_TIMER( - MetricWorldTickTime, - "server_world_tick_time", - Aws::GameLift::Metrics::Server, - Aws::GameLift::Metrics::SampleAll(), - Aws::GameLift::Metrics::Percentiles(0.5, 0.9, 0.95) - ); -} -} -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/UnrealStatCollector.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/UnrealStatCollector.cpp deleted file mode 100644 index fb81c6a3..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/UnrealStatCollector.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include "UnrealStatCollector.h" - -#include "Runtime/Launch/Resources/Version.h" - -#include "TimeStats.h" - -#include "Async/TaskGraphInterfaces.h" -#include "Stats/Stats.h" -#include "Stats/StatsData.h" -#include "EngineStats.h" - - -#if STATS -namespace -{ -#if ENGINE_MAJOR_VERSION >= 5 - void IncrementStatsRefCount() - { - StatsPrimaryEnableAdd(); - } - - void DecrementStatsRefCount() - { - StatsPrimaryEnableSubtract(); - } -#else - void IncrementStatsRefCount() - { - StatsMasterEnableAdd(); - } - - void DecrementStatsRefCount() - { - StatsMasterEnableSubtract(); - } -#endif -} - -void FUnrealStatCollector::Subscribe() -{ - IncrementStatsRefCount(); - -/* - * From 5.2.0 onwards, UE_STATS_THREAD_AS_PIPE is undefined and the only way to - * access the stat system is via the new API. - * - * Between 5.0.0 and 5.2.0, UE_STATS_THREAD_AS_PIPE enables new API. If it is 0, - * the old API can be used. - * - * See UE engine source commits 10b5e05d00df4f23d3b75f6af5ec08f8ae0e8618 - * 327a94d1a4e021714f2c3ca820fe9ed5606465bf - * d48f6660b807c7377926cffd12020645f91772f8 - * - * All references to UE_STATS_THREAD_AS_PIPE are removed in - * d48f6660b807c7377926cffd12020645f91772f8. - */ -#if ENGINE_MAJOR_VERSION >= 5 && (ENGINE_MINOR_VERSION >= 2 || UE_STATS_THREAD_AS_PIPE) - { - auto& StatsState = FStatsThreadState::GetLocalState(); - StatsState.NewFrameDelegate.AddSP(this, &FUnrealStatCollector::OnNewFrame); - } -#else - FSimpleDelegateGraphTask::CreateAndDispatchWhenReady - ( - FSimpleDelegateGraphTask::FDelegate::CreateLambda( - [WeakCollector = TWeakPtr(this->AsShared())]() { - if (!WeakCollector.IsValid()) { return; } - - auto& StatsState = FStatsThreadState::GetLocalState(); - StatsState.NewFrameDelegate.AddSP(WeakCollector.Pin().Get(), &FUnrealStatCollector::OnNewFrame); - } - ), - TStatId{}, - nullptr, - /* - * StatsThread is deprecated since 5.0 - * - * Need to verify post-5.0 behaviour but: - * - 4.27 to 5.0 should use the current method to subscribe to NewFrameDelegate - * - 5.0 on can subscribe from game thread directly. (See FThreadStats::bUseThreadAsPipe) - */ - ENamedThreads::StatsThread - ); -#endif // UE_STATS_THREAD_AS_PIPE -} - -void FUnrealStatCollector::Unsubscribe() -{ - DecrementStatsRefCount(); -} - -void FUnrealStatCollector::OnNewFrame(int64 Frame) -{ - TArray OutStats; - - auto& Stats = FStatsThreadState::GetLocalState(); - Stats.GetInclusiveAggregateStackStats(Frame, OutStats); - - for (auto& Message : OutStats) - { - // GetShortName() is expensive and we're calling it for every stat. - // In practice: we'll stick filter by GetRawName first and stick things in a hashmap - // might also be able to compare FName indices - FName ShortName = Message.NameAndInfo.GetShortName(); - - // Robustness: we can check the value type from message before blindly grabbing duration (or other types) - - // Consult EngineStats.h for stat names - // (There's also many other stats in other subsystems.) - if (ShortName == TEXT("STAT_GameEngineTick")) - { - GAMELIFT_METRICS_SET_MS(Aws::GameLift::Metrics::MetricGameTickTime, FPlatformTime::ToMilliseconds(Message.GetValue_Duration())); - } - else if (ShortName == TEXT("STAT_WorldTickTime")) - { - GAMELIFT_METRICS_SET_MS(Aws::GameLift::Metrics::MetricWorldTickTime, FPlatformTime::ToMilliseconds(Message.GetValue_Duration())); - } - } -} -#else -void FUnrealStatCollector::Subscribe() {} -void FUnrealStatCollector::Unsubscribe() {} -void FUnrealStatCollector::OnNewFrame(int64 Frame) {} -#endif // STATS diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/UnrealStatCollector.h b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/UnrealStatCollector.h deleted file mode 100644 index 3c50012e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Private/UnrealStatCollector.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#pragma once - -#include "CoreMinimal.h" - -class FUnrealStatCollector : public TSharedFromThis -{ -public: - /** - * Subscribes to NewFrameDelegate in Unreal stats system. - */ - void Subscribe(); - - /** - * Unsubscribes from NewFrameDelegate in Unreal stats system. - */ - void Unsubscribe(); - - void OnNewFrame(int64 Frame); -}; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetrics.h b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetrics.h deleted file mode 100644 index 6ccc19d2..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetrics.h +++ /dev/null @@ -1,125 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#pragma once - -#include "CoreMinimal.h" -#include "Modules/ModuleManager.h" - -#include "GameLiftMetricsTypes.h" - -#include - -// Forward declarations -struct FMetricsParameters; - -class FSocket; -class FUnrealStatCollector; -class FTickableCollector; -class UGameLiftMetricsConfig; - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - class GameSession; -} // Model -} // Server -} // GameLift -} // Aws - -class GAMELIFTMETRICS_API FGameLiftMetricsModule : public IModuleInterface -{ -public: - // IModuleInterface - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - virtual bool SupportsDynamicReloading() override { return false; } - virtual bool SupportsAutomaticShutdown() override { return true; } - // ~IModuleInterface - - static FGameLiftMetricsModule& Load(); - static FGameLiftMetricsModule& Get(); - static FGameLiftMetricsModule* GetPtr(); - - /** - * Initialize GameLift Metrics using default configuration. These - * may be overriden by environment variables. - */ - void Initialize(); - - /** - * Initialize GameLift Metrics with metrics parameters. - * - * @param metricsParameters Metrics parameters to use. - */ - void Initialize(const FMetricsParameters& metricsParameters); - - /** - * Terminate the GameLift Metrics SDK. - */ - void Terminate(); - - /** - * Enable or disable metrics at runtime. - * If metrics were previously disabled, this will initialize the metrics system. - * If metrics were previously enabled, this will terminate the metrics system. - * - * @param bEnable Whether to enable or disable metrics - * @return True if the operation was successful - */ - bool SetMetricsEnabled(bool bEnable); - - /** - * Check if metrics are currently enabled and running - * - * @return True if metrics are currently enabled and running - */ - bool IsMetricsEnabled() const; - - /** - * Records a new game session. - * Call when starting a new session from the FProcessSettings::OnStartGameSession callback. - */ - void OnStartGameSession(const Aws::GameLift::Server::Model::GameSession&); - - /** - * Records a new player session. - * - * Call when accepting a player session. - */ - void OnAcceptPlayerSession(); - - /** - * Records a removed player session. - * - * Call when removing a player session. - */ - void OnRemovePlayerSession(); - -private: - void StartMetricsCollector(); - - TSharedPtr Socket; - TUniquePtr Collector; - TSharedPtr UnrealStatCollector; - static FString CurrentGameSessionId; - static FThreadSafeCounter CurrentPlayerCount; - bool bMetricsRunning = false; // Tracks if metrics are currently running - - static void CrashHandler(const FGenericCrashContext& Context); - - void ReEmitMetrics(); - - friend class FTickableCollector; -}; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetricsConfig.h b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetricsConfig.h deleted file mode 100644 index 8671cb0b..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetricsConfig.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#pragma once - -#include "CoreMinimal.h" - -#include "GameLiftMetricsConfig.generated.h" - -/** - * GameLift Metrics module configuration. - * - * Can be configured in `DefaultGame.ini`: - * ``` - * [/Script/GameLiftMetricsUnreal.GameLiftMetricsConfig] - * CollectorHost = "127.0.0.1" - * CollectorPort = 8125 - * MaxPacketSize = 2048 - * CaptureIntervalSeconds = 10 - * bEnableMetrics = true - * ``` - */ -UCLASS(config=Game, defaultconfig) -class GAMELIFTMETRICS_API UGameLiftMetricsConfig : public UObject -{ - GENERATED_BODY() - -public: - UGameLiftMetricsConfig() = default; - - /** - * Returns the current configuration. - */ - static const UGameLiftMetricsConfig& Get(); - - /** - * Whether metrics collection is enabled. - * When disabled, no metrics will be collected or sent. - */ - UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="GameLift Metrics") - bool bEnableMetrics = true; - - /** - * Host to send metrics to. - */ - UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="GameLift Metrics") - FString CollectorHost = TEXT("127.0.0.1"); - - /** - * UDP port number to send metrics to. - */ - UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="GameLift Metrics") - int32 CollectorPort = 8125; - - /** - * Metrics capture interval before sending data to the collector. - */ - UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="GameLift Metrics") - float CaptureIntervalSeconds = 10.0f; - - /** - * Maximum UDP packet size. - * - * Typical MTU for Internet packets is 1500 bytes. - * We set the default to 1472, leaving room for headers. - * - * For use with collector on same machine or with AWS jumbo packets this value can be bumped up past 1500 bytes. - */ - UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="GameLift Metrics") - int32 MaxPacketSize = 1472; -}; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetricsTypes.h b/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetricsTypes.h deleted file mode 100644 index b7c52487..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftMetrics/Public/GameLiftMetricsTypes.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#pragma once - -#include "CoreMinimal.h" - -#include - -DECLARE_LOG_CATEGORY_EXTERN(LogGameLiftMetrics, Log, All); - -#define WITH_GAMELIFT_METRICS (WITH_GAMELIFT && UE_SERVER) - -namespace Aws { -namespace GameLift { -namespace Metrics { - /** - * Logs in all server builds. - */ - GAMELIFT_METRICS_DEFINE_PLATFORM_API(GAMELIFTMETRICS_API, Server, WITH_GAMELIFT_METRICS && UE_SERVER); - - /** - * Logs in all development or debug server builds. - */ - GAMELIFT_METRICS_DEFINE_PLATFORM_API(GAMELIFTMETRICS_API, ServerDevelopment, WITH_GAMELIFT_METRICS && UE_SERVER && (UE_BUILD_DEVELOPMENT || UE_BUILD_DEBUG)); - - /** - * Logs only in debug builds. - */ - GAMELIFT_METRICS_DEFINE_PLATFORM_API(GAMELIFTMETRICS_API, ServerDebug, WITH_GAMELIFT_METRICS && UE_SERVER && UE_BUILD_DEBUG); -} // Metrics -} // GameLift -} // Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/GameLiftServerSDK.Build.cs b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/GameLiftServerSDK.Build.cs deleted file mode 100644 index bfc54596..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/GameLiftServerSDK.Build.cs +++ /dev/null @@ -1,86 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -using System.IO; -using UnrealBuildTool; - - -public class GameLiftServerSDK : ModuleRules -{ - public GameLiftServerSDK(ReadOnlyTargetRules Target) : base(Target) - { - PrivateDependencyModuleNames.AddRange(new string[] { "Core", "Projects", "OpenSSL" }); - PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; - bEnableExceptions = true; - bUseRTTI = true; - - // Disable windows min/max macros - PublicDefinitions.Add("NOMINMAX"); - - if (Target.Type == TargetRules.TargetType.Server) - { - PublicDefinitions.Add("WITH_GAMELIFT=1"); - } - else - { - PublicDefinitions.Add("WITH_GAMELIFT=0"); - } - - // Isolate asio namespace to improve packaging compatibility with other modules - PrivateDefinitions.Add("asio=gamelift_asio"); - PrivateDefinitions.Add("asio_signal_handler=gamelift_asio_signal_handler"); - - PrivateDefinitions.Add("AWS_GAMELIFT_EXPORTS"); - PrivateDefinitions.Add("ASIO_STANDALONE=1"); - PublicDefinitions.Add("SPDLOG_NO_EXCEPTIONS"); - - // std::invoke_result replaces std::result_of for C++17 and later - // Asio only auto-detects this for MSVC, so override for all compilers - if (Target.CppStandard >= CppStandardVersion.Cpp17) { - PrivateDefinitions.Add("ASIO_HAS_STD_INVOKE_RESULT"); - } - - PrivateDefinitions.Add("USE_IMPORT_EXPORT=1"); - if (Target.Platform == UnrealTargetPlatform.Win64) - { - PrivateDefinitions.Add("_WEBSOCKETPP_CPP11_STRICT_=1"); - PrivateDefinitions.Add("SPDLOG_WCHAR_TO_UTF8_SUPPORT=1"); - PrivateDefinitions.AddRange(new string[] { - "_WIN32_WINNT_WIN10_TH2=0x0A00", - "_WIN32_WINNT_WIN10_RS1=0x0A00", - "_WIN32_WINNT_WIN10_RS2=0x0A00", - "_WIN32_WINNT_WIN10_RS3=0x0A00", - "_WIN32_WINNT_WIN10_RS4=0x0A00", - "_WIN32_WINNT_WIN10_RS5=0x0A00", - }); - } - else if (Target.Platform == UnrealTargetPlatform.Linux || Target.Platform == UnrealTargetPlatform.LinuxArm64) - { - PrivateDefinitions.Add("ASIO_DISABLE_CO_AWAIT"); - PrivateDefinitions.Add("RAPIDJSON_NOMEMBERITERATORCLASS"); - } - - string SpdlogPath = Path.Combine(ModuleDirectory, "../../ThirdParty/spdlog/include"); - string SpdlogSrcPath = Path.Combine(ModuleDirectory, "../../ThirdParty/spdlog/src"); - string RapidJSONPath = Path.Combine(ModuleDirectory, "../../ThirdParty/rapidjson/include"); - string AsioPath = Path.Combine(ModuleDirectory, "../../ThirdParty/asio/include"); - string WebSocketPPPath = Path.Combine(ModuleDirectory, "../../ThirdParty/websocketpp"); - string ConcurrentQueuePath = Path.Combine(ModuleDirectory, "../../ThirdParty/concurrentqueue"); - - PublicIncludePaths.Add(SpdlogPath); - PublicIncludePaths.Add(SpdlogSrcPath); - PrivateIncludePaths.Add(RapidJSONPath); - PrivateIncludePaths.Add(AsioPath); - PrivateIncludePaths.Add(WebSocketPPPath); - PrivateIncludePaths.Add(ConcurrentQueuePath); - } -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/GameLiftServerSDK.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/GameLiftServerSDK.cpp deleted file mode 100644 index 40c34118..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/GameLiftServerSDK.cpp +++ /dev/null @@ -1,558 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ -#include "GameLiftServerSDK.h" -#include "Core.h" -#include "Modules/ModuleManager.h" -#include "Interfaces/IPluginManager.h" -#include - -#define LOCTEXT_NAMESPACE "FGameLiftServerSDKModule" - -void* FGameLiftServerSDKModule::GameLiftServerSDKLibraryHandle = nullptr; - -static FProcessParameters GameLiftProcessParameters; - -void FGameLiftServerSDKModule::StartupModule() -{ -} - -bool FGameLiftServerSDKModule::LoadDependency(const FString& Dir, const FString& Name, void*& Handle) -{ - FString Lib = Name + TEXT(".") + FPlatformProcess::GetModuleExtension(); - FString Path = Dir.IsEmpty() ? *Lib : FPaths::Combine(*Dir, *Lib); - - Handle = FPlatformProcess::GetDllHandle(*Path); - - if (Handle == nullptr) - { - return false; - } - - return true; -} - -void FGameLiftServerSDKModule::FreeDependency(void*& Handle) -{ -#if !PLATFORM_LINUX - if (Handle != nullptr) - { - FPlatformProcess::FreeDllHandle(Handle); - Handle = nullptr; - } -#endif -} - -void FGameLiftServerSDKModule::ShutdownModule() -{ - FreeDependency(GameLiftServerSDKLibraryHandle); -} - -FGameLiftStringOutcome FGameLiftServerSDKModule::GetSdkVersion() { -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::GetSdkVersion(); - if (outcome.IsSuccess()){ - return FGameLiftStringOutcome(outcome.GetResult()); - } - else { - return FGameLiftStringOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftStringOutcome(""); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::InitSDK() { -#if WITH_GAMELIFT - auto initSDKOutcome = Aws::GameLift::Server::InitSDK(); - if (initSDKOutcome.IsSuccess()) { - return FGameLiftGenericOutcome(nullptr); - } - else{ - return FGameLiftGenericOutcome(FGameLiftError(initSDKOutcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::InitSDK(const FServerParameters &serverParameters) { -#if WITH_GAMELIFT - Aws::GameLift::Server::Model::ServerParameters sdkServerParameters; - sdkServerParameters.SetWebSocketUrl(TCHAR_TO_UTF8(*serverParameters.m_webSocketUrl)); - sdkServerParameters.SetFleetId(TCHAR_TO_UTF8(*serverParameters.m_fleetId)); - sdkServerParameters.SetProcessId(TCHAR_TO_UTF8(*serverParameters.m_processId)); - sdkServerParameters.SetHostId(TCHAR_TO_UTF8(*serverParameters.m_hostId)); - sdkServerParameters.SetAuthToken(TCHAR_TO_UTF8(*serverParameters.m_authToken)); - sdkServerParameters.SetAwsRegion(TCHAR_TO_UTF8(*serverParameters.m_awsRegion)); - sdkServerParameters.SetAccessKey(TCHAR_TO_UTF8(*serverParameters.m_accessKey)); - sdkServerParameters.SetSecretKey(TCHAR_TO_UTF8(*serverParameters.m_secretKey)); - sdkServerParameters.SetSessionToken(TCHAR_TO_UTF8(*serverParameters.m_sessionToken)); - - auto initSDKOutcome = Aws::GameLift::Server::InitSDK(sdkServerParameters); - if (initSDKOutcome.IsSuccess()) { - return FGameLiftGenericOutcome(nullptr); - } - else{ - return FGameLiftGenericOutcome(FGameLiftError(initSDKOutcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::InitMetrics() { -#if WITH_GAMELIFT - auto initMetricsOutcome = Aws::GameLift::Server::InitMetrics(); - if (initMetricsOutcome.IsSuccess()) { - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(initMetricsOutcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::InitMetrics(const FMetricsParameters &metricsParameters) { -#if WITH_GAMELIFT - Aws::GameLift::Server::MetricsParameters sdkMetricsParameters( - TCHAR_TO_UTF8(*metricsParameters.m_statsDHost), - metricsParameters.m_statsDPort, - TCHAR_TO_UTF8(*metricsParameters.m_crashReporterHost), - metricsParameters.m_crashReporterPort, - metricsParameters.m_flushIntervalMs, - metricsParameters.m_maxPacketSize - ); - - auto initMetricsOutcome = Aws::GameLift::Server::InitMetrics(sdkMetricsParameters); - if (initMetricsOutcome.IsSuccess()) { - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(initMetricsOutcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::ProcessEnding() { -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::ProcessEnding(); - if (outcome.IsSuccess()){ - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::ActivateGameSession() { -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::ActivateGameSession(); - if (outcome.IsSuccess()){ - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::AcceptPlayerSession(const FString& playerSessionId) { -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::AcceptPlayerSession(TCHAR_TO_UTF8(*playerSessionId)); - if (outcome.IsSuccess()){ - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::RemovePlayerSession(const FString& playerSessionId) { -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::RemovePlayerSession(TCHAR_TO_UTF8(*playerSessionId)); - if (outcome.IsSuccess()){ - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::Destroy() -{ -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::Destroy(); - if (outcome.IsSuccess()) { - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftDescribePlayerSessionsOutcome FGameLiftServerSDKModule::DescribePlayerSessions(const FGameLiftDescribePlayerSessionsRequest &describePlayerSessionsRequest) -{ -#if WITH_GAMELIFT - Aws::GameLift::Server::Model::DescribePlayerSessionsRequest request; - request.SetGameSessionId(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_gameSessionId)); - request.SetPlayerId(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_playerId)); - request.SetPlayerSessionId(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_playerSessionId)); - request.SetPlayerSessionStatusFilter(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_playerSessionStatusFilter)); - request.SetLimit(describePlayerSessionsRequest.m_limit); - request.SetNextToken(TCHAR_TO_UTF8(*describePlayerSessionsRequest.m_nextToken)); - - auto outcome = Aws::GameLift::Server::DescribePlayerSessions(request); - - if (outcome.IsSuccess()) { - auto& outres = outcome.GetResult(); - FGameLiftDescribePlayerSessionsResult result; - - int sessionCount = 0; - auto sessions = outres.GetPlayerSessions(sessionCount); - if (sessionCount > 0) { - TArray outSessions; - outSessions.Reserve(sessionCount); - - for (int i = 0; i < sessionCount; ++i) { - auto session = sessions + i; - FGameLiftPlayerSession& outSession = outSessions.AddDefaulted_GetRef(); - - outSession.m_playerSessionId = UTF8_TO_TCHAR(session->GetPlayerSessionId()); - outSession.m_playerId = UTF8_TO_TCHAR(session->GetPlayerId()); - outSession.m_gameSessionId = UTF8_TO_TCHAR(session->GetGameSessionId()); - outSession.m_fleetId = UTF8_TO_TCHAR(session->GetFleetId()); - outSession.m_creationTime = session->GetCreationTime(); - outSession.m_terminationTime = session->GetTerminationTime(); - - switch (session->GetStatus()) { - case Aws::GameLift::Server::Model::PlayerSessionStatus::NOT_SET: outSession.m_status = EPlayerSessionStatus::NOT_SET; break; - case Aws::GameLift::Server::Model::PlayerSessionStatus::RESERVED: outSession.m_status = EPlayerSessionStatus::RESERVED; break; - case Aws::GameLift::Server::Model::PlayerSessionStatus::ACTIVE: outSession.m_status = EPlayerSessionStatus::ACTIVE; break; - case Aws::GameLift::Server::Model::PlayerSessionStatus::COMPLETED: outSession.m_status = EPlayerSessionStatus::COMPLETED; break; - case Aws::GameLift::Server::Model::PlayerSessionStatus::TIMEDOUT: outSession.m_status = EPlayerSessionStatus::TIMEDOUT; break; - } - - outSession.m_ipAddress = UTF8_TO_TCHAR(session->GetIpAddress()); - outSession.m_port = session->GetPort(); - - outSession.m_playerData = UTF8_TO_TCHAR(session->GetPlayerData()); - outSession.m_dnsName = UTF8_TO_TCHAR(session->GetDnsName()); - } - - result.m_playerSessions = outSessions; - } - - result.m_nextToken = (UTF8_TO_TCHAR(outres.GetNextToken())); - - return FGameLiftDescribePlayerSessionsOutcome(result); - } - else { - return FGameLiftDescribePlayerSessionsOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftDescribePlayerSessionsOutcome(FGameLiftDescribePlayerSessionsResult()); -#endif -} - -static void OnActivateFunctionInternal(Aws::GameLift::Server::Model::GameSession gameSession, void* state) { - GameLiftProcessParameters.OnActivateFunction(gameSession); -} - -static void OnUpdateFunctionInternal(Aws::GameLift::Server::Model::UpdateGameSession updateGameSession, void* state) { - GameLiftProcessParameters.OnUpdateFunction(updateGameSession); -} - -static void OnTerminateFunctionInternal(void* state) { - GameLiftProcessParameters.OnTerminateFunction(); -} - -static bool OnHealthCheckInternal(void* state) { - return GameLiftProcessParameters.OnHealthCheckFunction(); -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::ProcessReady(FProcessParameters &processParameters) { -#if WITH_GAMELIFT - GameLiftProcessParameters = processParameters; - - char logPathsBuffer[MAX_LOG_PATHS][MAX_PATH_LENGTH]; - const char* logPaths[MAX_LOG_PATHS]; - - memset(logPaths, 0, sizeof(logPaths)); - memset(logPathsBuffer, 0, sizeof(logPathsBuffer)); - - //only use the first MAX_LOG_PATHS values (duplicate logic in cpp SDK) - int32 numLogs = FMath::Min(processParameters.logParameters.Num(), MAX_LOG_PATHS); - - for (int i = 0; i < numLogs; i++) - { - FTCHARToUTF8 utf8text(*processParameters.logParameters[i]); - if (utf8text.Length() < MAX_PATH_LENGTH) - - { - memcpy(logPathsBuffer[i], utf8text.Get(), utf8text.Length()); - } - - logPaths[i] = logPathsBuffer[i]; - } - - const TSharedPtr StandalonePlugin = IPluginManager::Get().FindPlugin(TEXT("GameLiftPlugin")); - const TSharedPtr LightweightPlugin = IPluginManager::Get().FindPlugin(TEXT("GameLiftServerSDK")); - - FString pluginName; - FString pluginVersion; - - if (LightweightPlugin.IsValid()) - { - pluginName = LightweightPlugin->GetName(); - pluginVersion = LightweightPlugin->GetDescriptor().VersionName; - - } - else if (StandalonePlugin.IsValid()) - { - pluginName = StandalonePlugin->GetName(); - pluginVersion = StandalonePlugin->GetDescriptor().VersionName; - } - else - { - return FGameLiftGenericOutcome(FGameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::SDK_VERSION_DETECTION_FAILED, "Unknown SDK Tool Name", "Couldn't find the GameLift plugin name or version. " - "Please update this code to search for a valid name defined inside GameLift's .uplugin file.") - ); - } - - // Don't use Unreal's FPlatformMisc::SetEnvironmentVar because it uses Windows specific SetEnvironmentVariable API - // which doesn't mix with GameLift SDK's use of C++ std::getenv() - FString pluginNameEnv = "GAMELIFT_SDK_TOOL_NAME=Unreal" + pluginName; - FString pluginVersionEnv = "GAMELIFT_SDK_TOOL_VERSION=" + pluginVersion; - - static std::string pluginNameEnvStr = TCHAR_TO_UTF8(*pluginNameEnv); - static std::string pluginVersionEnvStr = TCHAR_TO_UTF8(*pluginVersionEnv); - -#if PLATFORM_WINDOWS - _putenv(pluginNameEnvStr.c_str()); - _putenv(pluginVersionEnvStr.c_str()); -#else - putenv(const_cast(pluginNameEnvStr.c_str())); - putenv(const_cast(pluginVersionEnvStr.c_str())); -#endif - - Aws::GameLift::Server::ProcessParameters processParams = Aws::GameLift::Server::ProcessParameters( - OnActivateFunctionInternal, - nullptr, - OnUpdateFunctionInternal, - nullptr, - OnTerminateFunctionInternal, - nullptr, - OnHealthCheckInternal, - nullptr, - processParameters.port, - Aws::GameLift::Server::LogParameters(logPaths, numLogs) - ); - - auto outcome = Aws::GameLift::Server::ProcessReady(processParams); - if (outcome.IsSuccess()){ - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::UpdatePlayerSessionCreationPolicy(EPlayerSessionCreationPolicy policy) -{ -#if WITH_GAMELIFT - Aws::GameLift::Server::Model::PlayerSessionCreationPolicy internalPolicy = Aws::GameLift::Server::Model::PlayerSessionCreationPolicyMapper::GetPlayerSessionCreationPolicyForName(TCHAR_TO_UTF8(*GetNameForPlayerSessionCreationPolicy(policy))); - auto outcome = Aws::GameLift::Server::UpdatePlayerSessionCreationPolicy(internalPolicy); - if (outcome.IsSuccess()){ - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - -FGameLiftStringOutcome FGameLiftServerSDKModule::GetGameSessionId() { -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::GetGameSessionId(); - if (outcome.IsSuccess()){ - return FGameLiftStringOutcome(outcome.GetResult()); - } - else { - return FGameLiftStringOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftStringOutcome(""); -#endif -} - -FGameLiftLongOutcome FGameLiftServerSDKModule::GetTerminationTime() { -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::GetTerminationTime(); - if (outcome.IsSuccess()) { - return FGameLiftLongOutcome(outcome.GetResult()); - } - else { - return FGameLiftLongOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftLongOutcome(-1); -#endif -} - -FGameLiftStringOutcome FGameLiftServerSDKModule::StartMatchBackfill(const FStartMatchBackfillRequest& request) { -#if WITH_GAMELIFT - Aws::GameLift::Server::Model::StartMatchBackfillRequest sdkRequest; - sdkRequest.SetTicketId(TCHAR_TO_UTF8(*request.m_ticketId)); - sdkRequest.SetGameSessionArn(TCHAR_TO_UTF8(*request.m_gameSessionArn)); - sdkRequest.SetMatchmakingConfigurationArn(TCHAR_TO_UTF8(*request.m_matchmakingConfigurationArn)); - for (auto player : request.m_players) { - Aws::GameLift::Server::Model::Player sdkPlayer; - sdkPlayer.SetPlayerId(TCHAR_TO_UTF8(*player.m_playerId)); - sdkPlayer.SetTeam(TCHAR_TO_UTF8(*player.m_team)); - for (auto entry : player.m_latencyInMs) { - sdkPlayer.WithLatencyMs(TCHAR_TO_UTF8(*entry.Key), entry.Value); - } - - std::map sdkAttributeMap; - for (auto attributeEntry : player.m_playerAttributes) { - FAttributeValue value = attributeEntry.Value; - Aws::GameLift::Server::Model::AttributeValue attribute; - switch (value.m_type) - { - case FAttributeType::STRING: - attribute = Aws::GameLift::Server::Model::AttributeValue(TCHAR_TO_UTF8(*value.m_S)); - break; - case FAttributeType::DOUBLE: - attribute = Aws::GameLift::Server::Model::AttributeValue(value.m_N); - break; - case FAttributeType::STRING_LIST: - attribute = Aws::GameLift::Server::Model::AttributeValue::ConstructStringList(); - for (auto sl : value.m_SL) { - attribute.AddString(TCHAR_TO_UTF8(*sl)); - }; - break; - case FAttributeType::STRING_DOUBLE_MAP: - attribute = Aws::GameLift::Server::Model::AttributeValue::ConstructStringDoubleMap(); - for (auto sdm : value.m_SDM) { - attribute.AddStringAndDouble(TCHAR_TO_UTF8(*sdm.Key), sdm.Value); - }; - break; - } - sdkPlayer.WithPlayerAttribute((TCHAR_TO_UTF8(*attributeEntry.Key)), attribute); - } - sdkRequest.AddPlayer(sdkPlayer); - } - auto outcome = Aws::GameLift::Server::StartMatchBackfill(sdkRequest); - if (outcome.IsSuccess()) { - return FGameLiftStringOutcome(outcome.GetResult().GetTicketId()); - } - else { - return FGameLiftStringOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftStringOutcome(""); -#endif -} - -FGameLiftGenericOutcome FGameLiftServerSDKModule::StopMatchBackfill(const FStopMatchBackfillRequest& request) -{ -#if WITH_GAMELIFT - Aws::GameLift::Server::Model::StopMatchBackfillRequest sdkRequest; - sdkRequest.SetTicketId(TCHAR_TO_UTF8(*request.m_ticketId)); - sdkRequest.SetGameSessionArn(TCHAR_TO_UTF8(*request.m_gameSessionArn)); - sdkRequest.SetMatchmakingConfigurationArn(TCHAR_TO_UTF8(*request.m_matchmakingConfigurationArn)); - auto outcome = Aws::GameLift::Server::StopMatchBackfill(sdkRequest); - if (outcome.IsSuccess()) { - return FGameLiftGenericOutcome(nullptr); - } - else { - return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGenericOutcome(nullptr); -#endif -} - - -FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate() -{ -#if WITH_GAMELIFT - auto outcome = Aws::GameLift::Server::GetComputeCertificate(); - if (outcome.IsSuccess()) { - auto& outres = outcome.GetResult(); - FGameLiftGetComputeCertificateResult result; - result.m_certificate_path = UTF8_TO_TCHAR(outres.GetCertificatePath()); - result.m_computeName = UTF8_TO_TCHAR(outres.GetComputeName()); - return FGameLiftGetComputeCertificateOutcome(result); - } - else { - return FGameLiftGetComputeCertificateOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGetComputeCertificateOutcome(FGameLiftGetComputeCertificateResult()); -#endif -} - -FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request) -{ -#if WITH_GAMELIFT - Aws::GameLift::Server::Model::GetFleetRoleCredentialsRequest sdkRequest; - sdkRequest.SetRoleArn(TCHAR_TO_UTF8(*request.m_roleArn)); - sdkRequest.SetRoleSessionName(TCHAR_TO_UTF8(*request.m_roleSessionName)); - - auto outcome = Aws::GameLift::Server::GetFleetRoleCredentials(sdkRequest); - - if (outcome.IsSuccess()) { - auto& outres = outcome.GetResult(); - FGameLiftGetFleetRoleCredentialsResult result; - result.m_assumedUserRoleArn = UTF8_TO_TCHAR(outres.GetAssumedUserRoleArn()); - result.m_assumedRoleId = UTF8_TO_TCHAR(outres.GetAssumedRoleId()); - result.m_accessKeyId = UTF8_TO_TCHAR(outres.GetAccessKeyId()); - result.m_secretAccessKey = UTF8_TO_TCHAR(outres.GetSecretAccessKey()); - result.m_sessionToken = UTF8_TO_TCHAR(outres.GetSessionToken()); - result.m_expiration = FDateTime::FromUnixTimestamp(outres.GetExpiration()); - return FGameLiftGetFleetRoleCredentialsOutcome(result); - } - else { - return FGameLiftGetFleetRoleCredentialsOutcome(FGameLiftError(outcome.GetError())); - } -#else - return FGameLiftGetFleetRoleCredentialsOutcome(FGameLiftGetFleetRoleCredentialsResult()); -#endif -} - -#undef LOCTEXT_NAMESPACE - -IMPLEMENT_MODULE(FGameLiftServerSDKModule, GameLiftServerSDK) diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/GameLiftCommonState.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/GameLiftCommonState.cpp deleted file mode 100644 index a7ec6021..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/GameLiftCommonState.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include - -using namespace Aws::GameLift; - -// This is a shared pointer because many contexts (DLLs) may point to the same state. -Aws::GameLift::Internal::GameLiftCommonState * Aws::GameLift::Internal::GameLiftCommonState::m_instance; - -Aws::GameLift::Internal::GameLiftCommonState::GameLiftCommonState() {} - -Aws::GameLift::Internal::GameLiftCommonState::~GameLiftCommonState() {} - -GenericOutcome Aws::GameLift::Internal::GameLiftCommonState::SetInstance(Aws::GameLift::Internal::GameLiftCommonState *instance) { - // If there already is an instance, fail. - if (m_instance) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::ALREADY_INITIALIZED)); - } - - // take ownership of the new instance - m_instance = instance; - return GenericOutcome(nullptr); -} - -Aws::GameLift::Internal::GetInstanceOutcome Aws::GameLift::Internal::GameLiftCommonState::GetInstance() { - if (!m_instance) { - return Internal::GetInstanceOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::NOT_INITIALIZED)); - } - - return m_instance; -} - -Aws::GameLift::Internal::GetInstanceOutcome Aws::GameLift::Internal::GameLiftCommonState::GetInstance(Aws::GameLift::Internal::GAMELIFT_INTERNAL_STATE_TYPE stateType) { - if (!m_instance) { - return Internal::GetInstanceOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::NOT_INITIALIZED)); - } - - if (m_instance->GetStateType() != stateType) { - return Internal::GetInstanceOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::INITIALIZATION_MISMATCH)); - } - return m_instance; -} - -GenericOutcome Aws::GameLift::Internal::GameLiftCommonState::DestroyInstance() { - if (m_instance) { - delete m_instance; - m_instance = nullptr; - return GenericOutcome(nullptr); - } - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::NOT_INITIALIZED)); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/GameLiftToolDetector.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/GameLiftToolDetector.cpp deleted file mode 100644 index b27fa895..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/GameLiftToolDetector.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Common { - -void GameLiftToolDetector::SetGameLiftTool() { - static constexpr const char* ENV_VAR_SDK_TOOL_NAME = "GAMELIFT_SDK_TOOL_NAME"; - static constexpr const char* ENV_VAR_SDK_TOOL_VERSION = "GAMELIFT_SDK_TOOL_VERSION"; - - if (!IsToolRunning()) { - return; - } - const char* existingToolName = std::getenv(ENV_VAR_SDK_TOOL_NAME); - const char* existingToolVersion = std::getenv(ENV_VAR_SDK_TOOL_VERSION); - std::string toolName = GetToolName(); - std::string toolVersion = GetToolVersion(); - - if (existingToolName != nullptr && strlen(existingToolName) > 0) { - std::string existingToolNameStr(existingToolName); - std::string existingToolVersionStr(existingToolVersion != nullptr ? existingToolVersion : ""); - if (existingToolNameStr.find(toolName) == std::string::npos) { - toolName = existingToolNameStr + "," + toolName; - toolVersion = existingToolVersionStr + "," + toolVersion; - } else { - toolName = existingToolNameStr; - toolVersion = existingToolVersionStr; - } - } -#ifdef _WIN32 - _putenv_s(ENV_VAR_SDK_TOOL_NAME, toolName.c_str()); - _putenv_s(ENV_VAR_SDK_TOOL_VERSION, toolVersion.c_str()); -#else - setenv(ENV_VAR_SDK_TOOL_NAME, toolName.c_str(), 1); - setenv(ENV_VAR_SDK_TOOL_VERSION, toolVersion.c_str(), 1); -#endif -} - -} // namespace Common -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/MetricsDetector.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/MetricsDetector.cpp deleted file mode 100644 index 1d5b5ae0..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/common/MetricsDetector.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Common { - -bool MetricsDetector::IsToolRunning() { - try { -#ifdef _WIN32 - std::string windowsServiceArgs = std::string(WINDOWS_SERVICE_ARGS) + WINDOWS_SERVICE_NAME; - return CheckService(WINDOWS_SERVICE_COMMAND, windowsServiceArgs, [](const std::string& output) { - return output.find(WINDOWS_RUNNING_STATUS) != std::string::npos; - }); -#else - std::string linuxServiceArgs = std::string(LINUX_SERVICE_ARGS) + LINUX_SERVICE_NAME; - return CheckService(LINUX_SERVICE_COMMAND, linuxServiceArgs, [](const std::string& output) { - std::string trimmedOutput = output; - // Trim whitespace - trimmedOutput.erase(trimmedOutput.find_last_not_of(" \n\r\t") + 1); - trimmedOutput.erase(0, trimmedOutput.find_first_not_of(" \n\r\t")); - return trimmedOutput == LINUX_ACTIVE_STATUS; - }); -#endif - } catch (...) { - return false; - } -} - -bool MetricsDetector::CheckService(const std::string& command, const std::string& arguments, std::function outputValidator) { - std::string fullCommand = command + " " + arguments; - -#ifdef _WIN32 - FILE* pipe = _popen(fullCommand.c_str(), "r"); -#else - FILE* pipe = popen(fullCommand.c_str(), "r"); -#endif - - if (!pipe) { - return false; - } - - std::string result; - char buffer[128]; - while (fgets(buffer, sizeof(buffer), pipe) != nullptr) { - result.append(buffer); - } - -#ifdef _WIN32 - int exitCode = _pclose(pipe); -#else - int exitCode = pclose(pipe); -#endif - - return exitCode == 0 && outputValidator(result); -} - -std::string MetricsDetector::GetToolName() { - return TOOL_NAME; -} - -std::string MetricsDetector::GetToolVersion() { - return TOOL_VERSION; -} - -} // namespace Common -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/GameLiftServerState.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/GameLiftServerState.cpp deleted file mode 100644 index 1e45f3af..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/GameLiftServerState.cpp +++ /dev/null @@ -1,1189 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -using namespace Aws::GameLift; - -#ifdef GAMELIFT_USE_STD -Aws::GameLift::Internal::GameLiftServerState::GameLiftServerState() - : m_onStartGameSession(nullptr), m_onProcessTerminate(nullptr), m_onHealthCheck(nullptr), m_processReady(false), m_terminationTime(-1), - m_webSocketClientManager(nullptr), m_webSocketClientWrapper(nullptr), m_healthCheckThread(nullptr), m_healthCheckInterrupted(false), - m_createGameSessionCallback(new CreateGameSessionCallback(this)), m_describePlayerSessionsCallback(new DescribePlayerSessionsCallback()), - m_getComputeCertificateCallback(new GetComputeCertificateCallback()), m_getFleetRoleCredentialsCallback(new GetFleetRoleCredentialsCallback()), - m_terminateProcessCallback(new TerminateProcessCallback(this)), m_updateGameSessionCallback(new UpdateGameSessionCallback(this)), - m_startMatchBackfillCallback(new StartMatchBackfillCallback()), m_refreshConnectionCallback(new RefreshConnectionCallback(this)), - m_globalProcessor(nullptr) {} - -Aws::GameLift::Internal::GameLiftServerState::~GameLiftServerState() { - m_processReady = false; - if (m_healthCheckThread && m_healthCheckThread->joinable()) { - { - std::unique_lock lock(m_healthCheckMutex); - m_healthCheckInterrupted = true; - // "Interrupts" the thread's sleep and causes it to evaluate its "wait_for" predicate. - // Since "m_healthCheckInterrupted = true" now the predicate will evaluate to "true" and - // the thread will continue without waiting the full ~60 second interval. - m_healthCheckConditionVariable.notify_all(); - } - m_healthCheckThread->join(); - } - - Aws::GameLift::Internal::GameLiftCommonState::SetInstance(nullptr); - m_onStartGameSession = nullptr; - m_onUpdateGameSession = nullptr; - m_onProcessTerminate = nullptr; - m_onHealthCheck = nullptr; - m_terminationTime = -1; - - // Tell the webSocketClientManager to disconnect and delete the websocket - if (m_webSocketClientManager) { - m_webSocketClientManager->Disconnect(); - delete m_webSocketClientManager; - m_webSocketClientManager = nullptr; - } - - m_webSocketClientWrapper = nullptr; -} - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters) { - spdlog::info("Calling ProcessReady"); - - m_onStartGameSession = processParameters.getOnStartGameSession(); - m_onUpdateGameSession = processParameters.getOnUpdateGameSession(); - m_onProcessTerminate = processParameters.getOnProcessTerminate(); - m_onHealthCheck = processParameters.getOnHealthCheck(); - - if (processParameters.getPort() < 0 || processParameters.getPort() > 65535) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "Port number is invalid.")); - } - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - DetectGameLiftTools(); - - const char* sdkToolNameEnvironmentVariable = std::getenv(ENV_VAR_SDK_TOOL_NAME); - const char* sdkToolVersionEnvironmentVariable = std::getenv(ENV_VAR_SDK_TOOL_VERSION); - - std::string sdkToolName = sdkToolNameEnvironmentVariable == nullptr ? "" : sdkToolNameEnvironmentVariable; - std::string sdkToolVersion = sdkToolVersionEnvironmentVariable == nullptr ? "" : sdkToolVersionEnvironmentVariable; - - Aws::GameLift::Internal::ActivateServerProcessRequest activateServerProcessRequest(Server::GetSdkVersion().GetResult(), Aws::GameLift::Internal::GameLiftServerState::LANGUAGE, - sdkToolName, sdkToolVersion, - processParameters.getPort(), processParameters.getLogParameters()); - Aws::GameLift::Internal::Message &request = activateServerProcessRequest; - - // SendSocketMessageWithRetries makes sync call - GenericOutcome result = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - - if (result.IsSuccess()) { - spdlog::info("Successfully executed ActivateServerProcess. Marked m_processReady as true and starting m_healthCheckThread()."); - m_processReady = true; - m_healthCheckThread = std::unique_ptr(new std::thread([this] { HealthCheck(); })); - } else { - spdlog::info("Error while executing ActivateServerProcess. See the root cause error for more information."); - } - - return result; -} - -void Aws::GameLift::Internal::GameLiftServerState::ReportHealth() { - spdlog::info("Calling ReportHealth"); - std::future future(std::async([]() { return true; })); - if (m_onHealthCheck) { - future = std::async(std::launch::async, m_onHealthCheck); - } - - // Static variable not guaranteed to be defined (location in memory) at this point unless C++ - // 17+. Creating temp int to pass by reference. - std::chrono::system_clock::time_point timeoutSeconds = std::chrono::system_clock::now() + std::chrono::milliseconds(int(HEALTHCHECK_TIMEOUT_MILLIS)); - bool health = false; - - // wait_until blocks until timeoutSeconds has been reached or the result becomes available - if (std::future_status::ready == future.wait_until(timeoutSeconds)) { - health = future.get(); - spdlog::info("Received Health Response: {} from Server Process: {}", health, m_processId); - } else { - spdlog::warn("Timed out waiting for health response from the server process {}. Reporting as unhealthy.", m_processId); - } - - Aws::GameLift::Internal::HeartbeatServerProcessRequest request = Aws::GameLift::Internal::HeartbeatServerProcessRequest().WithHealthy(health); - if (m_webSocketClientManager || m_webSocketClientWrapper) { - spdlog::info("Trying to report process health as {} for process {}", health, m_processId); - auto outcome = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - if (!outcome.IsSuccess()) { - spdlog::error("Error reporting process health for process {}.", m_processId); - } - } else { - spdlog::error("Tried to report process health for process {} with no active connection", m_processId); - } -} - -::GenericOutcome Aws::GameLift::Internal::GameLiftServerState::ProcessEnding() { - m_processReady = false; - - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - Aws::GameLift::Internal::TerminateServerProcessRequest terminateServerProcessRequest; - Aws::GameLift::Internal::Message &request = terminateServerProcessRequest; - GenericOutcome result = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - - return result; -} - -std::string Aws::GameLift::Internal::GameLiftServerState::GetGameSessionId() const { return m_gameSessionId; } - -long Aws::GameLift::Internal::GameLiftServerState::GetTerminationTime() const { return m_terminationTime; } - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::ActivateGameSession() { - if (!m_processReady) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - Aws::GameLift::Internal::ActivateGameSessionRequest activateGameSessionRequest(m_gameSessionId); - Aws::GameLift::Internal::Message &request = activateGameSessionRequest; - GenericOutcome result = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - - return result; -} - -GenericOutcome -Aws::GameLift::Internal::GameLiftServerState::UpdatePlayerSessionCreationPolicy(Aws::GameLift::Server::Model::PlayerSessionCreationPolicy newPlayerSessionPolicy) { - std::string newPlayerSessionPolicyInString = - Aws::GameLift::Server::Model::PlayerSessionCreationPolicyMapper::GetNameForPlayerSessionCreationPolicy(newPlayerSessionPolicy); - - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - if (m_gameSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAME_SESSION_ID_NOT_SET)); - } - - Aws::GameLift::Internal::UpdatePlayerSessionCreationPolicyRequest updatePlayerSessionCreationPolicyRequest( - m_gameSessionId, PlayerSessionCreationPolicyMapper::GetNameForPlayerSessionCreationPolicy(newPlayerSessionPolicy)); - Aws::GameLift::Internal::Message &request = updatePlayerSessionCreationPolicyRequest; - GenericOutcome result = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - - return result; -} - -Server::InitSDKOutcome Aws::GameLift::Internal::GameLiftServerState::CreateInstance(std::shared_ptr webSocketClientWrapper) { - if (GameLiftCommonState::GetInstance().IsSuccess()) { - return Server::InitSDKOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::ALREADY_INITIALIZED)); - } - - GameLiftServerState *newState = new GameLiftServerState(); - newState->m_webSocketClientWrapper = webSocketClientWrapper; - GenericOutcome setOutcome = GameLiftCommonState::SetInstance(newState); - if (!setOutcome.IsSuccess()) { - delete newState; - return Server::InitSDKOutcome(setOutcome.GetError()); - } - - return newState; -} - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::AcceptPlayerSession(const std::string &playerSessionId) { - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - if (m_gameSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAME_SESSION_ID_NOT_SET)); - } - - if (playerSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "Player session id is empty.")); - } - - AcceptPlayerSessionRequest request = AcceptPlayerSessionRequest().WithGameSessionId(m_gameSessionId).WithPlayerSessionId(playerSessionId); - - return Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); -} - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::RemovePlayerSession(const std::string &playerSessionId) { - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - if (m_gameSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAME_SESSION_ID_NOT_SET)); - } - - if (playerSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "Player session id is empty.")); - } - - RemovePlayerSessionRequest request = RemovePlayerSessionRequest().WithGameSessionId(m_gameSessionId).WithPlayerSessionId(playerSessionId); - - return Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); -} - -void Aws::GameLift::Internal::GameLiftServerState::OnStartGameSession(Aws::GameLift::Server::Model::GameSession &gameSession) { - // Inject data that already exists on the server - gameSession.SetFleetId(m_fleetId); - - std::string gameSessionId = gameSession.GetGameSessionId(); - if (!m_processReady) { - return; - } - - m_gameSessionId = gameSessionId; - - // Call metrics OnGameSessionStarted - if (!gameSessionId.empty() && m_globalProcessor != nullptr) { - Aws::GameLift::Metrics::OnGameSessionStarted(gameSession); - spdlog::info("Tagged metrics with game session: {}", gameSessionId); - } - - // Invoking OnStartGameSession callback if specified by the developer. - if (m_onStartGameSession) { - std::thread activateGameSession(std::bind(m_onStartGameSession, gameSession)); - activateGameSession.detach(); - } -} - -void Aws::GameLift::Internal::GameLiftServerState::OnTerminateProcess(long terminationTime) { - // If processReady was never invoked, the callback for processTerminate is null. - if (!m_processReady) { - return; - } - - m_terminationTime = terminationTime; - - // Invoking OnProcessTerminate callback if specified by the developer. - if (m_onProcessTerminate) { - std::thread terminateProcess(std::bind(m_onProcessTerminate)); - terminateProcess.detach(); - } else { - spdlog::info("OnProcessTerminate handler is not defined. Calling ProcessEnding() and Destroy()"); - GenericOutcome processEndingResult = ProcessEnding(); - GenericOutcome destroyResult = DestroyInstance(); - if (processEndingResult.IsSuccess() && destroyResult.IsSuccess()) { - exit(0); - } - else { - if (!processEndingResult.IsSuccess()) { - spdlog::error("Failed to call ProcessEnding()."); - } - if (!destroyResult.IsSuccess()) { - spdlog::error("Failed to call Destroy()."); - } - exit(-1); - } - } -} - -void Aws::GameLift::Internal::GameLiftServerState::OnUpdateGameSession(Aws::GameLift::Server::Model::UpdateGameSession &updateGameSession) { - if (!m_processReady) { - return; - } - - // Invoking OnUpdateGameSession callback if specified by the developer. - if (m_onUpdateGameSession) { - std::thread updateGameSessionThread(std::bind(m_onUpdateGameSession, updateGameSession)); - updateGameSessionThread.detach(); - } -} - -void Aws::GameLift::Internal::GameLiftServerState::OnRefreshConnection(const std::string &refreshConnectionEndpoint, const std::string &authToken) { - if (!m_processReady) { - return; - } - m_connectionEndpoint = refreshConnectionEndpoint; - m_authToken = authToken; - spdlog::info("Refreshing Connection to ConnectionEndpoint: {} for process {}...", m_connectionEndpoint, m_processId); - m_webSocketClientManager->Connect(m_connectionEndpoint, m_authToken, m_processId, m_hostId, m_fleetId); -} - -bool Aws::GameLift::Internal::GameLiftServerState::AssertNetworkInitialized() { return !m_webSocketClientManager || !m_webSocketClientManager->IsConnected(); } - -#else -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wreorder-ctor" -#endif -Aws::GameLift::Internal::GameLiftServerState::GameLiftServerState() - : m_onStartGameSession(nullptr), m_onProcessTerminate(nullptr), m_onHealthCheck(nullptr), m_processReady(false), m_terminationTime(-1), - m_webSocketClientManager(nullptr), m_webSocketClientWrapper(nullptr), m_healthCheckThread(nullptr), m_healthCheckInterrupted(false), - m_createGameSessionCallback(new CreateGameSessionCallback(this)), m_describePlayerSessionsCallback(new DescribePlayerSessionsCallback()), - m_getComputeCertificateCallback(new GetComputeCertificateCallback()), m_getFleetRoleCredentialsCallback(new GetFleetRoleCredentialsCallback()), - m_terminateProcessCallback(new TerminateProcessCallback(this)), m_updateGameSessionCallback(new UpdateGameSessionCallback(this)), - m_startMatchBackfillCallback(new StartMatchBackfillCallback()), m_refreshConnectionCallback(new RefreshConnectionCallback(this)), - m_globalProcessor(nullptr) {} - -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif - -Aws::GameLift::Internal::GameLiftServerState::~GameLiftServerState() { - m_processReady = false; - if (m_healthCheckThread && m_healthCheckThread->joinable()) { - { - std::unique_lock lock(m_healthCheckMutex); - m_healthCheckInterrupted = true; - // "Interrupts" the thread's sleep and causes it to evaluate its "wait_for" predicate. - // Since "m_healthCheckInterrupted = true" now the predicate will evaluate to "true" and - // the thread will continue without waiting the full ~60 second interval. - m_healthCheckConditionVariable.notify_all(); - } - m_healthCheckThread->join(); - } - - Aws::GameLift::Internal::GameLiftCommonState::SetInstance(nullptr); - m_onStartGameSession = nullptr; - m_onProcessTerminate = nullptr; - m_onHealthCheck = nullptr; - m_startGameSessionState = nullptr; - m_updateGameSessionState = nullptr; - m_processTerminateState = nullptr; - m_healthCheckState = nullptr; - m_terminationTime = -1; - - // Tell the webSocketClientManager to disconnect and delete the websocket - if (m_webSocketClientManager) { - m_webSocketClientManager->Disconnect(); - delete m_webSocketClientManager; - m_webSocketClientManager = nullptr; - } - - m_webSocketClientWrapper = nullptr; -} - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters) { - spdlog::info("Calling ProcessReady"); - - m_onStartGameSession = processParameters.getOnStartGameSession(); - m_startGameSessionState = processParameters.getStartGameSessionState(); - m_onUpdateGameSession = processParameters.getOnUpdateGameSession(); - m_updateGameSessionState = processParameters.getUpdateGameSessionState(); - m_onProcessTerminate = processParameters.getOnProcessTerminate(); - m_processTerminateState = processParameters.getProcessTerminateState(); - m_onHealthCheck = processParameters.getOnHealthCheck(); - m_healthCheckState = processParameters.getHealthCheckState(); - - if (processParameters.getPort() < 0 || processParameters.getPort() > 65535) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "Port number is invalid.")); - } - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - DetectGameLiftTools(); - - const char* sdkToolNameEnvironmentVariable = std::getenv(ENV_VAR_SDK_TOOL_NAME); - const char* sdkToolVersionEnvironmentVariable = std::getenv(ENV_VAR_SDK_TOOL_VERSION); - - std::string sdkToolName = sdkToolNameEnvironmentVariable == nullptr ? "" : sdkToolNameEnvironmentVariable; - std::string sdkToolVersion = sdkToolVersionEnvironmentVariable == nullptr ? "" : sdkToolVersionEnvironmentVariable; - - Aws::GameLift::Internal::ActivateServerProcessRequest activateServerProcessRequest(Server::GetSdkVersion().GetResult(), Aws::GameLift::Internal::GameLiftServerState::LANGUAGE, - sdkToolName, sdkToolVersion, - processParameters.getPort(), processParameters.getLogParameters()); - Aws::GameLift::Internal::Message &request = activateServerProcessRequest; - - // SendSocketMessageWithRetries makes sync call - GenericOutcome result = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - - if (result.IsSuccess()) { - spdlog::info("Successfully executed ActivateServerProcess. Marked m_processReady as true and starting m_healthCheckThread()."); - m_processReady = true; - m_healthCheckThread = std::unique_ptr(new std::thread([this] { HealthCheck(); })); - } else { - spdlog::info("Error while executing ActivateServerProcess. See the root cause error for more information."); - } - - return result; -} - -void Aws::GameLift::Internal::GameLiftServerState::ReportHealth() { - spdlog::info("Calling ReportHealth"); - std::future future(std::async([]() { return true; })); - if (m_onHealthCheck) { - future = std::async(std::launch::async, m_onHealthCheck, m_healthCheckState); - } - - std::chrono::system_clock::time_point timeoutSeconds = std::chrono::system_clock::now() + std::chrono::milliseconds(HEALTHCHECK_TIMEOUT_MILLIS); - bool health = false; - - // wait_until blocks until timeoutSeconds has been reached or the result becomes available - if (std::future_status::ready == future.wait_until(timeoutSeconds)) { - health = future.get(); - spdlog::info("Received Health Response: {} from Server Process: {}", health, m_processId); - } else { - spdlog::warn("Timed out waiting for health response from the server process {}. Reporting as unhealthy.", m_processId); - } - - Aws::GameLift::Internal::HeartbeatServerProcessRequest msg = Aws::GameLift::Internal::HeartbeatServerProcessRequest().WithHealthy(health); - if (m_webSocketClientManager || m_webSocketClientWrapper) { - spdlog::info("Trying to report process health as {} for process {}", health, m_processId); - auto outcome = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(msg); - if (!outcome.IsSuccess()) { - spdlog::error("Error reporting process health for process {}.", m_processId); - } - } else { - spdlog::error("Tried to report process health for process {} with no active connection", m_processId); - } -} - -::GenericOutcome Aws::GameLift::Internal::GameLiftServerState::ProcessEnding() { - m_processReady = false; - - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - Aws::GameLift::Internal::TerminateServerProcessRequest terminateServerProcessRequest; - Aws::GameLift::Internal::Message &request = terminateServerProcessRequest; - GenericOutcome result = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - - return result; -} - -const char * Aws::GameLift::Internal::GameLiftServerState::GetGameSessionId() { return m_gameSessionId.c_str(); } - -long Aws::GameLift::Internal::GameLiftServerState::GetTerminationTime() { return m_terminationTime; } - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::ActivateGameSession() { - if (!m_processReady) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - Aws::GameLift::Internal::ActivateGameSessionRequest activateGameSessionRequest(m_gameSessionId); - Aws::GameLift::Internal::Message &request = activateGameSessionRequest; - GenericOutcome result = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - - return result; -} - -GenericOutcome -Aws::GameLift::Internal::GameLiftServerState::UpdatePlayerSessionCreationPolicy(Aws::GameLift::Server::Model::PlayerSessionCreationPolicy newPlayerSessionPolicy) { - std::string newPlayerSessionPolicyInString = - Aws::GameLift::Server::Model::PlayerSessionCreationPolicyMapper::GetNameForPlayerSessionCreationPolicy(newPlayerSessionPolicy); - - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - if (m_gameSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAME_SESSION_ID_NOT_SET)); - } - - Aws::GameLift::Internal::UpdatePlayerSessionCreationPolicyRequest updatePlayerSessionCreationPolicyRequest( - m_gameSessionId, PlayerSessionCreationPolicyMapper::GetNameForPlayerSessionCreationPolicy(newPlayerSessionPolicy)); - Aws::GameLift::Internal::Message &request = updatePlayerSessionCreationPolicyRequest; - GenericOutcome result = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - - return result; -} - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::AcceptPlayerSession(const std::string &playerSessionId) { - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - if (m_gameSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAME_SESSION_ID_NOT_SET)); - } - - if (playerSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "Player session id is empty.")); - } - - AcceptPlayerSessionRequest request = AcceptPlayerSessionRequest().WithGameSessionId(m_gameSessionId).WithPlayerSessionId(playerSessionId); - - return Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); -} - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::RemovePlayerSession(const std::string &playerSessionId) { - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - if (m_gameSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAME_SESSION_ID_NOT_SET)); - } - - if (playerSessionId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "Player session id is empty.")); - } - - RemovePlayerSessionRequest request = RemovePlayerSessionRequest().WithGameSessionId(m_gameSessionId).WithPlayerSessionId(playerSessionId); - - return Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); -} - -std::shared_ptr Aws::GameLift::Internal::GameLiftServerState::GetWebSocketClientWrapper() const { return m_webSocketClientWrapper; } - -Aws::GameLift::Internal::InitSDKOutcome Aws::GameLift::Internal::GameLiftServerState::ConstructInternal(std::shared_ptr webSocketClientWrapper) { - if (GameLiftCommonState::GetInstance().IsSuccess()) { - return Aws::GameLift::Internal::InitSDKOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::ALREADY_INITIALIZED)); - } - - GameLiftServerState *newState = new GameLiftServerState(); - newState->m_webSocketClientWrapper = webSocketClientWrapper; - - GenericOutcome setOutcome = GameLiftCommonState::SetInstance(newState); - if (!setOutcome.IsSuccess()) { - delete newState; - return Outcome(setOutcome.GetError()); - } - - return newState; -} - -void Aws::GameLift::Internal::GameLiftServerState::OnStartGameSession(Aws::GameLift::Server::Model::GameSession &gameSession) { - // Inject data that already exists on the server - gameSession.SetFleetId(m_fleetId.c_str()); - - std::string gameSessionId = gameSession.GetGameSessionId(); - if (!m_processReady) { - return; - } - - m_gameSessionId = gameSessionId; - - // Call metrics OnGameSessionStarted - if (!gameSessionId.empty() && m_globalProcessor != nullptr) { - Aws::GameLift::Metrics::OnGameSessionStarted(gameSession); - spdlog::info("Tagged metrics with game session: {}", gameSessionId); - } - - // Invoking OnStartGameSession callback if specified by the developer. - if (m_onStartGameSession) { - std::thread activateGameSession(std::bind(m_onStartGameSession, gameSession, m_startGameSessionState)); - activateGameSession.detach(); - } -} - -void Aws::GameLift::Internal::GameLiftServerState::OnUpdateGameSession(Aws::GameLift::Server::Model::UpdateGameSession &updateGameSession) { - if (!m_processReady) { - return; - } - - // Invoking OnUpdateGameSession callback if specified by the developer. - if (m_onUpdateGameSession) { - std::thread updateGameSessionThread(std::bind(m_onUpdateGameSession, updateGameSession, m_updateGameSessionState)); - updateGameSessionThread.detach(); - } -} - -void Aws::GameLift::Internal::GameLiftServerState::OnTerminateProcess(long terminationTime) { - // If processReady was never invoked, the callback for processTerminate is null. - if (!m_processReady) { - return; - } - - m_terminationTime = terminationTime; - - // Invoking onProcessTerminate callback if specified by the developer. - if (m_onProcessTerminate) { - std::thread terminateProcess(std::bind(m_onProcessTerminate, m_processTerminateState)); - terminateProcess.detach(); - } else { - spdlog::info("OnProcessTerminate handler is not defined. Calling ProcessEnding() and Destroy()"); - GenericOutcome processEndingResult = ProcessEnding(); - GenericOutcome destroyResult = DestroyInstance(); - if (processEndingResult.IsSuccess() && destroyResult.IsSuccess()) { - exit(0); - } - else { - if (!processEndingResult.IsSuccess()) { - spdlog::error("Failed to call ProcessEnding()."); - } - if (!destroyResult.IsSuccess()) { - spdlog::error("Failed to call Destroy()."); - } - exit(-1); - } - } -} - -void Aws::GameLift::Internal::GameLiftServerState::OnRefreshConnection(const std::string &refreshConnectionEndpoint, const std::string &authToken) { - if (!m_processReady) { - return; - } - m_connectionEndpoint = refreshConnectionEndpoint; - m_authToken = authToken; - spdlog::info("Refreshing Connection to ConnectionEndpoint: {} for process {}...", m_connectionEndpoint, m_processId); - m_webSocketClientManager->Connect(m_connectionEndpoint, m_authToken, m_processId, m_hostId, m_fleetId); -} - -bool Aws::GameLift::Internal::GameLiftServerState::AssertNetworkInitialized() { return !m_webSocketClientManager || !m_webSocketClientManager->IsConnected(); } -#endif - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::InitializeNetworking(const Aws::GameLift::Server::Model::ServerParameters &serverParameters) { - spdlog::info("Initializing Networking"); - - Aws::GameLift::Internal::GameLiftServerState::SetUpCallbacks(); - - // Connect to websocket, use environment vars if present - char *webSocketUrl; - char *authToken; - char *processId; - char *hostId; - char *fleetId; - char *computeType; - char *awsRegion; - char *accessKey; - char *secretKey; - char *sessionToken; - - GetOverrideParams(&webSocketUrl, &authToken, &processId, &hostId, &fleetId, &computeType, &awsRegion, &accessKey, &secretKey, &sessionToken); - m_connectionEndpoint = std::string(webSocketUrl == nullptr ? serverParameters.GetWebSocketUrl() : webSocketUrl); - m_authToken = std::string(authToken == nullptr ? serverParameters.GetAuthToken() : authToken); - m_fleetId = std::string(fleetId == nullptr ? serverParameters.GetFleetId() : fleetId); - m_hostId = std::string(hostId == nullptr ? serverParameters.GetHostId() : hostId); - m_processId = std::string(processId == nullptr ? serverParameters.GetProcessId() : processId); - -#ifdef GAMELIFT_USE_STD - if(!awsRegion || awsRegion[0] == '\0') { - awsRegion = new char[serverParameters.GetAwsRegion().size() + 1]; - std::strcpy(awsRegion, serverParameters.GetAwsRegion().c_str()); - } - if(!accessKey || accessKey[0] == '\0') { - accessKey = new char[serverParameters.GetAccessKey().size() + 1]; - std::strcpy(accessKey, serverParameters.GetAccessKey().c_str()); - } - if(!secretKey || secretKey[0] == '\0') { - secretKey = new char[serverParameters.GetSecretKey().size() + 1]; - std::strcpy(secretKey, serverParameters.GetSecretKey().c_str()); - } - if(!sessionToken || sessionToken[0] == '\0') { - sessionToken = new char[serverParameters.GetSessionToken().size() + 1]; - std::strcpy(sessionToken, serverParameters.GetSessionToken().c_str()); - } -#else - if(!awsRegion || awsRegion[0] == '\0') { - awsRegion = new char[strlen(serverParameters.GetAwsRegion()) + 1]; - std::strcpy(awsRegion, serverParameters.GetAwsRegion()); - } - if(!accessKey || accessKey[0] == '\0') { - accessKey = new char[strlen(serverParameters.GetAccessKey()) + 1]; - std::strcpy(accessKey, serverParameters.GetAccessKey()); - } - if(!secretKey || secretKey[0] == '\0') { - secretKey = new char[strlen(serverParameters.GetSecretKey()) + 1]; - std::strcpy(secretKey, serverParameters.GetSecretKey()); - } - if(!sessionToken || sessionToken[0] == '\0') { - sessionToken = new char[strlen(serverParameters.GetSessionToken()) + 1]; - std::strcpy(sessionToken, serverParameters.GetSessionToken()); - } -#endif - bool isContainerComputeType = computeType && std::strcmp(computeType, COMPUTE_TYPE_CONTAINER) == 0; - bool authTokenPassed = !m_authToken.empty(); - bool sigV4ParametersPassed = awsRegion != nullptr && strlen(awsRegion) > 0 && - accessKey != nullptr && strlen(accessKey) > 0 && - secretKey != nullptr && strlen(secretKey) > 0; - - // Input validations - if (!authTokenPassed && !sigV4ParametersPassed && !isContainerComputeType) { - const char* unauthorizedErrorMessageFormat = "Unathorized attempt to initialize networking. " \ - "Auth token or AWS Signature V4 (SigV4) required. " \ - "Auth token may be set via ServerParameter::authToken or %s environment variable. " \ - "SigV4 may be set via %s, %s and %s environment variables."; - - const int maxErrorMessageSize = 512; - char unauthorizedErrorMessage[maxErrorMessageSize]; - snprintf(unauthorizedErrorMessage, maxErrorMessageSize, unauthorizedErrorMessageFormat, ENV_VAR_AUTH_TOKEN, ENV_VAR_ACCESS_KEY, ENV_VAR_SECRET_KEY, ENV_VAR_SESSION_TOKEN); - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::UNAUTHORIZED_EXCEPTION, unauthorizedErrorMessage)); - } - if (m_connectionEndpoint.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "webSocketUrl is missing.")); - } - if (m_processId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "processId is missing.")); - } - if (m_fleetId.empty()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "fleetId is missing.")); - } - if (m_hostId.empty() && !isContainerComputeType) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "hostId is missing.")); - } - - if (authTokenPassed) { - GenericOutcome outcome = - m_webSocketClientManager->Connect(m_connectionEndpoint, m_authToken, m_processId, m_hostId, m_fleetId); - return outcome; - } else { - if (isContainerComputeType) { - HttpClient httpClient; - ContainerCredentialsFetcher containerCredentialsFetcher = ContainerCredentialsFetcher(httpClient); - Outcome containerCredentialsFetcherOutcome = containerCredentialsFetcher.FetchContainerCredentials(); - if(!containerCredentialsFetcherOutcome.IsSuccess()) { - spdlog::error("Failed to get Container Credentials due to {}", - containerCredentialsFetcherOutcome.GetError().c_str()); - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::INTERNAL_SERVICE_EXCEPTION)); - } - accessKey = new char[containerCredentialsFetcherOutcome.GetResult().AccessKey.size() + 1]; - std::strcpy(accessKey, containerCredentialsFetcherOutcome.GetResult().AccessKey.c_str()); - - secretKey = new char[containerCredentialsFetcherOutcome.GetResult().SecretKey.size() + 1]; - std::strcpy(secretKey, containerCredentialsFetcherOutcome.GetResult().SecretKey.c_str()); - - sessionToken = new char[containerCredentialsFetcherOutcome.GetResult().SessionToken.size() + 1]; - std::strcpy(sessionToken, containerCredentialsFetcherOutcome.GetResult().SessionToken.c_str()); - - ContainerMetadataFetcher containerMetadataFetcher = ContainerMetadataFetcher(httpClient); - Outcome containerMetadataFetcherOutcome = containerMetadataFetcher.FetchContainerTaskMetadata(); - if(!containerMetadataFetcherOutcome.IsSuccess()) { - spdlog::error("Failed to get Container Task Metadata due to {}", - containerMetadataFetcherOutcome.GetError().c_str()); - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::INTERNAL_SERVICE_EXCEPTION)); - } - m_hostId = containerMetadataFetcherOutcome.GetResult().TaskId; - } - Outcome, std::string> sigV4QueryParametersOutcome = GetSigV4QueryParameters(awsRegion, accessKey, secretKey, sessionToken); - if (!sigV4QueryParametersOutcome.IsSuccess()) { - spdlog::error("Failed to generate SigV4 Query Parameters due to {}", - sigV4QueryParametersOutcome.GetError().c_str()); - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::INTERNAL_SERVICE_EXCEPTION)); - } - GenericOutcome outcome = - m_webSocketClientManager->Connect( - m_connectionEndpoint, - m_authToken, - m_processId, - m_hostId, - m_fleetId, - sigV4QueryParametersOutcome.GetResult()); - return outcome; - } -} - -void Aws::GameLift::Internal::GameLiftServerState::SetUpCallbacks() { - // Setup - m_webSocketClientManager = new Aws::GameLift::Internal::GameLiftWebSocketClientManager(m_webSocketClientWrapper); - - // Setup CreateGameSession callback - spdlog::info("Setting Up WebSocket With default callbacks"); - // Passing callback raw pointers down is fine since m_webSocketClientWrapper won't outlive the - // callbacks - m_webSocketClientWrapper->RegisterGameLiftCallback( - CreateGameSessionCallback::CREATE_GAME_SESSION, - std::bind(&CreateGameSessionCallback::OnStartGameSession, m_createGameSessionCallback.get(), std::placeholders::_1)); - m_webSocketClientWrapper->RegisterGameLiftCallback( - DescribePlayerSessionsCallback::DESCRIBE_PLAYER_SESSIONS, - std::bind(&DescribePlayerSessionsCallback::OnDescribePlayerSessions, m_describePlayerSessionsCallback.get(), std::placeholders::_1)); - m_webSocketClientWrapper->RegisterGameLiftCallback( - GetComputeCertificateCallback::GET_COMPUTE_CERTIFICATE, - std::bind(&GetComputeCertificateCallback::OnGetComputeCertificateCallback, m_getComputeCertificateCallback.get(), std::placeholders::_1)); - m_webSocketClientWrapper->RegisterGameLiftCallback( - GetFleetRoleCredentialsCallback::GET_FLEET_ROLE_CREDENTIALS, - std::bind(&GetFleetRoleCredentialsCallback::OnGetFleetRoleCredentials, m_getFleetRoleCredentialsCallback.get(), std::placeholders::_1)); - m_webSocketClientWrapper->RegisterGameLiftCallback( - TerminateProcessCallback::TERMINATE_PROCESS, - std::bind(&TerminateProcessCallback::OnTerminateProcess, m_terminateProcessCallback.get(), std::placeholders::_1)); - m_webSocketClientWrapper->RegisterGameLiftCallback( - UpdateGameSessionCallback::UPDATE_GAME_SESSION, - std::bind(&UpdateGameSessionCallback::OnUpdateGameSession, m_updateGameSessionCallback.get(), std::placeholders::_1)); - m_webSocketClientWrapper->RegisterGameLiftCallback( - StartMatchBackfillCallback::START_MATCH_BACKFILL, - std::bind(&StartMatchBackfillCallback::OnStartMatchBackfill, m_startMatchBackfillCallback.get(), std::placeholders::_1)); - m_webSocketClientWrapper->RegisterGameLiftCallback( - RefreshConnectionCallback::REFRESH_CONNECTION, - std::bind(&RefreshConnectionCallback::OnRefreshConnection, m_refreshConnectionCallback.get(), std::placeholders::_1)); -} - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(Message &message) { - spdlog::debug("Trying to send socket message for process: {}...", m_processId); - GenericOutcome outcome; - int resendFailureCount = 0; - const int maxFailuresBeforeReconnect = 2; - - // Delegate to the websocketClientManager to send the request and retry if possible - const std::function &retriable = [&] { - outcome = m_webSocketClientManager->SendSocketMessage(message); - if (outcome.IsSuccess()) { - spdlog::debug("Successfully send message for process: {}", m_processId); - return true; - } - else if (outcome.GetError().GetErrorType() == GAMELIFT_ERROR_TYPE::WEBSOCKET_RETRIABLE_SEND_MESSAGE_FAILURE) { - resendFailureCount++; - if (resendFailureCount >= maxFailuresBeforeReconnect) { - spdlog::warn("Max sending message failure threshold reached for process: {}. Attempting to reconnect...", m_processId); - m_webSocketClientWrapper->Disconnect(); - - spdlog::info("Attempting to create a new WebSocket connections for process: {}...", m_processId); - // Create a completely new webSocketClientWrapper - std::shared_ptr wsClientPointer = std::make_shared(); - m_webSocketClientWrapper = std::make_shared(wsClientPointer); - - spdlog::info("Re-establish Networking..."); - // Re-establish network with new webSocketClientWrapper - Aws::GameLift::Internal::GameLiftServerState::SetUpCallbacks(); - auto networkOutcome = m_webSocketClientManager->Connect(m_connectionEndpoint, m_authToken, m_processId, m_hostId, m_fleetId); - if (networkOutcome.IsSuccess()) { - spdlog::info("Reconnected successfully. Retrying message sending..."); - resendFailureCount = 0; - return false; // Force another retry sending message after successful connection - } else { - spdlog::error("Reconnection failed. Aborting retries."); - return true; // Abort retry if connection fails - } - } - return false; // Continue retrying if not reaching the threshold - } - else { - return true; // Not retry sending message for unexpected errors aside from WEBSOCKET_RETRIABLE_SEND_MESSAGE_FAILURE - } - }; - - // Jittered retry required because many requests can cause buffer to fill. - // If retries all happpen in sync, it can cause potential delays in recovery. - JitteredGeometricBackoffRetryStrategy retryStrategy; - RetryingCallable callable = RetryingCallable::Builder().WithRetryStrategy(&retryStrategy).WithCallable(retriable).Build(); - - callable.call(); - - if (resendFailureCount > 0 && !outcome.IsSuccess()) { - spdlog::error("Error sending socket message"); - outcome = GenericOutcome(GAMELIFT_ERROR_TYPE::WEBSOCKET_SEND_MESSAGE_FAILURE); - } - - return outcome; -} - -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdelete-non-abstract-non-virtual-dtor" -#endif - -DescribePlayerSessionsOutcome -Aws::GameLift::Internal::GameLiftServerState::DescribePlayerSessions(const Aws::GameLift::Server::Model::DescribePlayerSessionsRequest &describePlayerSessionsRequest) { - if (AssertNetworkInitialized()) { - return DescribePlayerSessionsOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - Aws::GameLift::Internal::WebSocketDescribePlayerSessionsRequest request = Aws::GameLift::Internal::DescribePlayerSessionsAdapter::convert(describePlayerSessionsRequest); - GenericOutcome rawResponse = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - if (rawResponse.IsSuccess()) { - WebSocketDescribePlayerSessionsResponse *webSocketResponse = static_cast(rawResponse.GetResult()); - DescribePlayerSessionsResult result = Aws::GameLift::Internal::DescribePlayerSessionsAdapter::convert(webSocketResponse); - delete webSocketResponse; - - return DescribePlayerSessionsOutcome(result); - } else { - return DescribePlayerSessionsOutcome(rawResponse.GetError()); - } -} - -StartMatchBackfillOutcome -Aws::GameLift::Internal::GameLiftServerState::StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &startMatchBackfillRequest) { - if (Aws::GameLift::Internal::GameLiftServerState::AssertNetworkInitialized()) { - return StartMatchBackfillOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - -#ifdef GAMELIFT_USE_STD - if (startMatchBackfillRequest.GetPlayers().empty()) { - return StartMatchBackfillOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "Players cannot be empty.")); - } -#else - int countOfPlayers; - startMatchBackfillRequest.GetPlayers(countOfPlayers); - if (countOfPlayers == 0) { - return StartMatchBackfillOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "Players cannot be empty.")); - } -#endif - - Aws::GameLift::Internal::WebSocketStartMatchBackfillRequest request = Aws::GameLift::Internal::StartMatchBackfillAdapter::convert(startMatchBackfillRequest); - GenericOutcome rawResponse = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - if (rawResponse.IsSuccess()) { - WebSocketStartMatchBackfillResponse *webSocketResponse = static_cast(rawResponse.GetResult()); - StartMatchBackfillResult result = Aws::GameLift::Internal::StartMatchBackfillAdapter::convert(webSocketResponse); - delete webSocketResponse; - - return StartMatchBackfillOutcome(result); - } else { - return StartMatchBackfillOutcome(rawResponse.GetError()); - } -} - -GenericOutcome Aws::GameLift::Internal::GameLiftServerState::StopMatchBackfill(const Aws::GameLift::Server::Model::StopMatchBackfillRequest &stopMatchBackfillRequest) { - if (AssertNetworkInitialized()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - Aws::GameLift::Internal::WebSocketStopMatchBackfillRequest request = Aws::GameLift::Internal::WebSocketStopMatchBackfillRequest() - .WithTicketId(stopMatchBackfillRequest.GetTicketId()) - .WithGameSessionArn(stopMatchBackfillRequest.GetGameSessionArn()) - .WithMatchmakingConfigurationArn(stopMatchBackfillRequest.GetMatchmakingConfigurationArn()); - GenericOutcome outcome = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - if (!outcome.IsSuccess()) { - spdlog::error("Error calling StopMatchBackfill."); - } - return outcome; -} - -GetComputeCertificateOutcome Aws::GameLift::Internal::GameLiftServerState::GetComputeCertificate() { - if (AssertNetworkInitialized()) { - return GetComputeCertificateOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - WebSocketGetComputeCertificateRequest request; - GenericOutcome rawResponse = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(request); - if (rawResponse.IsSuccess()) { - WebSocketGetComputeCertificateResponse *webSocketResponse = static_cast(rawResponse.GetResult()); - GetComputeCertificateResult result = GetComputeCertificateResult() - .WithCertificatePath(webSocketResponse->GetCertificatePath().c_str()) - .WithComputeName(webSocketResponse->GetComputeName().c_str()); - delete webSocketResponse; - - return GetComputeCertificateOutcome(result); - } else { - return GetComputeCertificateOutcome(rawResponse.GetError()); - } -} - -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif - -GetFleetRoleCredentialsOutcome -Aws::GameLift::Internal::GameLiftServerState::GetFleetRoleCredentials(const Aws::GameLift::Server::Model::GetFleetRoleCredentialsRequest &request) { - if (AssertNetworkInitialized()) { - return GetFleetRoleCredentialsOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED)); - } - - // If we've decided we're not on managed EC2 or managed containers, fail without making an APIGW call - if (!m_onManagedEC2OrContainers) { - return GetFleetRoleCredentialsOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::BAD_REQUEST_EXCEPTION, - "Fleet role credentials not available for Anywhere fleet.")); - } - - auto webSocketRequest = Aws::GameLift::Internal::GetFleetRoleCredentialsAdapter::convert(request); - - // Check if we're cached credentials recently that still has at least 15 minutes before - // expiration - if (m_instanceRoleResultCache.find(webSocketRequest.GetRoleArn()) != m_instanceRoleResultCache.end()) { - auto previousResult = m_instanceRoleResultCache[webSocketRequest.GetRoleArn()]; -#ifdef GAMELIFT_USE_STD - std::tm expiration = previousResult.GetExpiration(); -#ifdef WIN32 - time_t previousResultExpiration = _mkgmtime(&expiration); -#else - time_t previousResultExpiration = timegm(&expiration); -#endif -#else - time_t previousResultExpiration = previousResult.GetExpiration(); -#endif - time_t currentTime = time(nullptr); - - if ((previousResultExpiration - INSTANCE_ROLE_CREDENTIAL_TTL_MIN) > currentTime) { - return GetFleetRoleCredentialsOutcome(previousResult); - } - - m_instanceRoleResultCache.erase(webSocketRequest.GetRoleArn()); - } - - if (webSocketRequest.GetRoleSessionName().empty()) { - std::string generatedRoleSessionName = m_fleetId + "-" + m_hostId; - if (generatedRoleSessionName.length() > MAX_ROLE_SESSION_NAME_LENGTH) { - generatedRoleSessionName = generatedRoleSessionName.substr(0, MAX_ROLE_SESSION_NAME_LENGTH); - } - webSocketRequest.SetRoleSessionName(generatedRoleSessionName); - } - - if (webSocketRequest.GetRoleSessionName().length() > MAX_ROLE_SESSION_NAME_LENGTH) { - return GetFleetRoleCredentialsOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::BAD_REQUEST_EXCEPTION, - "GetFleetRoleCredentials failed; the role session name is too long. Please check role arn or session name and try again.")); - } - - auto rawResponse = Aws::GameLift::Internal::GameLiftServerState::SendSocketMessageWithRetries(webSocketRequest); - if (!rawResponse.IsSuccess()) { - return GetFleetRoleCredentialsOutcome(rawResponse.GetError()); - } - - std::unique_ptr webSocketResponse( - static_cast(rawResponse.GetResult())); - - // If we get a success response from APIGW with empty fields we're not on managed EC2 or managed containers. - if (webSocketResponse->GetAccessKeyId().empty()) { - m_onManagedEC2OrContainers = false; - return GetFleetRoleCredentialsOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::BAD_REQUEST_EXCEPTION, - "Fleet role credentials not available for Anywhere fleet.")); - } - - auto result = Aws::GameLift::Internal::GetFleetRoleCredentialsAdapter::convert(webSocketResponse.get()); - m_instanceRoleResultCache[webSocketRequest.GetRoleArn()] = result; - return GetFleetRoleCredentialsOutcome(result); -} - -void Aws::GameLift::Internal::GameLiftServerState::GetOverrideParams( - char **webSocketUrl, - char **authToken, - char **processId, - char **hostId, - char **fleetId, - char **computeType, - char **awsRegion, - char **accessKey, - char **secretKey, - char **sessionToken) { - *webSocketUrl = std::getenv(ENV_VAR_WEBSOCKET_URL); - *authToken = std::getenv(ENV_VAR_AUTH_TOKEN); - *processId = std::getenv(ENV_VAR_PROCESS_ID); - *hostId = std::getenv(ENV_VAR_HOST_ID); - *fleetId = std::getenv(ENV_VAR_FLEET_ID); - *computeType = std::getenv(ENV_VAR_COMPUTE_TYPE); - *awsRegion = std::getenv(ENV_VAR_AWS_REGION); - *accessKey = std::getenv(ENV_VAR_ACCESS_KEY); - *secretKey = std::getenv(ENV_VAR_SECRET_KEY); - *sessionToken = std::getenv(ENV_VAR_SESSION_TOKEN); - - if (*webSocketUrl != nullptr) { - spdlog::info("Env override for webSocketUrl: {}", *webSocketUrl); - } - - if (*authToken != nullptr) { - spdlog::info("Using env override for authToken"); - } - - if (*processId != nullptr) { - spdlog::info("Env override for processId: {}", *processId); - if (std::strcmp(*processId, AGENTLESS_CONTAINER_PROCESS_ID) == 0) { - std::string guidValue = GuidGenerator::GenerateGuid(); - *processId = new char[guidValue.size() + 1]; - std::strcpy(*processId, guidValue.c_str()); - spdlog::info("Auto Generated ProcessId, new value is: {}", *processId); - } - } - - if (*hostId != nullptr) { - spdlog::info("Env override for hostId: {}", *hostId); - } - - if (*fleetId != nullptr) { - spdlog::info("Env override for fleetId: {}", *fleetId); - } - - if (*computeType != nullptr) { - spdlog::info("Env override for computeType: {}", *computeType); - } - - if (*awsRegion != nullptr) { - spdlog::info("Env override for awsRegion: {}", *awsRegion); - } - // We are not logging AWS Credentials for security reasons. -} - -Outcome, std::string> Aws::GameLift::Internal::GameLiftServerState::GetSigV4QueryParameters( - char *awsRegion, - char *accessKey, - char *secretKey, - char *sessionToken) { - AwsCredentials awsCredentials(accessKey, secretKey, sessionToken); - std::map queryParamsToSign; - queryParamsToSign["ComputeId"] = m_hostId; - queryParamsToSign["FleetId"] = m_fleetId; - queryParamsToSign["pID"] = m_processId; - - std::time_t requestTime = std::time(nullptr); - std::tm utcTime = {}; -#ifdef _WIN32 - gmtime_s(&utcTime, &requestTime); -#else - gmtime_r(&requestTime, &utcTime); -#endif - SigV4Parameters sigV4Params(awsRegion, awsCredentials, queryParamsToSign, utcTime); - return AwsSigV4Utility::GenerateSigV4QueryParameters(sigV4Params); -} - -void Aws::GameLift::Internal::GameLiftServerState::HealthCheck() { - // Seed the random number generator used to generate healthCheck interval jitters - std::srand(std::time(0)); - - while (m_processReady) { - std::ignore = std::async(std::launch::async, &Internal::GameLiftServerState::ReportHealth, this); - std::chrono::duration> time = std::chrono::milliseconds(GetNextHealthCheckIntervalMillis()); - std::unique_lock lock(m_healthCheckMutex); - // If the lambda below returns false, the thread will wait until "time" millis expires. If - // it returns true, the thread immediately continues. - spdlog::info("Performing HealthCheck(), processReady is true, wait for {} ms for next health check", time.count()); - m_healthCheckConditionVariable.wait_for(lock, time, [&]() { return m_healthCheckInterrupted; }); - } -} - -int Aws::GameLift::Internal::GameLiftServerState::GetNextHealthCheckIntervalMillis() { - // Jitter the healthCheck interval +/- a random value between [-MAX_JITTER_SECONDS, - // MAX_JITTER_SECONDS] - int jitter = std::rand() % (HEALTHCHECK_MAX_JITTER_MILLIS * 2 + 1) - HEALTHCHECK_MAX_JITTER_MILLIS; - return HEALTHCHECK_INTERVAL_MILLIS + jitter; -} - -void Aws::GameLift::Internal::GameLiftServerState::DetectGameLiftTools() { - Aws::GameLift::Common::MetricsDetector metricsDetector; - metricsDetector.SetGameLiftTool(); -} - -void Aws::GameLift::Internal::GameLiftServerState::SetGlobalProcessor(Aws::GameLift::Metrics::IMetricsProcessor* processor) { - m_globalProcessor = processor; -} - -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/Message.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/Message.cpp deleted file mode 100644 index 28e94b0f..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/Message.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -std::string Message::Serialize() const { - // Create the buffer & Writer for the object - rapidjson::StringBuffer buffer; - rapidjson::Writer writer(buffer); - - // Start the object and call Serialize to serialize. - writer.StartObject(); - if (Serialize(&writer)) { - writer.EndObject(); - return buffer.GetString(); - } - return ""; -} - -bool Message::Deserialize(const std::string &jsonString) { - // Parse the json into a document - rapidjson::Document doc; - if (doc.Parse(jsonString.c_str()).HasParseError()) { - return false; - } - - // Call Deserialize to populate the object's member variables - return Deserialize(doc); -} - -bool Message::Serialize(rapidjson::Writer *writer) const { - JsonHelper::WriteNonEmptyString(writer, ACTION, m_action); - JsonHelper::WriteNonEmptyString(writer, REQUEST_ID, m_requestId); - return true; -} - -bool Message::Deserialize(const rapidjson::Value &value) { - m_action = JsonHelper::SafelyDeserializeString(value, ACTION); - m_requestId = JsonHelper::SafelyDeserializeString(value, REQUEST_ID); - return true; -} - -std::ostream &operator<<(std::ostream &os, const Message &message) { - os << message.Serialize(); - return os; -} - -std::string Message::GenerateRandomRequestId() { return RandomStringGenerator::GenerateRandomAlphaNumericString(32); } - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/ResponseMessage.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/ResponseMessage.cpp deleted file mode 100644 index c25351da..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/ResponseMessage.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool ResponseMessage::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WritePositiveInt(writer, STATUS_CODE, m_statusCode); - JsonHelper::WriteNonEmptyString(writer, ERROR_MESSAGE, m_errorMessage); - return true; -} - -bool ResponseMessage::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_statusCode = JsonHelper::SafelyDeserializeInt(value, STATUS_CODE); - m_errorMessage = JsonHelper::SafelyDeserializeString(value, ERROR_MESSAGE); - return true; -} - -std::ostream &operator<<(std::ostream &os, const ResponseMessage &responseMessage) { - const Message *message = &responseMessage; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/Uri.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/Uri.cpp deleted file mode 100644 index f8632f64..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/Uri.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -Uri::UriBuilder &Uri::UriBuilder::AddQueryParam(const std::string &key, const std::string &value) { - m_queryParams[key] = value; - return *this; -} - -Uri::UriBuilder &Uri::UriBuilder::WithBaseUri(const std::string &baseUriString) { - m_baseUriString = baseUriString; - return *this; -} - -Uri Uri::UriBuilder::Build() const { return Uri(m_baseUriString, m_queryParams); } - -Uri::Uri(const std::string &baseUriString, const std::map &queryMap) : m_baseUriString(baseUriString), m_queryMap(queryMap) { - SetQueryString(queryMap); - m_uriString = m_baseUriString + m_queryString; -} - -void Uri::SetQueryString(const std::map &queryMap) { - std::ostringstream queryStringStream; - queryStringStream << "?"; - for (auto const &queryPair : queryMap) { - // All but first param requires "&" delimiter - if (queryStringStream.str().size() != 1) { - queryStringStream << "&"; - } - queryStringStream << queryPair.first << "=" << queryPair.second; - } - m_queryString = queryStringStream.str(); -} - -std::ostream &operator<<(std::ostream &os, const Uri &uri) { - os << uri.GetUriString(); - return os; -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketAttributeValue.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketAttributeValue.cpp deleted file mode 100644 index ede042e9..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketAttributeValue.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -std::string WebSocketAttributeValue::Serialize() const { - // Create the buffer & Writer for the object - rapidjson::StringBuffer buffer; - rapidjson::Writer writer(buffer); - - // Start the object and call Serialize to serialize. - writer.StartObject(); - if (Serialize(&writer)) { - writer.EndObject(); - return buffer.GetString(); - } - spdlog::warn("Could not parse into WebSocketAttributeValue"); - return ""; -} - -bool WebSocketAttributeValue::Deserialize(const std::string &jsonString) { - // Parse the json into a document - rapidjson::Document doc; - if (doc.Parse(jsonString.c_str()).HasParseError()) { - spdlog::error("WebSocketAttributeValue: Parse error found for: {}", jsonString); - return false; - } - - // Call Deserialize to populate the object's member variables - return Deserialize(doc); -} - -bool WebSocketAttributeValue::Serialize(rapidjson::Writer *writer) const { - - writer->String(ATTR_TYPE); - writer->String(GetAttributeTypeAsString().c_str()); - - switch (m_attrType) { - case WebSocketAttrType::STRING: - writer->String(S); - writer->String(m_S.c_str()); - break; - case WebSocketAttrType::DOUBLE: - writer->String(N); - writer->Double(m_N); - break; - case WebSocketAttrType::STRING_LIST: - writer->String(SL); - writer->StartArray(); - for (auto it = m_SL.begin(); it != m_SL.end(); ++it) { - writer->String(it->c_str()); - } - writer->EndArray(); - break; - case WebSocketAttrType::STRING_DOUBLE_MAP: - writer->String(SDM); - writer->StartObject(); - for (auto const &property : m_SDM) { - writer->String(property.first.c_str()); - writer->Double(property.second); - } - writer->EndObject(); - break; - default: - // Do Nothing - break; - } - - return true; -} - -bool WebSocketAttributeValue::Deserialize(const rapidjson::Value &value) { - std::string attrString = value.HasMember(ATTR_TYPE) ? value[ATTR_TYPE].GetString() : ""; - SetAttributeType(attrString); - - switch (m_attrType) { - case WebSocketAttrType::STRING: - m_S = value.HasMember(S) ? value[S].GetString() : ""; - break; - case WebSocketAttrType::DOUBLE: - m_N = value.HasMember(N) ? value[N].GetDouble() : 0; - break; - case WebSocketAttrType::STRING_LIST: - if (value.HasMember(SL)) { - const rapidjson::Value &slValue = value[SL]; - std::vector sl; - for (rapidjson::SizeType i = 0; i < slValue.GetArray().Size(); i++) { - sl.push_back(slValue.GetArray()[i].GetString()); - } - m_SL = sl; - } - break; - case WebSocketAttrType::STRING_DOUBLE_MAP: - if (value.HasMember(SDM)) { - const rapidjson::Value &sdmValue = value[SDM]; - std::map sdm; - for (rapidjson::Value::ConstMemberIterator iter = sdmValue.MemberBegin(); iter != sdmValue.MemberEnd(); ++iter) { - sdm[iter->name.GetString()] = iter->value.GetDouble(); - } - m_SDM = sdm; - } - break; - default: - // Do Nothing - break; - } - - return true; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketGameSession.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketGameSession.cpp deleted file mode 100644 index c22b1f98..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketGameSession.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -std::string WebSocketGameSession::Serialize() const { - // Create the buffer & Writer for the object - rapidjson::StringBuffer buffer; - rapidjson::Writer writer(buffer); - - // Start the object and call Serialize to serialize. - writer.StartObject(); - if (Serialize(&writer)) { - writer.EndObject(); - return buffer.GetString(); - } - spdlog::warn("Could not parse into WebSocketGameSession"); - return ""; -} - -bool WebSocketGameSession::Deserialize(const std::string &jsonString) { - // Parse the json into a document - rapidjson::Document doc; - if (doc.Parse(jsonString.c_str()).HasParseError()) { - spdlog::error("WebSocketGameSession: Parse error found for: {}", jsonString); - return false; - } - - // Call Deserialize to populate the object's member variables - return Deserialize(doc); -} - -bool WebSocketGameSession::Serialize(rapidjson::Writer *writer) const { - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ID, m_gameSessionId); - JsonHelper::WriteNonEmptyString(writer, NAME, m_name); - JsonHelper::WriteNonEmptyString(writer, FLEET_ID, m_fleetId); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_DATA, m_gameSessionData); - JsonHelper::WriteNonEmptyString(writer, MATCHMAKER_DATA, m_matchmakerData); - JsonHelper::WriteNonEmptyString(writer, DNS_NAME, m_dnsName); - JsonHelper::WriteNonEmptyString(writer, IP_ADDRESS, m_ipAddress); - JsonHelper::WritePositiveInt(writer, MAXIMUM_PLAYER_SESSION_COUNT, m_maximumPlayerSessionCount); - JsonHelper::WritePositiveInt(writer, PORT, m_port); - - writer->String(GAME_PROPERTIES); - writer->StartObject(); - for (auto const &property : m_gameProperties) { - writer->String(property.first.c_str()); - writer->String(property.second.c_str()); - } - writer->EndObject(); - return true; -} - -bool WebSocketGameSession::Deserialize(const rapidjson::Value &value) { - m_gameSessionId = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ID); - m_name = JsonHelper::SafelyDeserializeString(value, NAME); - m_fleetId = JsonHelper::SafelyDeserializeString(value, FLEET_ID); - m_gameSessionData = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_DATA); - m_matchmakerData = JsonHelper::SafelyDeserializeString(value, MATCHMAKER_DATA); - m_dnsName = JsonHelper::SafelyDeserializeString(value, DNS_NAME); - m_ipAddress = JsonHelper::SafelyDeserializeString(value, IP_ADDRESS); - - m_maximumPlayerSessionCount = JsonHelper::SafelyDeserializeInt(value, MAXIMUM_PLAYER_SESSION_COUNT); - m_port = JsonHelper::SafelyDeserializeInt(value, PORT); - - if (value.HasMember(GAME_PROPERTIES) && !value[GAME_PROPERTIES].IsNull()) { - for (auto itr = value[GAME_PROPERTIES].MemberBegin(); itr != value[GAME_PROPERTIES].MemberEnd(); ++itr) { - if (itr->name.IsString() && itr->value.IsString()) { - m_gameProperties[itr->name.GetString()] = itr->value.GetString(); - } - } - } - - return true; -} - -std::ostream &operator<<(std::ostream &os, const WebSocketGameSession &gameSession) { - const WebSocketGameSession *message = &gameSession; - os << message->Serialize(); - return os; -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketPlayer.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketPlayer.cpp deleted file mode 100644 index cca6f70d..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketPlayer.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - */ - -#include -#include -#include -#include - -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wshadow" // Ignore shadow variable warning for Linux/Mac -#endif - -namespace Aws { -namespace GameLift { -namespace Internal { - -std::string WebSocketPlayer::Serialize() const { - // Create the buffer & Writer for the object - rapidjson::StringBuffer buffer; - rapidjson::Writer writer(buffer); - - // Start the object and call Serialize to serialize. - writer.StartObject(); - if (Serialize(&writer)) { - writer.EndObject(); - return buffer.GetString(); - } - spdlog::warn("Could not parse into WebSocketPlayer"); - return ""; -} - -bool WebSocketPlayer::Deserialize(const std::string &jsonString) { - // Parse the json into a document - rapidjson::Document doc; - if (doc.Parse(jsonString.c_str()).HasParseError()) { - spdlog::error("WebSocketPlayer: Parse error found for: {}", jsonString); - return false; - } - - // Call Deserialize to populate the object's member variables - return Deserialize(doc); -} - -bool WebSocketPlayer::Serialize(rapidjson::Writer *writer) const { - - JsonHelper::WriteNonEmptyString(writer, PLAYER_ID, m_playerId); - - writer->String(PLAYER_ATTRIBUTES); - writer->StartObject(); - for (auto const &playerAttributesIter : m_playerAttributes) { - writer->String(playerAttributesIter.first.c_str()); - writer->StartObject(); - playerAttributesIter.second.Serialize(writer); - writer->EndObject(); - } - writer->EndObject(); - - writer->String(LATENCY_IN_MS); - writer->StartObject(); - for (auto const &latencyMsIter : m_latencyInMs) { - writer->String(latencyMsIter.first.c_str()); - writer->Int(latencyMsIter.second); - } - writer->EndObject(); - - JsonHelper::WriteNonEmptyString(writer, TEAM, m_team); - - return true; -} - -bool WebSocketPlayer::Deserialize(const rapidjson::Value &value) { - - m_playerId = JsonHelper::SafelyDeserializeString(value, PLAYER_ID); - m_team = JsonHelper::SafelyDeserializeString(value, TEAM); - - if (value.HasMember(PLAYER_ATTRIBUTES) && !value[PLAYER_ATTRIBUTES].IsNull()) { - for (auto itr = value[PLAYER_ATTRIBUTES].MemberBegin(); itr != value[PLAYER_ATTRIBUTES].MemberEnd(); ++itr) { - if (itr->name.IsString() && !itr->value.IsNull()) { - WebSocketAttributeValue value; - value.Deserialize(itr->value); - m_playerAttributes[itr->name.GetString()] = value; - } - } - } - - if (value.HasMember(LATENCY_IN_MS) && !value[LATENCY_IN_MS].IsNull()) { - for (auto itr = value[LATENCY_IN_MS].MemberBegin(); itr != value[LATENCY_IN_MS].MemberEnd(); ++itr) { - if (itr->name.IsString() && itr->value.IsInt()) { - m_latencyInMs[itr->name.GetString()] = itr->value.GetInt(); - } - } - } - - return true; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketPlayerSession.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketPlayerSession.cpp deleted file mode 100644 index d82b5a73..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/WebSocketPlayerSession.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool WebSocketPlayerSession::Serialize(rapidjson::Writer *writer) const { - JsonHelper::WriteNonEmptyString(writer, PLAYER_SESSION_ID, m_playerSessionId); - JsonHelper::WriteNonEmptyString(writer, PLAYER_ID, m_playerId); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ID, m_gameSessionId); - JsonHelper::WriteNonEmptyString(writer, FLEET_ID, m_fleetId); - JsonHelper::WritePositiveInt64(writer, CREATION_TIME, m_creationTime); - JsonHelper::WritePositiveInt64(writer, TERMINATION_TIME, m_terminationTime); - JsonHelper::WriteNonEmptyString(writer, STATUS, WebSocketPlayerSessionStatusMapper::GetNameForStatus(m_status)); - JsonHelper::WriteNonEmptyString(writer, IP_ADDRESS, m_ipAddress); - JsonHelper::WritePositiveInt(writer, PORT, m_port); - JsonHelper::WriteNonEmptyString(writer, PLAYER_DATA, m_playerData); - JsonHelper::WriteNonEmptyString(writer, DNS_NAME, m_dnsName); - return true; -} - -bool WebSocketPlayerSession::Deserialize(const rapidjson::Value &value) { - m_playerSessionId = JsonHelper::SafelyDeserializeString(value, PLAYER_SESSION_ID); - m_playerId = JsonHelper::SafelyDeserializeString(value, PLAYER_ID); - m_gameSessionId = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ID); - m_fleetId = JsonHelper::SafelyDeserializeString(value, FLEET_ID); - m_creationTime = JsonHelper::SafelyDeserializeInt64(value, CREATION_TIME); - m_terminationTime = JsonHelper::SafelyDeserializeInt64(value, TERMINATION_TIME); - m_status = WebSocketPlayerSessionStatusMapper::GetStatusForName(JsonHelper::SafelyDeserializeString(value, STATUS)); - m_ipAddress = JsonHelper::SafelyDeserializeString(value, IP_ADDRESS); - m_port = JsonHelper::SafelyDeserializeInt(value, PORT); - m_playerData = JsonHelper::SafelyDeserializeString(value, PLAYER_DATA); - m_dnsName = JsonHelper::SafelyDeserializeString(value, DNS_NAME); - return true; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/DescribePlayerSessionsAdapter.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/DescribePlayerSessionsAdapter.cpp deleted file mode 100644 index f349ab1e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/DescribePlayerSessionsAdapter.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -Server::Model::DescribePlayerSessionsResult DescribePlayerSessionsAdapter::convert(const WebSocketDescribePlayerSessionsResponse *webSocketResponse) { - Server::Model::DescribePlayerSessionsResult result; -#ifdef GAMELIFT_USE_STD - result.SetNextToken(webSocketResponse->GetNextToken()); - for (auto &webSocketPlayerSession : webSocketResponse->GetPlayerSessions()) { - Server::Model::PlayerSession playerSession = - Server::Model::PlayerSession() - .WithPlayerSessionId(webSocketPlayerSession.GetPlayerSessionId()) - .WithPlayerId(webSocketPlayerSession.GetPlayerId()) - .WithGameSessionId(webSocketPlayerSession.GetGameSessionId()) - .WithFleetId(webSocketPlayerSession.GetFleetId()) - .WithCreationTime(webSocketPlayerSession.GetCreationTime()) - .WithTerminationTime(webSocketPlayerSession.GetTerminationTime()) - .WithStatus(static_cast(static_cast(webSocketPlayerSession.GetStatus()))) - .WithIpAddress(webSocketPlayerSession.GetIpAddress()) - .WithPort(webSocketPlayerSession.GetPort()) - .WithPlayerData(webSocketPlayerSession.GetPlayerData()) - .WithDnsName(webSocketPlayerSession.GetDnsName()); - result.AddPlayerSession(playerSession); - } -#else - result.SetNextToken(webSocketResponse->GetNextToken().c_str()); - for (auto &webSocketPlayerSession : webSocketResponse->GetPlayerSessions()) { - Server::Model::PlayerSession playerSession = - Server::Model::PlayerSession() - .WithPlayerSessionId(webSocketPlayerSession.GetPlayerSessionId().c_str()) - .WithPlayerId(webSocketPlayerSession.GetPlayerId().c_str()) - .WithGameSessionId(webSocketPlayerSession.GetGameSessionId().c_str()) - .WithFleetId(webSocketPlayerSession.GetFleetId().c_str()) - .WithCreationTime(webSocketPlayerSession.GetCreationTime()) - .WithTerminationTime(webSocketPlayerSession.GetTerminationTime()) - .WithStatus(static_cast(static_cast(webSocketPlayerSession.GetStatus()))) - .WithIpAddress(webSocketPlayerSession.GetIpAddress().c_str()) - .WithPort(webSocketPlayerSession.GetPort()) - .WithPlayerData(webSocketPlayerSession.GetPlayerData().c_str()) - .WithDnsName(webSocketPlayerSession.GetDnsName().c_str()); - result.AddPlayerSession(playerSession); - } -#endif - - return result; -} - -WebSocketDescribePlayerSessionsRequest DescribePlayerSessionsAdapter::convert(const Server::Model::DescribePlayerSessionsRequest &request) { - return WebSocketDescribePlayerSessionsRequest() - .WithGameSessionId(request.GetGameSessionId()) - .WithPlayerId(request.GetPlayerId()) - .WithPlayerSessionId(request.GetPlayerSessionId()) - .WithPlayerSessionStatusFilter(request.GetPlayerSessionStatusFilter()) - .WithNextToken(request.GetNextToken()) - .WithLimit(request.GetLimit()); -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/GetFleetRoleCredentialsAdapter.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/GetFleetRoleCredentialsAdapter.cpp deleted file mode 100644 index cbc9e141..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/GetFleetRoleCredentialsAdapter.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -Server::Model::GetFleetRoleCredentialsResult GetFleetRoleCredentialsAdapter::convert(const WebSocketGetFleetRoleCredentialsResponse *webSocketResponse) { - Server::Model::GetFleetRoleCredentialsResult result; - - result.SetAssumedUserRoleArn(webSocketResponse->GetAssumedRoleUserArn().c_str()); - result.SetAssumedRoleId(webSocketResponse->GetAssumedRoleId().c_str()); - result.SetAccessKeyId(webSocketResponse->GetAccessKeyId().c_str()); - result.SetSecretAccessKey(webSocketResponse->GetSecretAccessKey().c_str()); - result.SetSessionToken(webSocketResponse->GetSessionToken().c_str()); - // time_t is Unix epoch in seconds, and webSocketResponse->GetExpiration() returns time in milliseconds - // This is why we are dividing webSocketResponse->GetExpiration() by 1000 - int64_t expirationTimeInMilliSeconds = webSocketResponse->GetExpiration(); - int64_t expirationTimeInSeconds = expirationTimeInMilliSeconds / 1000; - result.SetExpiration(static_cast(expirationTimeInSeconds)); - - return result; -} - -WebSocketGetFleetRoleCredentialsRequest GetFleetRoleCredentialsAdapter::convert(const Server::Model::GetFleetRoleCredentialsRequest &request) { - return WebSocketGetFleetRoleCredentialsRequest().WithRoleArn(request.GetRoleArn()).WithRoleSessionName(request.GetRoleSessionName()); -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/StartMatchBackfillAdapter.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/StartMatchBackfillAdapter.cpp deleted file mode 100644 index bed2a86f..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/adapter/StartMatchBackfillAdapter.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -Server::Model::StartMatchBackfillResult StartMatchBackfillAdapter::convert(const WebSocketStartMatchBackfillResponse *webSocketResponse) { - Server::Model::StartMatchBackfillResult result; - if (webSocketResponse) { - result.SetTicketId(webSocketResponse->GetTicketId().c_str()); - } - return result; -} - -WebSocketStartMatchBackfillRequest StartMatchBackfillAdapter::convert(const Server::Model::StartMatchBackfillRequest &request) { - std::vector requestPlayersAsVector; -#ifdef GAMELIFT_USE_STD - requestPlayersAsVector = request.GetPlayers(); -#else - int countOfPlayers; - const Server::Model::Player *requestPlayers = request.GetPlayers(countOfPlayers); - for (int i = 0; i < countOfPlayers; i++) { - Server::Model::Player playerToStore = *(requestPlayers + i); - requestPlayersAsVector.push_back(playerToStore); - } -#endif - std::vector players; - - for (auto it = requestPlayersAsVector.begin(); it != requestPlayersAsVector.end(); ++it) { - Server::Model::Player playerToConvert = *it; - WebSocketPlayer player = WebSocketPlayer() - .WithPlayerId(playerToConvert.GetPlayerId()) - .WithTeam(playerToConvert.GetTeam()) - .WithPlayerAttributes(fetchAndConvertAttributes(playerToConvert)) - .WithLatencyInMs(fetchAndConvertLatency(playerToConvert)); - players.push_back(player); - } - - return WebSocketStartMatchBackfillRequest() - .WithTicketId(request.GetTicketId()) - .WithGameSessionArn(request.GetGameSessionArn()) - .WithMatchmakingConfigurationArn(request.GetMatchmakingConfigurationArn()) - .WithPlayers(players); -} - -std::map StartMatchBackfillAdapter::fetchAndConvertLatency(const Server::Model::Player &player) { - std::map result; -#ifdef GAMELIFT_USE_STD - result = player.GetLatencyInMs(); -#else - int countOfLatencies; - const Server::Model::Player::RegionAndLatency *regionAndLatency = player.GetLatencyMs(countOfLatencies); - for (int i = 0; i < countOfLatencies; i++) { - Server::Model::Player::RegionAndLatency latencyToConvert = *(regionAndLatency + i); - result[latencyToConvert.GetRegion()] = latencyToConvert.GetLatencyMs(); - } -#endif - - return result; -} - -std::map StartMatchBackfillAdapter::fetchAndConvertAttributes(const Server::Model::Player &player) { - std::map attrs; -#ifdef GAMELIFT_USE_STD - attrs = player.GetPlayerAttributes(); -#else - int countOfAttributes; - const Server::Model::Player::NamedAttribute *attributes = player.GetPlayerAttributes(countOfAttributes); - for (int i = 0; i < countOfAttributes; i++) { - Server::Model::Player::NamedAttribute attributeToConvert = *(attributes + i); - attrs[attributeToConvert.GetName()] = attributeToConvert.GetValue(); - } -#endif - - std::map result; - for (auto const &attr : attrs) { - Server::Model::AttributeValue attributeValue = attr.second; - WebSocketAttributeValue value; - switch (attributeValue.GetType()) { - case Server::Model::AttributeValue::AttrType::NONE: - value.SetAttributeType(WebSocketAttrType::NONE); - break; - case Server::Model::AttributeValue::AttrType::STRING: - value.SetAttributeType(WebSocketAttrType::STRING); - value.SetS(attributeValue.GetS()); - break; - case Server::Model::AttributeValue::AttrType::DOUBLE: - value.SetAttributeType(WebSocketAttrType::DOUBLE); - value.SetN(attributeValue.GetN()); - break; - case Server::Model::AttributeValue::AttrType::STRING_LIST: - value.SetAttributeType(WebSocketAttrType::STRING_LIST); - value.SetSL(convertStringList(attributeValue)); - break; - case Server::Model::AttributeValue::AttrType::STRING_DOUBLE_MAP: - value.SetAttributeType(WebSocketAttrType::STRING_DOUBLE_MAP); - value.SetSDM(convertStringDoubleMap(attributeValue)); - break; - default: - value.SetAttributeType(WebSocketAttrType::NONE); - break; - } - result[attr.first] = value; - } - return result; -} - -std::vector StartMatchBackfillAdapter::convertStringList(const Server::Model::AttributeValue &attributeValue) { - std::vector result; - -#ifdef GAMELIFT_USE_STD - result = attributeValue.GetSL(); -#else - int countOfStringList; - const Server::Model::AttributeValue::AttributeStringType *stringList = attributeValue.GetSL(countOfStringList); - for (int i = 0; i < countOfStringList; i++) { - const Server::Model::AttributeValue::AttributeStringType *stringListItemPointer = stringList + i; - std::string itemAsString = std::string(*stringListItemPointer); - result.push_back(itemAsString); - } -#endif - - return result; -} - -std::map StartMatchBackfillAdapter::convertStringDoubleMap(const Server::Model::AttributeValue &attributeValue) { - std::map result; - -#ifdef GAMELIFT_USE_STD - result = attributeValue.GetSDM(); -#else - int countOfStringMap; - const Server::Model::AttributeValue::KeyAndValue *stringAndDoubleMap = attributeValue.GetSDM(countOfStringMap); - for (int i = 0; i < countOfStringMap; i++) { - Server::Model::AttributeValue::KeyAndValue keyAndValue = *(stringAndDoubleMap + i); - std::string key = std::string(keyAndValue.GetKey()); - result[key] = keyAndValue.GetValue(); - } -#endif - - return result; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/CreateGameSessionMessage.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/CreateGameSessionMessage.cpp deleted file mode 100644 index 7c3c525e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/CreateGameSessionMessage.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -bool CreateGameSessionMessage::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ID, m_gameSessionId); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_NAME, m_gameSessionName); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_DATA, m_gameSessionData); - JsonHelper::WriteNonEmptyString(writer, MATCHMAKER_DATA, m_matchmakerData); - JsonHelper::WriteNonEmptyString(writer, DNS_NAME, m_dnsName); - JsonHelper::WriteNonEmptyString(writer, IP_ADDRESS, m_ipAddress); - JsonHelper::WritePositiveInt(writer, MAXIMUM_PLAYER_SESSION_COUNT, m_maximumPlayerSessionCount); - JsonHelper::WritePositiveInt(writer, PORT, m_port); - - writer->String(GAME_PROPERTIES); - writer->StartObject(); - for (auto const &property : m_gameProperties) { - writer->String(property.first.c_str()); - writer->String(property.second.c_str()); - } - writer->EndObject(); - return true; -} - -bool CreateGameSessionMessage::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_gameSessionId = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ID); - m_gameSessionName = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_NAME); - m_gameSessionData = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_DATA); - m_matchmakerData = JsonHelper::SafelyDeserializeString(value, MATCHMAKER_DATA); - m_dnsName = JsonHelper::SafelyDeserializeString(value, DNS_NAME); - m_ipAddress = JsonHelper::SafelyDeserializeString(value, IP_ADDRESS); - m_maximumPlayerSessionCount = JsonHelper::SafelyDeserializeInt(value, MAXIMUM_PLAYER_SESSION_COUNT); - m_port = JsonHelper::SafelyDeserializeInt(value, PORT); - - if (value.HasMember(GAME_PROPERTIES) && !value[GAME_PROPERTIES].IsNull()) { - for (auto itr = value[GAME_PROPERTIES].MemberBegin(); itr != value[GAME_PROPERTIES].MemberEnd(); ++itr) { - if (itr->name.IsString() && itr->value.IsString()) { - m_gameProperties[itr->name.GetString()] = itr->value.GetString(); - } - } - } - - return true; -} - -std::ostream &operator<<(std::ostream &os, const CreateGameSessionMessage &createGameSessionMessage) { - const Message *message = &createGameSessionMessage; - os << message->Serialize(); - return os; -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/RefreshConnectionMessage.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/RefreshConnectionMessage.cpp deleted file mode 100644 index 9eff5839..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/RefreshConnectionMessage.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool RefreshConnectionMessage::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, REFRESH_CONNECTION_ENDPOINT, m_refreshConnectionEndpoint); - JsonHelper::WriteNonEmptyString(writer, AUTH_TOKEN, m_authToken); - return true; -} - -bool RefreshConnectionMessage::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_refreshConnectionEndpoint = JsonHelper::SafelyDeserializeString(value, REFRESH_CONNECTION_ENDPOINT); - m_authToken = JsonHelper::SafelyDeserializeString(value, AUTH_TOKEN); - return true; -} - -std::ostream &operator<<(std::ostream &os, const RefreshConnectionMessage &refreshConnectionMessage) { - const Message *message = &refreshConnectionMessage; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/TerminateProcessMessage.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/TerminateProcessMessage.cpp deleted file mode 100644 index 40751154..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/TerminateProcessMessage.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -bool TerminateProcessMessage::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WritePositiveInt64(writer, TERMINATION_TIME, m_terminationTime); - return true; -} - -bool TerminateProcessMessage::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_terminationTime = JsonHelper::SafelyDeserializeInt64(value, TERMINATION_TIME); - return true; -} - -std::ostream &operator<<(std::ostream &os, const TerminateProcessMessage &terminateProcessMessage) { - const Message *message = &terminateProcessMessage; - os << message->Serialize(); - return os; -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/UpdateGameSessionMessage.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/UpdateGameSessionMessage.cpp deleted file mode 100644 index ea48342a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/message/UpdateGameSessionMessage.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -bool UpdateGameSessionMessage::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - // Serialize game session object - writer->String(GAME_SESSION); - writer->StartObject(); - m_gameSession.Serialize(writer); - writer->EndObject(); - // Serialize update game session fields - JsonHelper::WriteNonEmptyString(writer, UPDATE_REASON, m_updateReason); - JsonHelper::WriteNonEmptyString(writer, BACKFILL_TICKET_ID, m_backfillTicketId); - - return true; -} - -bool UpdateGameSessionMessage::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - // Deserialize GameSession - WebSocketGameSession gameSession; - if (value.HasMember(GAME_SESSION) && !value[GAME_SESSION].IsNull()) { - gameSession.Deserialize(value[GAME_SESSION]); - } - m_gameSession = gameSession; - // Deserialize rest of fields - m_updateReason = JsonHelper::SafelyDeserializeString(value, UPDATE_REASON); - m_backfillTicketId = JsonHelper::SafelyDeserializeString(value, BACKFILL_TICKET_ID); - - return true; -} - -std::ostream &operator<<(std::ostream &os, const UpdateGameSessionMessage &updateGameSessionMessage) { - const Message *message = &updateGameSessionMessage; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/AcceptPlayerSessionRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/AcceptPlayerSessionRequest.cpp deleted file mode 100644 index 6d13d2d5..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/AcceptPlayerSessionRequest.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool AcceptPlayerSessionRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ID, m_gameSessionId); - JsonHelper::WriteNonEmptyString(writer, PLAYER_SESSION_ID, m_playerSessionId); - return true; -} - -bool AcceptPlayerSessionRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_gameSessionId = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ID); - m_playerSessionId = JsonHelper::SafelyDeserializeString(value, PLAYER_SESSION_ID); - return true; -} - -std::ostream &operator<<(std::ostream &os, const AcceptPlayerSessionRequest &acceptPlayerSessionRequest) { - const Message *message = &acceptPlayerSessionRequest; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/ActivateGameSessionRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/ActivateGameSessionRequest.cpp deleted file mode 100644 index 15082fbe..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/ActivateGameSessionRequest.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -ActivateGameSessionRequest::ActivateGameSessionRequest() { SetAction(ACTIVATE_GAME_SESSION); } - -ActivateGameSessionRequest::ActivateGameSessionRequest(std::string gameSessionId) : m_gameSessionId(gameSessionId) { SetAction(ACTIVATE_GAME_SESSION); } - -bool ActivateGameSessionRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ID, m_gameSessionId); - return true; -} - -bool ActivateGameSessionRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_gameSessionId = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ID); - return true; -} - -std::ostream &operator<<(std::ostream &os, const ActivateGameSessionRequest &activateGameSessionRequest) { - const Message *message = &activateGameSessionRequest; - os << message->Serialize(); - return os; -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/ActivateServerProcessRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/ActivateServerProcessRequest.cpp deleted file mode 100644 index 6e7aafe5..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/ActivateServerProcessRequest.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -ActivateServerProcessRequest::ActivateServerProcessRequest() : m_port(-1) { SetAction(ACTIVATE_SERVER_PROCESS); } - -ActivateServerProcessRequest::ActivateServerProcessRequest(std::string sdkVersion, std::string sdkLanguage, - std::string sdkToolName, std::string sdkToolVersion, int port, - const Aws::GameLift::Server::LogParameters &logParameters) - : m_sdkVersion(sdkVersion), m_sdkLanguage(sdkLanguage), m_sdkToolName(sdkToolName), m_sdkToolVersion(sdkToolVersion), m_port(port), m_logParameters(logParameters) { - SetAction(ACTIVATE_SERVER_PROCESS); -}; - -bool ActivateServerProcessRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, SDK_VERSION, m_sdkVersion); - JsonHelper::WriteNonEmptyString(writer, SDK_LANGUAGE, m_sdkLanguage); - JsonHelper::WriteNonEmptyString(writer, SDK_TOOL_NAME, m_sdkToolName); - JsonHelper::WriteNonEmptyString(writer, SDK_TOOL_VERSION, m_sdkToolVersion); - JsonHelper::WritePositiveInt(writer, PORT, m_port); - JsonHelper::WriteLogParameters(writer, LOG_PATHS, m_logParameters); - return true; -} - -bool ActivateServerProcessRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_sdkVersion = JsonHelper::SafelyDeserializeString(value, SDK_VERSION); - m_sdkLanguage = JsonHelper::SafelyDeserializeString(value, SDK_LANGUAGE); - m_sdkToolName = JsonHelper::SafelyDeserializeString(value, SDK_TOOL_NAME); - m_sdkToolVersion = JsonHelper::SafelyDeserializeString(value, SDK_TOOL_VERSION); - m_port = JsonHelper::SafelyDeserializeInt(value, PORT); - m_logParameters = JsonHelper::SafelyDeserializeLogParameters(value, LOG_PATHS); - return true; -} - -std::ostream &operator<<(std::ostream &os, const ActivateServerProcessRequest &activateServerProcessRequest) { - const Message *message = &activateServerProcessRequest; - os << message->Serialize(); - return os; -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/HeartbeatServerProcessRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/HeartbeatServerProcessRequest.cpp deleted file mode 100644 index 3bd8d38a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/HeartbeatServerProcessRequest.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -bool HeartbeatServerProcessRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - writer->String(HEALTH_STATUS); - writer->Bool(m_healthy); - return true; -} - -bool HeartbeatServerProcessRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_healthy = value.HasMember(HEALTH_STATUS) && value[HEALTH_STATUS].IsBool() ? value[HEALTH_STATUS].GetBool() : false; - return true; -} - -std::ostream &operator<<(std::ostream &os, const HeartbeatServerProcessRequest &heartbeatServerProcessRequest) { - const Message *message = &heartbeatServerProcessRequest; - os << message->Serialize(); - return os; -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/RemovePlayerSessionRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/RemovePlayerSessionRequest.cpp deleted file mode 100644 index 5672c02f..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/RemovePlayerSessionRequest.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool RemovePlayerSessionRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ID, m_gameSessionId); - JsonHelper::WriteNonEmptyString(writer, PLAYER_SESSION_ID, m_playerSessionId); - return true; -} - -bool RemovePlayerSessionRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_gameSessionId = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ID); - m_playerSessionId = JsonHelper::SafelyDeserializeString(value, PLAYER_SESSION_ID); - return true; -} - -std::ostream &operator<<(std::ostream &os, const RemovePlayerSessionRequest &removePlayerSessionRequest) { - const Message *message = &removePlayerSessionRequest; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/TerminateServerProcessRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/TerminateServerProcessRequest.cpp deleted file mode 100644 index 456dc5de..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/TerminateServerProcessRequest.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -TerminateServerProcessRequest::TerminateServerProcessRequest() { SetAction(TERMINATE_SERVER_PROCESS); } - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/UpdatePlayerSessionCreationPolicyRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/UpdatePlayerSessionCreationPolicyRequest.cpp deleted file mode 100644 index fa3beedd..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/UpdatePlayerSessionCreationPolicyRequest.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -bool UpdatePlayerSessionCreationPolicyRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ID, m_gameSessionId); - JsonHelper::WriteNonEmptyString(writer, PLAYER_SESSION_POLICY, GetPlayerSessionCreationPolicyAsString()); - return true; -} - -bool UpdatePlayerSessionCreationPolicyRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_gameSessionId = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ID); - std::string policyAsString = JsonHelper::SafelyDeserializeString(value, PLAYER_SESSION_POLICY); - SetPlayerSessionCreationPolicy(policyAsString); - return true; -} - -std::ostream &operator<<(std::ostream &os, const UpdatePlayerSessionCreationPolicyRequest &updatePlayerSessionCreationPolicyRequest) { - const Message *message = &updatePlayerSessionCreationPolicyRequest; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketDescribePlayerSessionsRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketDescribePlayerSessionsRequest.cpp deleted file mode 100644 index 9622d4b2..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketDescribePlayerSessionsRequest.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool WebSocketDescribePlayerSessionsRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ID, m_gameSessionId); - JsonHelper::WriteNonEmptyString(writer, PLAYER_ID, m_playerId); - JsonHelper::WriteNonEmptyString(writer, PLAYER_SESSION_ID, m_playerSessionId); - JsonHelper::WriteNonEmptyString(writer, PLAYER_SESSION_STATUS_FILTER, m_playerSessionStatusFilter); - JsonHelper::WriteNonEmptyString(writer, NEXT_TOKEN, m_nextToken); - JsonHelper::WritePositiveInt(writer, LIMIT, m_limit); - - return true; -} - -bool WebSocketDescribePlayerSessionsRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - - m_gameSessionId = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ID); - m_playerId = JsonHelper::SafelyDeserializeString(value, PLAYER_ID); - m_playerSessionId = JsonHelper::SafelyDeserializeString(value, PLAYER_SESSION_ID); - m_playerSessionStatusFilter = JsonHelper::SafelyDeserializeString(value, PLAYER_SESSION_STATUS_FILTER); - m_nextToken = JsonHelper::SafelyDeserializeString(value, NEXT_TOKEN); - m_limit = JsonHelper::SafelyDeserializeInt(value, LIMIT); - - return true; -} - -std::ostream &operator<<(std::ostream &os, const WebSocketDescribePlayerSessionsRequest &describePlayerSessionsRequest) { - const Message *message = &describePlayerSessionsRequest; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketGetComputeCertificateRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketGetComputeCertificateRequest.cpp deleted file mode 100644 index b5638729..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketGetComputeCertificateRequest.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool WebSocketGetComputeCertificateRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - return true; -} - -bool WebSocketGetComputeCertificateRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - return true; -} - -std::ostream &operator<<(std::ostream &os, const WebSocketGetComputeCertificateRequest &getComputeCertificateRequest) { - const Message *message = &getComputeCertificateRequest; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketGetFleetRoleCredentialsRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketGetFleetRoleCredentialsRequest.cpp deleted file mode 100644 index 1ff40b38..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketGetFleetRoleCredentialsRequest.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool WebSocketGetFleetRoleCredentialsRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - - JsonHelper::WriteNonEmptyString(writer, ROLE_ARN, m_roleArn); - JsonHelper::WriteNonEmptyString(writer, ROLE_SESSION_NAME, m_roleSessionName); - - return true; -} - -bool WebSocketGetFleetRoleCredentialsRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - - m_roleArn = JsonHelper::SafelyDeserializeString(value, ROLE_ARN); - m_roleSessionName = JsonHelper::SafelyDeserializeString(value, ROLE_SESSION_NAME); - - return true; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketStartMatchBackfillRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketStartMatchBackfillRequest.cpp deleted file mode 100644 index 3b85bcde..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketStartMatchBackfillRequest.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -WebSocketStartMatchBackfillRequest::WebSocketStartMatchBackfillRequest() { SetAction(ACTION); }; - -bool WebSocketStartMatchBackfillRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - - JsonHelper::WriteNonEmptyString(writer, TICKET_ID, m_ticketId); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ARN, m_gameSessionArn); - JsonHelper::WriteNonEmptyString(writer, MATCHMAKING_CONFIGURATION_ARN, m_matchmakingConfigurationArn); - - writer->String(PLAYERS); - writer->StartArray(); - for (const WebSocketPlayer &player : m_players) { - writer->StartObject(); - player.Serialize(writer); - writer->EndObject(); - } - writer->EndArray(); - - return true; -} - -bool WebSocketStartMatchBackfillRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - - m_ticketId = JsonHelper::SafelyDeserializeString(value, TICKET_ID); - m_gameSessionArn = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ARN); - m_matchmakingConfigurationArn = JsonHelper::SafelyDeserializeString(value, MATCHMAKING_CONFIGURATION_ARN); - - m_players.clear(); - if (value.HasMember(PLAYERS) && !value[PLAYERS].IsNull()) { - auto playerList = value[PLAYERS].GetArray(); - for (rapidjson::SizeType i = 0; i < playerList.Size(); i++) { - auto &player = playerList[i]; - if (!player.IsNull()) { - WebSocketPlayer webSocketPlayer; - webSocketPlayer.Deserialize(player); - m_players.push_back(webSocketPlayer); - } - } - } - - return true; -} - -std::ostream &operator<<(std::ostream &os, const WebSocketStartMatchBackfillRequest &startMatchBackfillRequest) { - const Message *message = &startMatchBackfillRequest; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketStopMatchBackfillRequest.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketStopMatchBackfillRequest.cpp deleted file mode 100644 index 00e2ac27..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/request/WebSocketStopMatchBackfillRequest.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -bool WebSocketStopMatchBackfillRequest::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, GAME_SESSION_ARN, m_gameSessionArn); - JsonHelper::WriteNonEmptyString(writer, MATCHMAKING_CONFIG_ARN, m_matchmakingConfigurationArn); - JsonHelper::WriteNonEmptyString(writer, TICKET_ID, m_ticketId); - return true; -} - -bool WebSocketStopMatchBackfillRequest::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_gameSessionArn = JsonHelper::SafelyDeserializeString(value, GAME_SESSION_ARN); - m_matchmakingConfigurationArn = JsonHelper::SafelyDeserializeString(value, MATCHMAKING_CONFIG_ARN); - m_ticketId = JsonHelper::SafelyDeserializeString(value, TICKET_ID); - return true; -} - -std::ostream &operator<<(std::ostream &os, const WebSocketStopMatchBackfillRequest &stopMatchBackfillMessage) { - const Message *message = &stopMatchBackfillMessage; - os << message->Serialize(); - return os; -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketDescribePlayerSessionsResponse.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketDescribePlayerSessionsResponse.cpp deleted file mode 100644 index 6ac3b983..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketDescribePlayerSessionsResponse.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool WebSocketDescribePlayerSessionsResponse::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - - JsonHelper::WriteNonEmptyString(writer, NEXT_TOKEN, m_nextToken); - - writer->String(PLAYER_SESSIONS); - writer->StartArray(); - for (const WebSocketPlayerSession &playerSession : m_playerSessions) { - writer->StartObject(); - playerSession.Serialize(writer); - writer->EndObject(); - } - writer->EndArray(); - - return true; -} - -bool WebSocketDescribePlayerSessionsResponse::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - - m_nextToken = JsonHelper::SafelyDeserializeString(value, NEXT_TOKEN); - m_playerSessions.clear(); - if (value.HasMember(PLAYER_SESSIONS) && !value[PLAYER_SESSIONS].IsNull()) { - auto playerSessions = value[PLAYER_SESSIONS].GetArray(); - for (rapidjson::SizeType i = 0; i < playerSessions.Size(); i++) { - auto &playerSession = playerSessions[i]; - if (!playerSession.IsNull()) { - WebSocketPlayerSession webSocketPlayerSession; - webSocketPlayerSession.Deserialize(playerSession); - m_playerSessions.push_back(webSocketPlayerSession); - } - } - } - - return true; -} - -std::ostream &operator<<(std::ostream &os, const WebSocketDescribePlayerSessionsResponse &describePlayerSessionsResponse) { - const Message *message = &describePlayerSessionsResponse; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketGetComputeCertificateResponse.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketGetComputeCertificateResponse.cpp deleted file mode 100644 index 60614b54..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketGetComputeCertificateResponse.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool WebSocketGetComputeCertificateResponse::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - - JsonHelper::WriteNonEmptyString(writer, COMPUTE_NAME, m_computeName); - JsonHelper::WriteNonEmptyString(writer, CERTIFICATE_PATH, m_certificatePath); - - return true; -} - -bool WebSocketGetComputeCertificateResponse::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - - m_computeName = JsonHelper::SafelyDeserializeString(value, COMPUTE_NAME); - m_certificatePath = JsonHelper::SafelyDeserializeString(value, CERTIFICATE_PATH); - - return true; -} - -std::ostream &operator<<(std::ostream &os, const WebSocketGetComputeCertificateResponse &webSocketGetComputeCertificateResponse) { - const Message *message = &webSocketGetComputeCertificateResponse; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketGetFleetRoleCredentialsResponse.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketGetFleetRoleCredentialsResponse.cpp deleted file mode 100644 index 42a6dc21..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketGetFleetRoleCredentialsResponse.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool WebSocketGetFleetRoleCredentialsResponse::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - - JsonHelper::WriteNonEmptyString(writer, ASSUMED_ROLE_USER_ARN, m_assumedRoleUserArn); - JsonHelper::WriteNonEmptyString(writer, ASSUMED_ROLE_ID, m_assumedRoleId); - JsonHelper::WriteNonEmptyString(writer, ACCESS_KEY_ID, m_accessKeyId); - JsonHelper::WriteNonEmptyString(writer, SECRET_ACCESS_KEY, m_secretAccessKey); - JsonHelper::WriteNonEmptyString(writer, SESSION_TOKEN, m_sessionToken); - JsonHelper::WritePositiveInt64(writer, EXPIRATION, m_expiration); - - return true; -} - -bool WebSocketGetFleetRoleCredentialsResponse::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - - m_assumedRoleUserArn = JsonHelper::SafelyDeserializeString(value, ASSUMED_ROLE_USER_ARN); - m_assumedRoleId = JsonHelper::SafelyDeserializeString(value, ASSUMED_ROLE_ID); - m_accessKeyId = JsonHelper::SafelyDeserializeString(value, ACCESS_KEY_ID); - m_secretAccessKey = JsonHelper::SafelyDeserializeString(value, SECRET_ACCESS_KEY); - m_sessionToken = JsonHelper::SafelyDeserializeString(value, SESSION_TOKEN); - m_expiration = JsonHelper::SafelyDeserializeInt64(value, EXPIRATION); - - return true; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketStartMatchBackfillResponse.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketStartMatchBackfillResponse.cpp deleted file mode 100644 index 24c923f9..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/model/response/WebSocketStartMatchBackfillResponse.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -bool WebSocketStartMatchBackfillResponse::Serialize(rapidjson::Writer *writer) const { - Message::Serialize(writer); - JsonHelper::WriteNonEmptyString(writer, TICKET_ID, m_ticketId); - return true; -} - -bool WebSocketStartMatchBackfillResponse::Deserialize(const rapidjson::Value &value) { - Message::Deserialize(value); - m_ticketId = JsonHelper::SafelyDeserializeString(value, TICKET_ID); - return true; -} - -std::ostream &operator<<(std::ostream &os, const WebSocketStartMatchBackfillResponse &startMatchBackfillResponse) { - const Message *message = &startMatchBackfillResponse; - os << message->Serialize(); - return os; -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/GameLiftWebSocketClientManager.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/GameLiftWebSocketClientManager.cpp deleted file mode 100644 index e7713a45..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/GameLiftWebSocketClientManager.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -#include -#include - -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { - -GenericOutcome GameLiftWebSocketClientManager::Connect(std::string websocketUrl, const std::string &authToken, const std::string &processId, - const std::string &hostId, const std::string &fleetId, const std::map &sigV4QueryParameters) { - spdlog::info("Connecting to GameLift WebSocket server. websocketUrl: {}, processId: {}, hostId: {}, fleetId: {}", - websocketUrl.c_str(), processId.c_str(), hostId.c_str(), fleetId.c_str()); - - // Due to the websocket library we're using, base URLs must end with a "/". Ensure that it is - // present. - if (!EndsWith(websocketUrl, REQUIRED_URL_ENDING)) { - websocketUrl = websocketUrl + REQUIRED_URL_ENDING; - } - - // Build the WebSocket URI - std::string sdkVersion = Server::GetSdkVersion().GetResult(); - std::string idempotencyToken = RandomStringGenerator::GenerateRandomAlphaNumericString(32); - Uri::UriBuilder uriBuilder = Uri::UriBuilder() - .WithBaseUri(websocketUrl) - .AddQueryParam(PID_KEY, processId) - .AddQueryParam(SDK_VERSION_KEY, sdkVersion) - .AddQueryParam(FLAVOR_KEY, GameLiftServerState::LANGUAGE) - .AddQueryParam(COMPUTE_ID_KEY, hostId) - .AddQueryParam(FLEET_ID_KEY, fleetId) - .AddQueryParam(IDEMPOTENCY_TOKEN_KEY, idempotencyToken); - - if (!authToken.empty()) { - uriBuilder.AddQueryParam(AUTH_TOKEN_KEY, authToken); - } else if (!sigV4QueryParameters.empty()) { - for (auto sigV4QueryParameter: sigV4QueryParameters) { - uriBuilder.AddQueryParam(sigV4QueryParameter.first, sigV4QueryParameter.second); - } - } - Uri uri = uriBuilder.Build(); - - // delegate to the websocket client wrapper to connect - return m_webSocketClientWrapper->Connect(uri); -} - -GenericOutcome GameLiftWebSocketClientManager::SendSocketMessage(Message &message) { - // Serialize the message - std::string jsonMessage = message.Serialize(); - - GenericOutcome outcome = m_webSocketClientWrapper->SendSocketMessage(message.GetRequestId(), jsonMessage); - return outcome; -} - -void GameLiftWebSocketClientManager::Disconnect() { m_webSocketClientWrapper->Disconnect(); } - -bool GameLiftWebSocketClientManager::EndsWith(const std::string &actualString, const std::string &ending) { - const int lengthDifference = (int)(actualString.length() - ending.length()); - if (lengthDifference >= 0) { - return actualString.compare(lengthDifference, ending.length(), ending) == 0; - } else { - return false; - } -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/WebSocketppClientWrapper.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/WebSocketppClientWrapper.cpp deleted file mode 100644 index d43d97a0..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/WebSocketppClientWrapper.cpp +++ /dev/null @@ -1,430 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -WebSocketppClientWrapper::WebSocketppClientWrapper(std::shared_ptr webSocketClient) - : m_webSocketClient(webSocketClient), m_connectionStateChanged(false) { - // configure logging. comment these out to get websocket logs on stdout for debugging - m_webSocketClient->clear_access_channels(websocketpp::log::alevel::all); - m_webSocketClient->clear_error_channels(websocketpp::log::elevel::all); - - // initialize ASIO - m_webSocketClient->init_asio(); - - // start in perpetual mode (do not exit processing loop when there are no connections) - m_webSocketClient->start_perpetual(); - - // Kick off two threads that will own up to two parallel connections. These threads will live - // until the SDK is shutdown and alternate handling connections. If a connection fails to open, - // the thread will not hang. Instead, the thread will simply wait for another connection to - // appear in queue. - // - // Flow of logic in the two threads: - // --- SDK initialized --- - // socket_thread_1: waiting for connection... - // socket_thread_2: waiting for connection... - // --- Initial connection happens --- - // socket_thread_1: handling 1st connection - // socket_thread_2: waiting for connection... - // --- Connection refresh begins --- - // socket_thread_1: finish handling 1st connection messages - // socket_thread_2: handling 2nd connection - // --- Connection 1 closes --- - // socket_thread_1: waiting for connection... - // socket_thread_2: handling 2nd connection - // --- SDK shut down, and WebSocket client "->stop_perpetual()" is invoked --- - // socket_thread_1: No longer waits for a connection, thread ends - // socket_thread_2: Finishes handling 2nd connection, then thread ends - m_socket_thread_1 = std::unique_ptr(new std::thread([this] { m_webSocketClient->run(); })); - m_socket_thread_2 = std::unique_ptr(new std::thread([this] { m_webSocketClient->run(); })); - - // Set callbacks - using std::placeholders::_1; - using std::placeholders::_2; - - // Set timeout waiting for GameLift websocket server to respond on initial connection. - // See: https://github.com/zaphoyd/websocketpp/blob/master/websocketpp/connection.hpp#L501 - m_webSocketClient->set_open_handshake_timeout(WEBSOCKET_OPEN_HANDSHAKE_TIMEOUT_MILLIS); - - m_webSocketClient->set_tls_init_handler(std::bind(&WebSocketppClientWrapper::OnTlsInit, this, _1)); - m_webSocketClient->set_open_handler(std::bind(&WebSocketppClientWrapper::OnConnected, this, _1)); - m_webSocketClient->set_message_handler(std::bind(&WebSocketppClientWrapper::OnMessage, this, _1, _2)); - m_webSocketClient->set_fail_handler(std::bind(&WebSocketppClientWrapper::OnError, this, _1)); - m_webSocketClient->set_close_handler(std::bind(&WebSocketppClientWrapper::OnClose, this, _1)); - m_webSocketClient->set_interrupt_handler(std::bind(&WebSocketppClientWrapper::OnInterrupt, this, _1)); -} - -WebSocketppClientWrapper::~WebSocketppClientWrapper() { - // stop perpetual mode, allowing the websocketClient to destroy itself - if (m_webSocketClient) { - m_webSocketClient->stop_perpetual(); - } - - spdlog::info("Destroying WebsocketPPClientWrapper"); - // close connections and join the thread - if (m_connection && m_connection->get_state() == websocketpp::session::state::open) { - Disconnect(); - } - if (m_socket_thread_1 && m_socket_thread_1->joinable()) { - m_socket_thread_1->join(); - } - if (m_socket_thread_2 && m_socket_thread_2->joinable()) { - m_socket_thread_2->join(); - } -} - -GenericOutcome WebSocketppClientWrapper::Connect(const Uri &uri) { - spdlog::info("Opening Connection"); - // Perform connection with retries. - // This attempts to start up a new websocket connection / thread - m_uri = uri; - websocketpp::lib::error_code errorCode; - GeometricBackoffRetryStrategy retryStrategy; - RetryingCallable callable = RetryingCallable::Builder() - .WithRetryStrategy(&retryStrategy) - .WithCallable([this, &uri, &errorCode] { - spdlog::info("Attempting to perform connection"); - WebSocketppClientType::connection_ptr newConnection = PerformConnect(uri, errorCode); - if (newConnection && newConnection->get_state() == websocketpp::session::state::open) { - spdlog::info("Connection established, transitioning traffic"); - // "Flip" traffic from our old websocket to our new websocket. Close the old one - // if necessary - WebSocketppClientType::connection_ptr oldConnection = m_connection; - m_connection = newConnection; - if (oldConnection && oldConnection->get_state() == websocketpp::session::state::open) { - spdlog::info("Closing previous connection"); - websocketpp::lib::error_code closeErrorCode; - m_webSocketClient->close(oldConnection->get_handle(), websocketpp::close::status::going_away, - "Websocket client reconnecting", closeErrorCode); - if (errorCode.value()) { - spdlog::warn("Failed to close old websocket after a connection refresh, ignoring."); - } - } - return true; - } else { - spdlog::warn("Connection to Amazon GameLift Servers websocket server failed. Retrying connection if possible."); - return false; - } - }) - .Build(); - callable.call(); - - if (IsConnected()) { - spdlog::info("Connected to endpoint"); - return GenericOutcome(nullptr); - } else { - spdlog::error("Connection to Amazon GameLift Servers websocket server failed. See error message in InitSDK() outcome for details."); - m_connection = nullptr; - switch (errorCode.value()) { - case websocketpp::error::server_only: - switch (m_fail_response_code) { - case websocketpp::http::status_code::value::forbidden: - return GenericOutcome(GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_FORBIDDEN); - default: - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE, errorCode.category().message(errorCode.value()).c_str(), - errorCode.message().c_str())); - } - case 11001: // Host not found - case websocketpp::error::invalid_uri: - return GenericOutcome(GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_INVALID_URL); - // case websocketpp::error::timeout: - case 0: // No Response after multiple retries, i.e. timeout - case websocketpp::error::open_handshake_timeout: - case websocketpp::error::close_handshake_timeout: - return GenericOutcome(GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_TIMEOUT); - case websocketpp::error::endpoint_not_secure: - case websocketpp::error::no_outgoing_buffers: - case websocketpp::error::no_incoming_buffers: - case websocketpp::error::invalid_state: - case websocketpp::error::bad_close_code: - case websocketpp::error::reserved_close_code: - case websocketpp::error::invalid_close_code: - case websocketpp::error::invalid_utf8: - case websocketpp::error::invalid_subprotocol: - case websocketpp::error::bad_connection: - case websocketpp::error::con_creation_failed: - case websocketpp::error::unrequested_subprotocol: - case websocketpp::error::client_only: - case websocketpp::error::http_connection_ended: - case websocketpp::error::invalid_port: - case websocketpp::error::async_accept_not_listening: - case websocketpp::error::upgrade_required: - case websocketpp::error::invalid_version: - case websocketpp::error::unsupported_version: - case websocketpp::error::http_parse_error: - case websocketpp::error::extension_neg_failed: - default: - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE, errorCode.category().message(errorCode.value()).c_str(), - errorCode.message().c_str())); - } - } -} - -WebSocketppClientType::connection_ptr WebSocketppClientWrapper::PerformConnect(const Uri &uri, websocketpp::lib::error_code &errorCode) { - spdlog::info("Performing connection"); - errorCode.clear(); - // Create connection request - WebSocketppClientType::connection_ptr newConnection = m_webSocketClient->get_connection(uri.GetUriString(), errorCode); - if (errorCode.value()) { - spdlog::error("Failed to GetConnection. ERROR: {}", errorCode.message()); - return newConnection; - } else { - spdlog::info("Connection request created successfully. Waiting for connection to establish..."); - } - - // Queue a new connection request (the socket thread will act on it and attempt to connect) - try { - m_webSocketClient->connect(newConnection); - } - catch (const std::exception& e) { - spdlog::error("Exception while trying to connect with the webSocketClient: {}", e.what()); - } - spdlog::info("Connection request queued."); - // Wait for connection to succeed or fail (this makes connection synchronous) - { - std::unique_lock lk(m_lock); - m_cond.wait(lk, [this] { return m_connectionStateChanged; }); - spdlog::info("Connection state changed: {}", m_fail_error_code.message()); - errorCode = m_fail_error_code; - // Reset - m_connectionStateChanged = false; - m_fail_error_code.clear(); - } - - if (errorCode.value()) { - spdlog::error("Connection failed with errorCode: {}", errorCode.message()); - } - else { - spdlog::info("Connection established successfully."); - } - - return newConnection; -} - -GenericOutcome WebSocketppClientWrapper::SendSocketMessage(const std::string &requestId, const std::string &message) { - if (requestId.empty()) { - spdlog::error("Request does not have request ID, cannot process"); - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::INTERNAL_SERVICE_EXCEPTION)); - } - - auto waitForReconnectRetryCount = 0; - while(!IsConnected()) { - // m_connection will be null if reconnect failed after max reties - if(m_connection == nullptr || ++waitForReconnectRetryCount >= WAIT_FOR_RECONNECT_MAX_RETRIES) { - spdlog::warn("WebSocket is not connected... WebSocket failed to send message due to an error."); - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::WEBSOCKET_SEND_MESSAGE_FAILURE)); - } - spdlog::warn("WebSocket is not connected... isConnected: {}", IsConnected()); - std::this_thread::sleep_for(std::chrono::seconds(WAIT_FOR_RECONNECT_RETRY_DELAY_SECONDS)); - } - - std::future responseFuture; - // Lock whenever we make use of 'm_requestIdToPromise' to avoid concurrent writes/reads - { - std::lock_guard lock(m_requestToPromiseLock); - // This indicates we've already sent this message, and it's still in flight - if (m_requestIdToPromise.count(requestId) > 0) { - spdlog::error("Request {} already exists", requestId); - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::BAD_REQUEST_EXCEPTION)); - } - - std::promise responsePromise; - responseFuture = responsePromise.get_future(); - m_requestIdToPromise[requestId] = std::move(responsePromise); - } - - GenericOutcome immediateResponse = SendSocketMessageAsync(message); - - if (!immediateResponse.IsSuccess()) { - spdlog::error("Send Socket Message immediate response failed with error {}: {}", - immediateResponse.GetError().GetErrorName(), immediateResponse.GetError().GetErrorMessage()); - std::lock_guard lock(m_requestToPromiseLock); - m_requestIdToPromise.erase(requestId); - return immediateResponse; - } - - std::future_status promiseStatus = responseFuture.wait_for(std::chrono::milliseconds(SERVICE_CALL_TIMEOUT_MILLIS)); - - if (promiseStatus == std::future_status::timeout) { - std::lock_guard lock(m_requestToPromiseLock); - spdlog::error("Response not received within the time limit of {} ms for request {}", SERVICE_CALL_TIMEOUT_MILLIS, requestId); - spdlog::warn("isConnected: {}", IsConnected()); - m_requestIdToPromise.erase(requestId); - // If a call times out, retry - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::WEBSOCKET_RETRIABLE_SEND_MESSAGE_FAILURE)); - } - - return responseFuture.get(); -} - -GenericOutcome WebSocketppClientWrapper::SendSocketMessageAsync(const std::string &message) { - if (!m_connection) { - spdlog::error("Cannot send message: m_connection is null"); - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::WEBSOCKET_SEND_MESSAGE_FAILURE)); - } - - spdlog::info("Sending Socket Message, isConnected:{}", IsConnected()); - websocketpp::lib::error_code errorCode; - m_webSocketClient->send(m_connection->get_handle(), message.c_str(), websocketpp::frame::opcode::text, errorCode); - if (errorCode.value()) { - spdlog::error("Error Sending Socket Message: {}", errorCode.value()); - switch (errorCode.value()) { - case websocketpp::error::no_outgoing_buffers: - // If buffers are full, send will fail. Retryable since buffers can free up as messages - // send. - return GenericOutcome(GAMELIFT_ERROR_TYPE::WEBSOCKET_RETRIABLE_SEND_MESSAGE_FAILURE); - default: - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::WEBSOCKET_SEND_MESSAGE_FAILURE, errorCode.category().message(errorCode.value()).c_str(), - errorCode.message().c_str())); - } - } - return GenericOutcome(nullptr); -} - -void WebSocketppClientWrapper::Disconnect() { - spdlog::info("Disconnecting WebSocket"); - if (m_connection != nullptr) { - websocketpp::lib::error_code ec; - m_webSocketClient->close(m_connection->get_handle(), websocketpp::close::status::going_away, "Websocket client closing", ec); - if (ec) { - spdlog::error("Error initiating close: {}",ec.message()); - } - m_connection = nullptr; - } -} - -void WebSocketppClientWrapper::RegisterGameLiftCallback(const std::string &gameLiftEvent, const std::function &callback) { - spdlog::info("Registering GameLift CallBack for: {}", gameLiftEvent); - m_eventHandlers[gameLiftEvent] = callback; -} - -bool WebSocketppClientWrapper::IsConnected() { - // m_connection is nullptr if 'm_webSocketClient->get_connection()' fails - return m_connection != nullptr && m_connection->get_state() == websocketpp::session::state::open; -} - -void WebSocketppClientWrapper::OnConnected(websocketpp::connection_hdl connection) { - spdlog::info("Connected to WebSocket"); - // aquire lock and set condition variables (let main thread know connection is successful) - { - std::lock_guard lk(m_lock); - // set the state change variables and notify the thread that is connecting - m_connectionStateChanged = true; - } - m_cond.notify_one(); -} - -void WebSocketppClientWrapper::OnError(websocketpp::connection_hdl connection) { - auto con = m_webSocketClient->get_con_from_hdl(connection); - spdlog::error("Error Connecting to WebSocket"); - - // aquire lock and set condition variables (let main thread know an error has occurred) - { - std::lock_guard lk(m_lock); - // set the state change variables and notify the thread that is connecting - m_connectionStateChanged = true; - m_fail_error_code = con->get_ec(); - m_fail_response_code = con->get_response_code(); - } - m_cond.notify_one(); -} - -void WebSocketppClientWrapper::OnMessage(websocketpp::connection_hdl connection, websocketpp::config::asio_client::message_type::ptr msg) { - std::string message = msg->get_payload(); - spdlog::info("Received message from websocket endpoint"); - - ResponseMessage responseMessage; - Message &gameLiftMessage = responseMessage; - if (!gameLiftMessage.Deserialize(message)) { - spdlog::error("Error Deserializing Message"); - return; - } - - const std::string &action = responseMessage.GetAction(); - spdlog::info("Deserialized Message has Action: {}", action); - const std::string &requestId = responseMessage.GetRequestId(); - const int statusCode = responseMessage.GetStatusCode(); - const std::string &errorMessage = responseMessage.GetErrorMessage(); - - // Default to a success response with no result pointer - GenericOutcome response(nullptr); - // Check if the response was an error. If so, update the response based on status code. - // RequestId will be empty when we get a message not associated with a request, in which case we - // don't expect a 200 status code either. - if (statusCode != OK_STATUS_CODE && !requestId.empty()) { - response = GenericOutcome(GameLiftError(statusCode, message.c_str())); - } else { - // If we got a success response, and we have a special event handler for this action, invoke - // it to get the real parsed result - if (m_eventHandlers.count(action)) { - spdlog::info("Executing Amazon GameLift Servers Event Handler for {}", action); - response = m_eventHandlers[action](message); - } - } - - // Lock whenever we make use of 'm_requestIdToPromise' to avoid concurrent writes/reads - std::lock_guard lock(m_requestToPromiseLock); - if (m_requestIdToPromise.count(requestId) > 0) { - m_requestIdToPromise[requestId].set_value(response); - m_requestIdToPromise.erase(requestId); - } -} - -websocketpp::lib::shared_ptr WebSocketppClientWrapper::OnTlsInit(websocketpp::connection_hdl hdl) { - websocketpp::lib::shared_ptr contextPtr(new asio::ssl::context(asio::ssl::context::tlsv12)); - return contextPtr; -} - -void WebSocketppClientWrapper::OnClose(websocketpp::connection_hdl connection) { - auto connectionPointer = m_webSocketClient->get_con_from_hdl(connection); - auto localCloseCode = connectionPointer->get_local_close_code(); - auto remoteCloseCode = connectionPointer->get_remote_close_code(); - bool isNormalClosure = localCloseCode == websocketpp::close::status::normal - || localCloseCode == websocketpp::close::status::going_away - || remoteCloseCode == websocketpp::close::status::normal - || remoteCloseCode == websocketpp::close::status::going_away; - spdlog::info("Connection to Amazon GameLift Servers websocket server lost, Local Close Code = {}, Remote Close Code = {}.", - websocketpp::close::status::get_string(localCloseCode).c_str(), - websocketpp::close::status::get_string(remoteCloseCode).c_str()); - if(isNormalClosure) { - spdlog::info("Normal Connection Closure, skipping reconnect."); - return; - } else { - spdlog::info("Abnormal Connection Closure, reconnecting."); - WebSocketppClientWrapper::Connect(m_uri); - } -} - -void WebSocketppClientWrapper::OnInterrupt(websocketpp::connection_hdl connection) { - auto connectionPointer = m_webSocketClient->get_con_from_hdl(connection); - auto remoteEndpoint = connectionPointer->get_remote_endpoint(); - auto host = connectionPointer->get_host(); - auto port = connectionPointer->get_port(); - spdlog::warn("Interruption Happened"); - spdlog::info("In OnInterrupt(), isConnected:{}, endpoint: {}, host: {}, port: {}", IsConnected(), remoteEndpoint, host, port); -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/CreateGameSessionCallback.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/CreateGameSessionCallback.cpp deleted file mode 100644 index 0c216f84..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/CreateGameSessionCallback.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { - -GenericOutcome CreateGameSessionCallback::OnStartGameSession(const std::string &data) { - spdlog::info("OnStartGameSession Received with raw data: {}", data); - CreateGameSessionMessage createGameSessionMessage; - Message &message = createGameSessionMessage; - message.Deserialize(data); - - GameSession gameSession; - gameSession.WithGameSessionId(createGameSessionMessage.GetGameSessionId().c_str()) - .WithName(createGameSessionMessage.GetGameSessionName().c_str()) - .WithMaximumPlayerSessionCount(createGameSessionMessage.GetMaximumPlayerSessionCount()) - .WithIpAddress(createGameSessionMessage.GetIpAddress().c_str()) - .WithPort(createGameSessionMessage.GetPort()) - .WithGameSessionData(createGameSessionMessage.GetGameSessionData().c_str()) - .WithMatchmakerData(createGameSessionMessage.GetMatchmakerData().c_str()) - .WithDnsName(createGameSessionMessage.GetDnsName().c_str()); - - std::map::const_iterator mapIterator; - for (mapIterator = createGameSessionMessage.GetGameProperties().begin(); mapIterator != createGameSessionMessage.GetGameProperties().end(); mapIterator++) { - GameProperty gameProperty; - gameProperty.SetKey(mapIterator->first.c_str()); - gameProperty.SetValue(mapIterator->second.c_str()); - gameSession.AddGameProperty(gameProperty); - } - - m_gameLiftMessageHandler->OnStartGameSession(gameSession); - - return GenericOutcome(nullptr); -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/DescribePlayerSessionsCallback.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/DescribePlayerSessionsCallback.cpp deleted file mode 100644 index 91c694b2..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/DescribePlayerSessionsCallback.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { -GenericOutcome DescribePlayerSessionsCallback::OnDescribePlayerSessions(const std::string &data) { - spdlog::info("OnDescribePlayerSessions Received with raw data: {}", data); - WebSocketDescribePlayerSessionsResponse *describePlayerSessionsResponse = new WebSocketDescribePlayerSessionsResponse(); - Message *message = describePlayerSessionsResponse; - message->Deserialize(data); - - return GenericOutcome(describePlayerSessionsResponse); -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/GetComputeCertificateCallback.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/GetComputeCertificateCallback.cpp deleted file mode 100644 index a046ba48..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/GetComputeCertificateCallback.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { -GenericOutcome GetComputeCertificateCallback::OnGetComputeCertificateCallback(const std::string &data) { - spdlog::info("OnGetComputeCertificate Received"); - auto *response = new WebSocketGetComputeCertificateResponse(); - Message *message = response; - message->Deserialize(data); - - return GenericOutcome(response); -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/GetFleetRoleCredentialsCallback.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/GetFleetRoleCredentialsCallback.cpp deleted file mode 100644 index 266bec21..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/GetFleetRoleCredentialsCallback.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { -GenericOutcome GetFleetRoleCredentialsCallback::OnGetFleetRoleCredentials(const std::string &data) { - spdlog::info("OnGetFleetRoleCredentials Received"); - auto *getFleetRoleCredentialsResponse = new WebSocketGetFleetRoleCredentialsResponse(); - Message *message = getFleetRoleCredentialsResponse; - message->Deserialize(data); - - return GenericOutcome(getFleetRoleCredentialsResponse); -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/RefreshConnectionCallback.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/RefreshConnectionCallback.cpp deleted file mode 100644 index e3fab577..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/RefreshConnectionCallback.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { -GenericOutcome RefreshConnectionCallback::OnRefreshConnection(const std::string &data) { - spdlog::info("OnRefreshConnection Received with raw data: {}", data); - RefreshConnectionMessage refreshConnectionMessage; - Message &message = refreshConnectionMessage; - message.Deserialize(data); - - m_gameLiftMessageHandler->OnRefreshConnection(refreshConnectionMessage.GetRefreshConnectionEndpoint(), refreshConnectionMessage.GetAuthToken()); - - return GenericOutcome(nullptr); -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/StartMatchBackfillCallback.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/StartMatchBackfillCallback.cpp deleted file mode 100644 index 51a2a768..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/StartMatchBackfillCallback.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { -GenericOutcome StartMatchBackfillCallback::OnStartMatchBackfill(const std::string &data) { - spdlog::info("OnStartMatchBackfill Received with raw data: {}", data); - WebSocketStartMatchBackfillResponse *startMatchBackfillResponse = new WebSocketStartMatchBackfillResponse(); - Message *message = startMatchBackfillResponse; - message->Deserialize(data); - - return GenericOutcome(startMatchBackfillResponse); -} -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/TerminateProcessCallback.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/TerminateProcessCallback.cpp deleted file mode 100644 index ef26fce4..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/TerminateProcessCallback.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { - -GenericOutcome TerminateProcessCallback::OnTerminateProcess(const std::string &data) { - spdlog::info("OnTerminateProcess Received with raw data: {}", data); - TerminateProcessMessage terminateProcessMessage; - Message &message = terminateProcessMessage; - message.Deserialize(data); - - long terminationTime = terminateProcessMessage.GetTerminationTime(); - m_gameLiftMessageHandler->OnTerminateProcess(terminationTime); - - return GenericOutcome(nullptr); -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/UpdateGameSessionCallback.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/UpdateGameSessionCallback.cpp deleted file mode 100644 index cf90793c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/network/callback/UpdateGameSessionCallback.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift; - -namespace Aws { -namespace GameLift { -namespace Internal { - -GenericOutcome UpdateGameSessionCallback::OnUpdateGameSession(const std::string &data) { - spdlog::info("OnUpdateGameSession Received with raw data: {}", data); - UpdateGameSessionMessage updateGameSessionMessage; - Message &message = updateGameSessionMessage; - message.Deserialize(data); - - GameSession gameSession; - WebSocketGameSession webSocketGameSession = updateGameSessionMessage.GetGameSession(); - gameSession.WithGameSessionId(webSocketGameSession.GetGameSessionId().c_str()) - .WithName(webSocketGameSession.GetName().c_str()) - .WithFleetId(webSocketGameSession.GetFleetId().c_str()) - .WithMaximumPlayerSessionCount(webSocketGameSession.GetMaximumPlayerSessionCount()) - .WithIpAddress(webSocketGameSession.GetIpAddress().c_str()) - .WithPort(webSocketGameSession.GetPort()) - .WithGameSessionData(webSocketGameSession.GetGameSessionData().c_str()) - .WithMatchmakerData(webSocketGameSession.GetMatchmakerData().c_str()) - .WithDnsName(webSocketGameSession.GetDnsName().c_str()); - - std::map::const_iterator mapIterator; - for (mapIterator = webSocketGameSession.GetGameProperties().begin(); mapIterator != webSocketGameSession.GetGameProperties().end(); mapIterator++) { - GameProperty gameProperty; - gameProperty.SetKey(mapIterator->first.c_str()); - gameProperty.SetValue(mapIterator->second.c_str()); - gameSession.AddGameProperty(gameProperty); - } - - UpdateGameSession updateGameSession(gameSession, UpdateReasonMapper::GetUpdateReasonForName(updateGameSessionMessage.GetUpdateReason().c_str()), - updateGameSessionMessage.GetBackfillTicketId().c_str()); - - m_gameLiftMessageHandler->OnUpdateGameSession(updateGameSession); - - return GenericOutcome(nullptr); -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/GeometricBackoffRetryStrategy.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/GeometricBackoffRetryStrategy.cpp deleted file mode 100644 index bac2fe32..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/GeometricBackoffRetryStrategy.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -void GeometricBackoffRetryStrategy::apply(const std::function &callable) { - int retryIntervalSeconds = m_initialRetryIntervalSeconds; - for (int i = 0; i < m_maxRetries; ++i) { - bool success = callable(); - if (success) { - break; - } else { - spdlog::warn("Connection Failed. Retrying in {} seconds...", retryIntervalSeconds); - std::this_thread::sleep_for(std::chrono::seconds(retryIntervalSeconds)); - retryIntervalSeconds *= m_retryFactor; - retryIntervalSeconds = retryIntervalSeconds > m_maxRetryIntervalSeconds ? m_maxRetryIntervalSeconds : retryIntervalSeconds; - } - } -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/JitteredGeometricBackoffRetryStrategy.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/JitteredGeometricBackoffRetryStrategy.cpp deleted file mode 100644 index 34d70963..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/JitteredGeometricBackoffRetryStrategy.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -void JitteredGeometricBackoffRetryStrategy::apply(const std::function &callable) { - int retryIntervalMs = m_initialRetryIntervalMs; - std::random_device rd; - std::mt19937 randGenerator(rd()); - for (int i = 0; i < m_maxRetries; ++i) { - bool success = callable(); - if (success) { - break; - } else { - std::uniform_int_distribution<> intervalRange(m_minRetryDelayMs, retryIntervalMs); - int currentInterval = intervalRange(randGenerator); - spdlog::warn("Sending Message Failed. Retrying in {} milliseconds...", currentInterval); - std::this_thread::sleep_for(std::chrono::milliseconds(currentInterval)); - retryIntervalMs *= m_retryFactor; - } - } -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/RetryingCallable.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/RetryingCallable.cpp deleted file mode 100644 index 32875065..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/retry/RetryingCallable.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -RetryingCallable::Builder &RetryingCallable::Builder::WithCallable(const std::function &callable) { - m_callable = callable; - return *this; -} - -RetryingCallable::Builder &RetryingCallable::Builder::WithRetryStrategy(RetryStrategy *retryStrategy) { - m_retryStrategy = retryStrategy; - return *this; -} - -RetryingCallable RetryingCallable::Builder::Build() const { return RetryingCallable(*m_retryStrategy, m_callable); } - -RetryingCallable::RetryingCallable(RetryStrategy &retryStrategy, std::function callable) : m_retryStrategy(retryStrategy), m_callable(callable) {} - -void RetryingCallable::call() { m_retryStrategy.apply(m_callable); } - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/AwsSigV4Utility.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/AwsSigV4Utility.cpp deleted file mode 100644 index 0287e2ce..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/AwsSigV4Utility.cpp +++ /dev/null @@ -1,186 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace Aws::GameLift::Internal; - -Aws::GameLift::Outcome, std::string> AwsSigV4Utility::GenerateSigV4QueryParameters(const SigV4Parameters ¶meters) { - - try { - ValidateParameters(parameters); - } catch (std::invalid_argument const &ex) { - return std::string(ex.what()); - } - - char dateBuffer[16]; - char dateTimeBuffer[32]; - strftime(dateBuffer, sizeof(dateBuffer), DateFormat, ¶meters.RequestTime); - strftime(dateTimeBuffer, sizeof(dateTimeBuffer), DateTimeFormat, ¶meters.RequestTime); - - const std::string formattedRequestDate(dateBuffer); - const std::string formattedRequestDateTime(dateTimeBuffer); - - const std::string canonicalRequest = ToSortedEncodedQueryString(parameters.QueryParams); - - const std::string hashedCanonicalRequest = ComputeSha256Hash(canonicalRequest); - - const std::string scope = formattedRequestDate + "/" + parameters.AwsRegion + "/" + ServiceName + "/" + TerminationString; - - const std::string stringToSign = std::string(Algorithm) + "\n" + formattedRequestDateTime + "\n" + scope + "\n" + hashedCanonicalRequest; - - const std::string credential = parameters.Credentials.AccessKey + "/" + scope; - - const std::string signature = GenerateSignature( - parameters.AwsRegion, - parameters.Credentials.SecretKey, - formattedRequestDate, - ServiceName, - stringToSign); - - return GenerateSigV4QueryParameters( - credential, - formattedRequestDateTime, - parameters.Credentials.SessionToken, - signature); -} - -void AwsSigV4Utility::ValidateParameters(const SigV4Parameters ¶meters) { - - if (parameters.AwsRegion.empty()) { - throw std::invalid_argument("AwsRegion is required"); - } - - if (parameters.Credentials.AccessKey.empty()) { - throw std::invalid_argument("AccessKey is required"); - } - - if (parameters.Credentials.SecretKey.empty()) { - throw std::invalid_argument("SecretKey is required"); - } - - if (parameters.QueryParams.empty()) { - throw std::invalid_argument("QueryParams is required"); - } - - if (parameters.RequestTime.tm_year == 0) { - throw std::invalid_argument("RequestTime is required"); - } -} - -std::string AwsSigV4Utility::GenerateSignature( - const std::string ®ion, - const std::string &secretKey, - const std::string &formattedRequestDateTime, - const std::string &serviceName, - const std::string &stringToSign) { - - std::vector encodedKeySecret = std::vector(SignatureSecretKeyPrefix, SignatureSecretKeyPrefix + - strlen(SignatureSecretKeyPrefix)); - encodedKeySecret.insert(encodedKeySecret.end(), secretKey.begin(), secretKey.end()); - - auto hashDate = ComputeHmacSha256(encodedKeySecret, formattedRequestDateTime); - auto hashRegion = ComputeHmacSha256(hashDate, region); - auto hashService = ComputeHmacSha256(hashRegion, serviceName); - auto signingKey = ComputeHmacSha256(hashService, TerminationString); - - return ToHex(ComputeHmacSha256(signingKey, stringToSign)); -} - -std::map AwsSigV4Utility::GenerateSigV4QueryParameters( - const std::string &credential, - const std::string &formattedRequestDateTime, - const std::string &sessionToken, - const std::string &signature) { - - std::map sigV4QueryParameters; - sigV4QueryParameters[AuthorizationKey] = AuthorizationValue; - sigV4QueryParameters[AmzAlgorithmKey] = Algorithm; - sigV4QueryParameters[AmzCredentialKey] = UriEncoder::UriEncode(credential); - sigV4QueryParameters[AmzDateKey] = formattedRequestDateTime; - sigV4QueryParameters[AmzSignatureKey] = UriEncoder::UriEncode(signature); - - if (!sessionToken.empty()) { - sigV4QueryParameters[AmzSecurityTokenHeadersKey] = UriEncoder::UriEncode(sessionToken); - } - - return sigV4QueryParameters; -} - -std::string AwsSigV4Utility::ToSortedEncodedQueryString(const std::map &queryParameters) { - std::vector > sortedParams(queryParameters.begin(), queryParameters.end()); - std::sort(sortedParams.begin(), sortedParams.end()); - - std::ostringstream stringBuffer; - for (auto sortedParam = sortedParams.begin(); sortedParam != sortedParams.end(); ++sortedParam) { - if (sortedParam != sortedParams.begin()) { - stringBuffer << "&"; - } - stringBuffer << UriEncoder::UriEncode(sortedParam->first) << "=" << UriEncoder::UriEncode(sortedParam->second); - } - - return stringBuffer.str(); -} - -// Refer to documentation in AwsSigV4Utility.h -std::string AwsSigV4Utility::ComputeSha256Hash(const std::string &data) { - // Because the following methods do not throw exceptions, they are not being surrounded by try-catch or use RAII for cleaning memory. - unsigned char hash[SHA256_DIGEST_LENGTH]; - SHA256_CTX sha256; - SHA256_Init(&sha256); - SHA256_Update(&sha256, data.c_str(), data.size()); - SHA256_Final(hash, &sha256); - - const std::vector sha256Hash = std::vector(hash, hash + SHA256_DIGEST_LENGTH); - return ToHex(sha256Hash); -} - -// Refer to documentation in AwsSigV4Utility.h -std::vector AwsSigV4Utility::ComputeHmacSha256(const std::vector &key, const std::string &data) { - // Because the following methods do not throw exceptions, they are not being surrounded by try-catch or use RAII for cleaning memory. - unsigned char hash[EVP_MAX_MD_SIZE]; - unsigned int len = 0; - -#if OPENSSL_VERSION_NUMBER >= 0x10100000L // OpenSSL 1.1.0 or newer - HMAC_CTX *ctx = HMAC_CTX_new(); - HMAC_Init_ex(ctx, key.data(), key.size(), EVP_sha256(), nullptr); - HMAC_Update(ctx, reinterpret_cast(data.c_str()), data.size()); - HMAC_Final(ctx, hash, &len); - HMAC_CTX_free(ctx); -#else // Older versions of OpenSSL - HMAC_CTX ctx; - HMAC_CTX_init(&ctx); - HMAC_Init_ex(&ctx, key.data(), key.size(), EVP_sha256(), nullptr); - HMAC_Update(&ctx, reinterpret_cast(data.c_str()), data.size()); - HMAC_Final(&ctx, hash, &len); - HMAC_CTX_cleanup(&ctx); -#endif - return std::vector(hash, hash + len); -} - -std::string AwsSigV4Utility::ToHex(const std::vector &hashBytes) { - std::ostringstream stringBuffer; - for (auto b: hashBytes) { - stringBuffer << std::hex << std::setw(2) << std::setfill('0') << (int) b; - } - return stringBuffer.str(); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/ContainerCredentialsFetcher.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/ContainerCredentialsFetcher.cpp deleted file mode 100644 index e4443076..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/ContainerCredentialsFetcher.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include -#include "rapidjson/document.h" - -using namespace Aws::GameLift::Internal; - -ContainerCredentialsFetcher::ContainerCredentialsFetcher(HttpClient &httpClient) - : httpClient(httpClient) {} - -Aws::GameLift::Outcome ContainerCredentialsFetcher::FetchContainerCredentials() { - const char *credentialsRelativeUri = std::getenv(EnvironmentVariableContainerCredentialsRelativeUri.c_str()); - if (!credentialsRelativeUri) { - return "The environment variable " + EnvironmentVariableContainerCredentialsRelativeUri + " is not set."; - } - - std::string relativeUri = credentialsRelativeUri; - HttpResponse response = httpClient.SendGetRequest(ContainerCredentialProviderUrl + relativeUri); - - if (!response.IsSuccessfulStatusCode()) { - return std::string( - "Failed to get Container Credentials from Container Credential Provider. HTTP Response Status Code is " + - std::to_string(response.statusCode)); - } - - rapidjson::Document document; - if (document.Parse(response.body.c_str()).HasParseError()) { - return std::string("Error parsing Container Credential Provider JSON response"); - } - - if (!document.HasMember("AccessKeyId") || !document["AccessKeyId"].IsString()) { - return std::string("AccessKeyId is not found in Container Credential Provider response"); - } - - if (!document.HasMember("SecretAccessKey") || !document["SecretAccessKey"].IsString()) { - return std::string("SecretAccessKey is not found in Container Credential Provider response"); - } - - if (!document.HasMember("Token") || !document["Token"].IsString()) { - return std::string("Token is not found in Container Credential Provider response"); - } - - AwsCredentials awsCredentials( - document["AccessKeyId"].GetString(), - document["SecretAccessKey"].GetString(), - document["Token"].GetString()); - return awsCredentials; -} - diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/ContainerMetadataFetcher.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/ContainerMetadataFetcher.cpp deleted file mode 100644 index 2dbd8e29..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/security/ContainerMetadataFetcher.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include -#include "rapidjson/document.h" - -using namespace Aws::GameLift::Internal; - -ContainerMetadataFetcher::ContainerMetadataFetcher(HttpClient &httpClient) - : httpClient(httpClient) {} - -Aws::GameLift::Outcome ContainerMetadataFetcher::FetchContainerTaskMetadata() { - const char *containerMetadataUri = std::getenv(EnvironmentVariableContainerMetadataUri.c_str()); - if (!containerMetadataUri) { - return "The environment variable " + EnvironmentVariableContainerMetadataUri + " is not set."; - } - std::string baseUrl = containerMetadataUri; - HttpResponse response = httpClient.SendGetRequest(baseUrl + "/" + TaskMetadataRelativePath); - - if(!response.IsSuccessfulStatusCode()) { - return std::string( - "Failed to get Container Task Metadata from Container Metadata Service. HTTP Response Status Code is " + - std::to_string(response.statusCode)); - } - rapidjson::Document document; - if (document.Parse(response.body.c_str()).HasParseError()) { - return std::string("Error parsing Container Metadata Service JSON response"); - } - if (!document.HasMember("TaskARN") || !document["TaskARN"].IsString()) { - return std::string("TaskArn is not found in Container Metadata Service response"); - } - std::string taskArn = document["TaskARN"].GetString(); - if (taskArn.empty()) { - return std::string("Invalid TaskARN, value is empty"); - } - if (taskArn.find('/') == std::string::npos) { - return std::string("Failed to extract Task ID from container TaskArn with value " + taskArn); - } - std::string taskId = taskArn.substr(taskArn.find_last_of('/') + 1); - return ContainerTaskMetadata(taskId); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/GuidGenerator.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/GuidGenerator.cpp deleted file mode 100644 index c937839c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/GuidGenerator.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include -#include -#include -#include - -using namespace Aws::GameLift::Internal; - -std::string GuidGenerator::GenerateGuid() { - std::random_device rd; - std::uniform_int_distribution dist(0, 15); - std::uniform_int_distribution dist2(8, 11); - - std::stringstream ss; - ss << std::hex << std::setfill('0'); - - for (int i = 0; i < 8; ++i) ss << dist(rd); - ss << "-"; - - for (int i = 0; i < 4; ++i) ss << dist(rd); - ss << "-"; - - ss << "4"; - for (int i = 0; i < 3; ++i) ss << dist(rd); - ss << "-"; - - ss << dist2(rd); - for (int i = 0; i < 3; ++i) ss << dist(rd); - ss << "-"; - - for (int i = 0; i < 12; ++i) ss << dist(rd); - - return ss.str(); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/HttpClient.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/HttpClient.cpp deleted file mode 100644 index 1f1fd276..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/HttpClient.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#include -#ifdef _WIN32 - #include - #include - #pragma comment(lib, "Ws2_32.lib") - using ssize_t = SSIZE_T; -#else - #include - #include - #include - #include -#endif -#include -#include - -using namespace Aws::GameLift::Internal; - -bool HttpResponse::IsSuccessfulStatusCode() { - return statusCode >= 200 && statusCode <= 299; -} - -HttpResponse HttpClient::SendGetRequest(const std::string &url) { - const std::tuple hostAndPortAndPath = GetHostAndPortAndPath(url); - const std::string host = std::get<0>(hostAndPortAndPath); - const int port = std::get<1>(hostAndPortAndPath); - const std::string path = std::get<2>(hostAndPortAndPath); - const std::string request = "GET " + path + " HTTP/1.1\r\nHost: " + host + "\r\nConnection: close\r\n\r\n"; - int sock = -1; - -#ifdef _WIN32 - WSADATA wsaData; - if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { - throw std::runtime_error("WSAStartup failed, error number: " + std::to_string(WSAGetLastError())); - } -#endif - - try { - sock = socket(AF_INET, SOCK_STREAM, 0); - if (sock < 0) { -#ifdef _WIN32 - throw std::runtime_error("Socket creation failed, error number: " + std::to_string(WSAGetLastError())); -#else - throw std::runtime_error("Socket creation failed, error number: " + std::string(strerror(errno))); -#endif - } - - struct sockaddr_in server_addr; - server_addr.sin_family = AF_INET; - server_addr.sin_port = htons(port); - -#ifdef _WIN32 - std::wstring wide_host = std::wstring(host.begin(), host.end()); - if (InetPtonW(AF_INET, wide_host.c_str(), &server_addr.sin_addr) <= 0) { - throw std::runtime_error("Invalid address or address not supported, error number: " + std::to_string(WSAGetLastError())); - } -#else - if (inet_pton(AF_INET, host.c_str(), &server_addr.sin_addr) <= 0) { - throw std::runtime_error("Invalid address or address not supported, error number: " + std::string(strerror(errno))); - } -#endif - - if (connect(sock, (struct sockaddr *) &server_addr, sizeof(server_addr)) < 0) { -#ifdef _WIN32 - throw std::runtime_error("Connection failed, error number: " + std::to_string(WSAGetLastError())); -#else - throw std::runtime_error("Connection failed, error number: " + std::string(strerror(errno))); -#endif - } - - ssize_t sent = send(sock, request.c_str(), request.length(), 0); - if (sent < 0) { -#ifdef _WIN32 - throw std::runtime_error("Send failed, error number: " + std::to_string(WSAGetLastError())); -#else - throw std::runtime_error("Send failed, error number: " + std::string(strerror(errno))); -#endif - } else if (sent != (ssize_t) request.length()) { - throw std::runtime_error("Send incomplete, only " + std::to_string(sent) + " bytes sent."); - } - - std::string fullResponse; - char buffer[1024] = {0}; - ssize_t bytesReceived; - while ((bytesReceived = recv(sock, buffer, sizeof(buffer) - 1, 0)) > 0) { - fullResponse.append(buffer, bytesReceived); - } - - if (bytesReceived < 0) { -#ifdef _WIN32 - throw std::runtime_error("Receive failed, error number: " + std::to_string(WSAGetLastError())); -#else - throw std::runtime_error("Receive failed, error number: " + std::string(strerror(errno))); -#endif - } - -#ifdef _WIN32 - if (closesocket(sock) < 0) { - spdlog::warn("Socket close failed, error number: {}", WSAGetLastError()); - } - WSACleanup(); -#else - if (close(sock) < 0) { - spdlog::warn("Socket close failed, error number: {}", errno); - } -#endif - sock = -1; - - HttpResponse httpResponse = ParseHttpResponse(fullResponse); - return httpResponse; - } catch (const std::runtime_error& e) { - if (sock >= 0) { -#ifdef _WIN32 - closesocket(sock); - WSACleanup(); -#else - close(sock); -#endif - } - throw e; - } -} - -std::tuple HttpClient::GetHostAndPortAndPath(const std::string &url) { - std::string host; - std::string path; - int port = 80; - - std::size_t protocolPos = url.find("://"); - if (protocolPos == std::string::npos) { - throw std::runtime_error("Invalid URL: Missing protocol"); - } - - std::size_t hostStart = protocolPos + 3; - - if (hostStart >= url.size()) { - throw std::runtime_error("Invalid URL: Host is missing"); - } - - std::size_t pathPos = url.find('/', hostStart); - std::size_t portPos = url.find(':', hostStart); - - if (portPos != std::string::npos && (pathPos == std::string::npos || portPos < pathPos)) { - host = url.substr(hostStart, portPos - hostStart); - std::size_t portEnd = (pathPos == std::string::npos) ? url.size() : pathPos; - port = std::stoi(url.substr(portPos + 1, portEnd - portPos - 1)); - } else { - if (pathPos == std::string::npos) { - host = url.substr(hostStart); - path = "/"; - } else { - host = url.substr(hostStart, pathPos - hostStart); - } - } - if (path.empty()) { - if (pathPos != std::string::npos) { - path = url.substr(pathPos); - } else { - path = "/"; - } - } - return std::make_tuple(host, port, path); -} - -HttpResponse HttpClient::ParseHttpResponse(const std::string &response) { - HttpResponse httpResponse; - std::size_t statusCodeStart = response.find("HTTP/1.1 ") + 9; - std::size_t statusCodeEnd = response.find(" ", statusCodeStart); - if (statusCodeStart != std::string::npos && statusCodeEnd != std::string::npos) { - httpResponse.statusCode = std::stoi(response.substr(statusCodeStart, statusCodeEnd - statusCodeStart)); - } - std::size_t bodyStart = response.find("\r\n\r\n"); - if (bodyStart != std::string::npos) { - httpResponse.body = response.substr(bodyStart + 4); - } - if (response.find("Transfer-Encoding: chunked") != std::string::npos - && response.find("Content-Type: application/json") != std::string::npos) { - int jsonStart = httpResponse.body.find("{"); - int jsonEnd = httpResponse.body.find_last_of("}"); - if (jsonStart != std::string::npos && jsonEnd != std::string::npos) { - httpResponse.body = httpResponse.body.substr(jsonStart, jsonEnd - jsonStart + 2); - } - } - return httpResponse; -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/JsonHelper.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/JsonHelper.cpp deleted file mode 100644 index 5b257839..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/JsonHelper.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#include - -using namespace Aws::GameLift::Internal; - -std::string JsonHelper::SafelyDeserializeString(const rapidjson::Value &value, const char *key) { - return value.HasMember(key) && value[key].IsString() ? value[key].GetString() : ""; -} - -void JsonHelper::WriteNonEmptyString(rapidjson::Writer *writer, const char *key, const std::string &value) { - if (!value.empty()) { - writer->String(key); - writer->String(value.c_str()); - } -} - -int JsonHelper::SafelyDeserializeInt(const rapidjson::Value &value, const char *key) { - return value.HasMember(key) && value[key].IsInt() ? value[key].GetInt() : -1; -} - -void JsonHelper::WritePositiveInt(rapidjson::Writer *writer, const char *key, int value) { - if (value > 0) { - writer->String(key); - writer->Int(value); - } -} - -int64_t JsonHelper::SafelyDeserializeInt64(const rapidjson::Value &value, const char *key) { - return value.HasMember(key) && value[key].IsInt64() ? value[key].GetInt64() : -1; -} - -void JsonHelper::WritePositiveInt64(rapidjson::Writer *writer, const char *key, int64_t value) { - if (value > 0) { - writer->String(key); - writer->Int64(value); - } -} - -Aws::GameLift::Server::LogParameters JsonHelper::SafelyDeserializeLogParameters(const rapidjson::Value &value, const char *key) { - if (!value.HasMember(key) || !value[key].IsArray() || value[key].Size() == 0) { - return Aws::GameLift::Server::LogParameters(); - } - - const rapidjson::SizeType numLogPaths = value[key].Size(); -#ifdef GAMELIFT_USE_STD - std::vector logPaths = std::vector(); -#else - char **logPaths = new char *[numLogPaths]; -#endif - - for (rapidjson::SizeType i = 0; i < numLogPaths; i++) { - if (value[key][i].IsString()) { -#ifdef GAMELIFT_USE_STD - logPaths.push_back(value[key][i].GetString()); -#else - logPaths[i] = new char[MAX_PATH_LENGTH]; -#ifdef WIN32 - strcpy_s(logPaths[i], MAX_PATH_LENGTH, value[key][i].GetString()); -#else - strncpy(logPaths[i], value[key][i].GetString(), MAX_PATH_LENGTH); -#endif -#endif - } - } - -#ifdef GAMELIFT_USE_STD - return Aws::GameLift::Server::LogParameters(logPaths); -#else - Aws::GameLift::Server::LogParameters toReturn(logPaths, numLogPaths); - - for (rapidjson::SizeType i = 0; i < numLogPaths; i++) { - delete[] logPaths[i]; - } - delete[] logPaths; - - return toReturn; -#endif -} - -void JsonHelper::WriteLogParameters(rapidjson::Writer *writer, const char *key, const Aws::GameLift::Server::LogParameters &value) { - if (value.getLogPathCount() == 0) { - return; - } - - writer->String(key); - writer->StartArray(); - - for (size_t i = 0; i < value.getLogPathCount(); i++) { - const char *logPath = value.getLogPath(i); - // If logPath is not empty, write it. - if (logPath && logPath[0]) { - writer->String(value.getLogPath(i)); - } - } - - writer->EndArray(); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/LoggerHelper.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/LoggerHelper.cpp deleted file mode 100644 index 84729247..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/LoggerHelper.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#include -#include -#include -#include - -using namespace Aws::GameLift::Internal; - -#ifdef GAMELIFT_USE_STD -void LoggerHelper::InitializeLogger(const std::string& process_Id) { - auto console_sink = std::make_shared(); - std::string serverSdkLog = "logs/gamelift-server-sdk-"; - serverSdkLog.append(process_Id).append(".log"); - auto file_sink = std::make_shared(serverSdkLog, 10485760, 5); - - console_sink->set_pattern("%^[%Y-%m-%d %H:%M:%S] [%l] %v%$"); - file_sink->set_pattern("[%Y-%m-%d %H:%M:%S] [%l] %v"); - - spdlog::logger logger("multi_sink", { console_sink, file_sink }); - logger.set_level(spdlog::level::info); - logger.flush_on(spdlog::level::info); - - spdlog::set_default_logger(std::make_shared(logger)); -} -#else -void LoggerHelper::InitializeLogger(const char* process_Id) { - auto console_sink = std::make_shared(); - std::string serverSdkLog = "logs/gamelift-server-sdk-"; - serverSdkLog.append(process_Id).append(".log"); - auto file_sink = std::make_shared(serverSdkLog, 10485760, 5); - - console_sink->set_pattern("%^[%Y-%m-%d %H:%M:%S] [%l] %v%$"); - file_sink->set_pattern("[%Y-%m-%d %H:%M:%S] [%l] %v"); - - spdlog::logger logger("multi_sink", { console_sink, file_sink }); - logger.set_level(spdlog::level::info); - logger.flush_on(spdlog::level::info); - - spdlog::set_default_logger(std::make_shared(logger)); -} -#endif - diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/RandomStringGenerator.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/RandomStringGenerator.cpp deleted file mode 100644 index 7c4c90c1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/RandomStringGenerator.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -std::string RandomStringGenerator::GenerateRandomAlphaNumericString(const int stringLength) { - std::stringstream ss; - static const char alphaNumChars[] = "0123456789" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz"; - static thread_local std::mt19937 randomNumberGenerator(std::random_device{}()); - // Distribution has an inclusive upper bound. "alphaNumChars" will end in a null terminator, so - // we use "sizeof() - 2" to avoid out of bounds errors, and also to avoid including the null - // terminator. - std::uniform_int_distribution distribution(0, sizeof(alphaNumChars) - 2); - - for (int i = 0; i < stringLength; i++) { - ss << alphaNumChars[distribution(randomNumberGenerator)]; - } - return ss.str(); -} - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/UriEncoder.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/UriEncoder.cpp deleted file mode 100644 index c9523972..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/internal/util/UriEncoder.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#include -#include -#include - -using namespace Aws::GameLift::Internal; - -std::string UriEncoder::UriEncode(const std::string &value) { - std::ostringstream escaped; - escaped.fill('0'); - escaped << std::hex << std::uppercase; - for (char c: value) { - if (isalnum(static_cast(c)) || c == '-' || c == '_' || c == '.' || c == '~') { - escaped << c; - } else { - escaped << '%' << std::setw(2) << static_cast(static_cast(c)); - } - } - return escaped.str(); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Combiner.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Combiner.cpp deleted file mode 100644 index 1142c4f6..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Combiner.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -#include - -void Combiner::Add(MetricMessage message) { - if (message.IsGauge()) { - // We have to do a bit more work for gauges to convert GaugeAdd to GaugeSet - UpdateGauge(message); - } else { - auto it = m_combinedMessages.find(message.Metric); - if (it == std::end(m_combinedMessages)) { - m_combinedMessages.emplace(message.Metric, message); - return; - } - - assert(message.IsCounter() || message.IsTimer()); - if (message.IsCounter()) { - UpdateCounter(it->second, message); - } else if (message.IsTimer()) { - UpdateTimer(it->second, message); - } - } -} - -void Combiner::UpdateGauge(const MetricMessage &message) { - assert(message.Type == MetricMessageType::GaugeSet || - message.Type == MetricMessageType::GaugeAdd); - - if (message.Type == MetricMessageType::GaugeSet) { - // If setting - we just use the new value - m_combinedMessages[message.Metric] = message; - m_gaugeHistory[message.Metric] = message; - } else if (message.Type == MetricMessageType::GaugeAdd) { - // If adding - we get historic value (if available) and add to it - // if there's no historic value, we just add to 0 - double currentValue = 0; - auto it = m_gaugeHistory.find(message.Metric); - if (it != std::end(m_gaugeHistory)) { - currentValue = it->second.SubmitDouble.Value; - } - currentValue += message.SubmitDouble.Value; - - auto newMessage = MetricMessage::GaugeSet(*message.Metric, currentValue); - m_combinedMessages[message.Metric] = newMessage; - m_gaugeHistory[message.Metric] = newMessage; - } -} - -void Combiner::UpdateCounter(MetricMessage ¤t, - const MetricMessage &newMessage) { - assert(newMessage.Type == MetricMessageType::CounterAdd); - - // Just sum the values. - current.SubmitDouble.Value += newMessage.SubmitDouble.Value; -} - -void Combiner::UpdateTimer(MetricMessage ¤t, - const MetricMessage &newMessage) { - assert(newMessage.Type == MetricMessageType::TimerSet); - - // Grab or init sample count - auto sampleCountIt = m_timerSampleCount.find(current.Metric); - if (sampleCountIt != std::end(m_timerSampleCount)) { - ++(sampleCountIt->second); - } else { - // This is the second sample being added, hence we initialize it to 2. - auto pair = m_timerSampleCount.emplace(current.Metric, 2); - - const bool insertSuccess = pair.second; - assert(insertSuccess); - - sampleCountIt = pair.first; - } - - // Welford's algorithm - // numerically stable mean - // - // Knuth - TACOP Vol 2 pg. 216 - // - // https://nullbuffer.com/articles/welford_algorithm.html - const double update = - (newMessage.SubmitDouble.Value - current.SubmitDouble.Value) / - sampleCountIt->second; - current.SubmitDouble.Value += update; -} - -void Combiner::Clear() { - m_combinedMessages.clear(); - m_timerSampleCount.clear(); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/CrashReporterClient.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/CrashReporterClient.cpp deleted file mode 100644 index 80a474a9..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/CrashReporterClient.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#else -#include -#endif - -namespace Aws { -namespace GameLift { -namespace Metrics { - -CrashReporterClient::CrashReporterClient(const std::string& host, int port) - : httpClient(std::make_shared()) { - baseUrl = "http://" + host + ":" + std::to_string(port) + "/"; -} - -CrashReporterClient::CrashReporterClient(std::shared_ptr httpClient, const std::string &host, int port) - : httpClient(std::move(httpClient)) { - baseUrl = "http://" + host + ":" + std::to_string(port) + "/"; -} - -bool CrashReporterClient::isRetryableError(const std::string& errorMessage) const { - return errorMessage.find("Connection refused") != std::string::npos || - errorMessage.find("Connection failed") != std::string::npos; -} - -void CrashReporterClient::RegisterProcessWithRetries() { -#ifdef _WIN32 - int processPid = static_cast(GetCurrentProcessId()); -#else - int processPid = static_cast(getpid()); -#endif - std::string requestUri = baseUrl + RegisterProcessUrlPath + "?" + - ProcessPidParameterName + "=" + std::to_string(processPid); - - spdlog::info("Registering process with {} {} in OTEL Collector Crash Reporter", ProcessPidParameterName, processPid); - - // 5 retries, 1s base delay with jitter (default) - // Total max wait time: ~1s + 2s + 4s + 8s + 16s = ~31s - Aws::GameLift::Internal::JitteredGeometricBackoffRetryStrategy retryStrategy; - - auto callable = [this, &requestUri, processPid]() -> bool { - try { - auto response = httpClient->SendGetRequest(requestUri); - if (response.IsSuccessfulStatusCode()) { - spdlog::info("Successfully registered {} {} to OTEL Collector Crash Reporter", ProcessPidParameterName, processPid); - return true; - } else { - spdlog::error("Failed to register {} {} to OTEL Collector Crash Reporter, Http response: {} - {}", - ProcessPidParameterName, processPid, response.statusCode, response.body); - return true; // Don't retry on HTTP errors (4xx, 5xx) - } - } catch (const std::exception& e) { - std::string errorMsg = e.what(); - if (isRetryableError(errorMsg)) { - spdlog::warn("Failed to register {} {} to OTEL Collector Crash Reporter due to connection error: {}", - ProcessPidParameterName, processPid, e.what()); - return false; // Retry on connection errors - } else { - spdlog::error("Failed to register {} {} to OTEL Collector Crash Reporter due to error: {}", - ProcessPidParameterName, processPid, e.what()); - return true; // Don't retry on other errors - } - } - }; - - Aws::GameLift::Internal::RetryingCallable::Builder() - .WithRetryStrategy(&retryStrategy) - .WithCallable(callable) - .Build() - .call(); -} - -void CrashReporterClient::RegisterProcess() { - RegisterProcessWithRetries(); -} - -void CrashReporterClient::TagGameSession(const std::string& sessionId) { -#ifdef _WIN32 - int processPid = static_cast(GetCurrentProcessId()); -#else - int processPid = static_cast(getpid()); -#endif - std::string requestUri = baseUrl + UpdateProcessUrlPath + "?" + - ProcessPidParameterName + "=" + std::to_string(processPid) + "&" + - SessionIdParameterName + "=" + sessionId; - - try { - spdlog::info("Adding {} tag {} to process with {} {} to the OTEL Collector Crash Reporter", - SessionIdParameterName, sessionId, ProcessPidParameterName, processPid); - auto response = httpClient->SendGetRequest(requestUri); - if (!response.IsSuccessfulStatusCode()) { - spdlog::error("Failed to add {} tag {} to process with {} {} in the OTEL Collector Crash Reporter, Http response: {} - {}", - SessionIdParameterName, sessionId, ProcessPidParameterName, processPid, - response.statusCode, response.body); - } - } catch (const std::exception& e) { - spdlog::error("Failed to add {} tag {} to process with {} {} in the OTEL Collector Crash Reporter due to error: {}", - SessionIdParameterName, sessionId, ProcessPidParameterName, processPid, e.what()); - } -} - -void CrashReporterClient::DeregisterProcess() { -#ifdef _WIN32 - int processPid = static_cast(GetCurrentProcessId()); -#else - int processPid = static_cast(getpid()); -#endif - std::string requestUri = baseUrl + DeregisterProcessUrlPath + "?" + - ProcessPidParameterName + "=" + std::to_string(processPid); - - try { - spdlog::info("Unregistering process with {} {} in OTEL Collector Crash Reporter", - ProcessPidParameterName, processPid); - auto response = httpClient->SendGetRequest(requestUri); - if (!response.IsSuccessfulStatusCode()) { - spdlog::error("Failed to deregister {} {} in the OTEL Collector Crash Reporter, Http response: {} - {}", - ProcessPidParameterName, processPid, response.statusCode, response.body); - } - } catch (const std::exception& e) { - spdlog::error("Failed to deregister {} {} in the OTEL Collector Crash Reporter due to error: {}", - ProcessPidParameterName, processPid, e.what()); - } -} - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/DerivedMetric.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/DerivedMetric.cpp deleted file mode 100644 index 7381a229..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/DerivedMetric.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -IDerivedMetric::~IDerivedMetric() {} - -IDerivedMetricVisitor::~IDerivedMetricVisitor() {} - -IDerivedMetricCollection::~IDerivedMetricCollection() {} -} // namespace Metrics -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/DynamicMetric.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/DynamicMetric.cpp deleted file mode 100644 index 06c7001a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/DynamicMetric.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -#ifndef GAMELIFT_USE_STD -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -void DynamicMetric::SetKey(const char *newKey) { -#ifdef _WIN32 - strncpy_s(m_key, DynamicMetric::MAXIMUM_KEY_LENGTH, newKey, - DynamicMetric::MAXIMUM_KEY_LENGTH); -#else - strncpy(m_key, newKey, DynamicMetric::MAXIMUM_KEY_LENGTH); -#endif // _WIN32 -} -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -#endif // !GAMELIFT_USE_STD \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/GlobalMetricsProcessor.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/GlobalMetricsProcessor.cpp deleted file mode 100644 index fafdc39b..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/GlobalMetricsProcessor.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#ifdef __linux__ -#include -#elif defined(_WIN32) || defined(_WIN64) -#include -#endif - -GAMELIFT_METRICS_DEFINE_GAUGE(ServerUpGauge); - -namespace { -std::unique_ptr<::Aws::GameLift::Metrics::IMetricsProcessor> - GlobalProcessor(nullptr); -std::shared_ptr<::Aws::GameLift::Metrics::StatsDClient> - GlobalStatsDClient(nullptr); -std::shared_ptr<::Aws::GameLift::Metrics::CrashReporterClient> - GlobalCrashReporter(nullptr); - -void InitializeCrashReporter(const MetricsSettings &settings) { - std::string crashReporterHost; -#ifdef GAMELIFT_USE_STD - crashReporterHost = settings.CrashReporterHost; -#else - crashReporterHost = (settings.CrashReporterHost != nullptr) ? std::string(settings.CrashReporterHost) : ""; -#endif - // Skip crash reporter initialization if host is empty - if (crashReporterHost.empty()) { - GAMELIFT_METRICS_LOG_INFO("Crash reporter disabled - host not set"); - return; - } - int crashReporterPort = settings.CrashReporterPort; - GlobalCrashReporter = std::make_shared(crashReporterHost, crashReporterPort); - GlobalCrashReporter->RegisterProcess(); -} - -void InitializeStatsDClient(const MetricsSettings &settings) { - std::string statsdHost; -#ifdef GAMELIFT_USE_STD - statsdHost = settings.StatsDClientHost; -#else - statsdHost = (settings.StatsDClientHost != nullptr) ? std::string(settings.StatsDClientHost) : ""; -#endif - // Skip crash reporter initialization if host is empty - if (statsdHost.empty()) { - GAMELIFT_METRICS_LOG_INFO("StatsDClient disabled - host not set"); - return; - } - int statsdPort = settings.StatsDClientPort; - GlobalStatsDClient = std::make_shared(statsdHost.c_str(), statsdPort); - GAMELIFT_METRICS_LOG_INFO("Created StatsD client for {}:{}", statsdHost, statsdPort); -} - -void InitializeDefaultGlobalTags() { - if (GlobalProcessor) { - // Check if GAMELIFT_SDK_PROCESS_ID environment variable is set - const char *processId = std::getenv(ENV_VAR_PROCESS_ID); - if (processId != nullptr && processId[0] != '\0') { - GlobalProcessor->SetGlobalTag("gamelift_process_id", processId); - - GAMELIFT_METRICS_LOG_INFO("Set global tag gamelift_process_id: {}", - processId); - } - - // Set the OS process ID (Linux and Windows). -#if defined(_WIN32) || defined(_WIN64) - DWORD pid = GetCurrentProcessId(); - std::string pidStr = std::to_string(pid); -#else - pid_t pid = getpid(); - std::string pidStr = std::to_string(pid); -#endif - GlobalProcessor->SetGlobalTag("process_pid", pidStr.c_str()); - GAMELIFT_METRICS_LOG_INFO("Set global tag process_pid: {}", pidStr); - } -} -} // namespace - -namespace Aws { -namespace GameLift { -namespace Metrics { - -void MetricsInitialize(const MetricsSettings &settings) { - GAMELIFT_METRICS_LOG_INFO("Initializing GameLift Servers Metrics"); - - assert(!GlobalProcessor); - InitializeCrashReporter(settings); - InitializeStatsDClient(settings); - - // Create settings with StatsD callback only if no callback is already set - MetricsSettings settingsWithCallbackOverride = settings; - if (!settings.SendPacketCallback) { - settingsWithCallbackOverride.SendPacketCallback = [](const char* data, int size) { - if (GlobalStatsDClient) { - GlobalStatsDClient->Send(data, size); - } else { - GAMELIFT_METRICS_LOG_ERROR("StatsDClient is not initialized. Cannot send metrics data."); - } - }; - } - - GlobalProcessor.reset(new MetricsProcessor(settingsWithCallbackOverride)); - InitializeDefaultGlobalTags(); - - GAMELIFT_METRICS_LOG_INFO( - "GameLift Servers Metrics initialized successfully"); -} - -void MetricsTerminate() { - GAMELIFT_METRICS_SET(ServerUpGauge, 0); - - // Process the final metrics before shutting down - if (GlobalProcessor) { - GlobalProcessor->ProcessMetricsNow(); - } - - if (GlobalCrashReporter) { - GlobalCrashReporter->DeregisterProcess(); - GlobalCrashReporter.reset(); - } - - if (GlobalStatsDClient) { - GlobalStatsDClient.reset(); - } - - GlobalProcessor.reset(); -} - -void MetricsProcess() { - assert(GlobalProcessor); - if (GlobalProcessor) { - GlobalProcessor->ProcessMetrics(); - } -} - -void OnGameSessionStarted( - const Aws::GameLift::Server::Model::GameSession &session) { - assert(GlobalProcessor); - if (GlobalProcessor) { - GlobalProcessor->OnStartGameSession(session); - } - if (GlobalCrashReporter) { -#ifdef GAMELIFT_USE_STD - GlobalCrashReporter->TagGameSession(session.GetGameSessionId()); -#else - GlobalCrashReporter->TagGameSession(std::string(session.GetGameSessionId())); -#endif - } -} - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -::Aws::GameLift::Metrics::IMetricsProcessor *GameLiftMetricsGlobalProcessor() { - return GlobalProcessor.get(); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/HighResolutionClock.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/HighResolutionClock.cpp deleted file mode 100644 index 7ff97879..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/HighResolutionClock.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -#ifndef GAMELIFT_USE_STD -#include - -#include - -/** - * We hide the internal chrono use and report a time as int64 nanoseconds - * publicly. - * - * Then convert back to chrono internally. - */ - -namespace { -using Nanoseconds = - std::chrono::duration; -} - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { -Int64 HighResolutionClock::Now() { - const auto now = std::chrono::high_resolution_clock::now(); - return std::chrono::time_point_cast(now) - .time_since_epoch() - .count(); -} - -double HighResolutionClock::ToMilliseconds(Int64 duration) { - using Milliseconds = std::chrono::duration; - return std::chrono::duration_cast(Nanoseconds(duration)) - .count(); -} -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -#endif // !GAMELIFT_USE_STD diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/IMetricsProcessor.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/IMetricsProcessor.cpp deleted file mode 100644 index 12ec2344..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/IMetricsProcessor.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -IMetricsEnqueuer::~IMetricsEnqueuer() {} - -IMetricsProcessor::~IMetricsProcessor() {} - -#ifdef GAMELIFT_USE_STD -MetricMessage MetricMessage::TagSet(IMetric &metric, std::string key, - std::string value) { - DynamicTag *tag = new DynamicTag(std::move(key), std::move(value)); - return MetricMessage(MetricMessageType::TagSet, &metric, MetricSetTag(tag)); -} - -MetricMessage MetricMessage::TagRemove(Aws::GameLift::Metrics::IMetric &metric, - std::string key) { - DynamicTag *tag = new DynamicTag(std::move(key), ""); - return MetricMessage(MetricMessageType::TagRemove, &metric, - MetricSetTag(tag)); -} -#else -MetricMessage MetricMessage::TagSet(IMetric &metric, const char *key, - const char *value) { - DynamicTag *tag = new DynamicTag(key, value); - return MetricMessage(MetricMessageType::TagSet, &metric, MetricSetTag(tag)); -} - -MetricMessage MetricMessage::TagRemove(IMetric &metric, const char *key) { - DynamicTag *tag = new DynamicTag(key, ""); - return MetricMessage(MetricMessageType::TagRemove, &metric, - MetricSetTag(tag)); -} -#endif - -bool operator==(const MetricSetTag &a, const MetricSetTag &b) { - return a.Ptr->Key == b.Ptr->Key && a.Ptr->Value == b.Ptr->Value; -} - -void CopyTagMessage(const MetricMessage &original, IMetric &destMetric, - IMetricsEnqueuer &enqueuer) { - switch (original.Type) { - case MetricMessageType::TagSet: - enqueuer.Enqueue(MetricMessage::TagSet(destMetric, - original.SetTag.Ptr->Key.c_str(), - original.SetTag.Ptr->Value.c_str())); - break; - case MetricMessageType::TagRemove: - enqueuer.Enqueue( - MetricMessage::TagRemove(destMetric, original.SetTag.Ptr->Key.c_str())); - break; - default: - break; - } -} - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/InternalTypes.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/InternalTypes.cpp deleted file mode 100644 index 212601ff..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/InternalTypes.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -IMetric::~IMetric() {} -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/KeySuffix.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/KeySuffix.cpp deleted file mode 100644 index 474224c6..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/KeySuffix.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -#ifdef GAMELIFT_USE_STD -namespace Aws { -namespace GameLift { -namespace Metrics { -void KeySuffix::Apply(const IMetric &original, DynamicMetric &target) { - target.SetKey(std::string(original.GetKey()) + m_suffix); -} -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#else -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -KeySuffix::KeySuffix() { - std::fill(std::begin(m_suffix), std::end(m_suffix), '\0'); -} - -KeySuffix::KeySuffix(const char *newSuffix) { -#ifdef _WIN32 - strncpy_s(m_suffix, KeySuffix::MAXIMUM_SUFFIX_LENGTH, newSuffix, - KeySuffix::MAXIMUM_SUFFIX_LENGTH); -#else - strncpy(m_suffix, newSuffix, KeySuffix::MAXIMUM_SUFFIX_LENGTH); -#endif // _WIN32 -} - -void KeySuffix::SetSuffix(const char *newSuffix) { -#ifdef _WIN32 - strncpy_s(m_suffix, KeySuffix::MAXIMUM_SUFFIX_LENGTH, newSuffix, - KeySuffix::MAXIMUM_SUFFIX_LENGTH); -#else - strncpy(m_suffix, newSuffix, KeySuffix::MAXIMUM_SUFFIX_LENGTH); -#endif // _WIN32 -} - -void KeySuffix::Apply(const IMetric &original, DynamicMetric &target) { - std::string key = original.GetKey(); - key += m_suffix; - target.SetKey(key.c_str()); -} - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -#endif // GAMELIFT_USE_STD \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/MetricsProcessor.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/MetricsProcessor.cpp deleted file mode 100644 index 673240d7..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/MetricsProcessor.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include -#include -#include -#include -#include - -void MetricsProcessor::ProcessMetrics() { - const auto now = ClockT::now(); - if (now < m_nextCaptureTime) { - return; - } - - // The server_up metric needs to be set on each flush period, as an untouched - // metric will automatically expire in many metrics backends (e.g. Prometheus) - GAMELIFT_METRICS_SET(ServerUpGauge, 1); - - ProcessMetricsNow(); -} - -void MetricsProcessor::ProcessMetricsNow() { - if (m_preProcessCallback) { - m_preProcessCallback(); - } - - const auto messageCount = m_messageQueueMPSC.size_approx(); - m_messageQueueMPSC.try_dequeue_bulk(std::back_inserter(m_processQueue), - messageCount); - - m_combinedMetrics.Clear(); - ProcessMessages(m_processQueue); - m_processQueue.clear(); - m_enqueuer.Clear(); - - m_nextCaptureTime = ClockT::now() + m_captureInterval; -} - -namespace { -void UpdateDerivedMetrics(std::vector &messages, - IMetricsEnqueuer &enqueuer) { - for (auto &message : messages) { - struct HandleMessageVisitor final - : public Aws::GameLift::Metrics::IDerivedMetricVisitor { - MetricMessage &m_message; - IMetricsEnqueuer &m_enqueuer; - - explicit HandleMessageVisitor(MetricMessage &message, - IMetricsEnqueuer &enqueuer) noexcept - : m_message(message), m_enqueuer(enqueuer) {} - - virtual void VisitDerivedMetric( - Aws::GameLift::Metrics::IDerivedMetric &metric) override { - metric.HandleMessage(m_message, m_enqueuer); - } - }; - - HandleMessageVisitor visitor(message, enqueuer); - message.Metric->GetDerivedMetrics().Visit(visitor); - } -} - -void SubmitDerivedMetrics(std::vector &messages, - IMetricsEnqueuer &enqueuer) { - std::unordered_set submittedMetrics; - - for (auto &message : messages) { - const bool derivativeMetricsSubmitted = - submittedMetrics.find(message.Metric) != std::end(submittedMetrics); - if (derivativeMetricsSubmitted) { - continue; - } - - submittedMetrics.emplace(message.Metric); - - class EmitMessageVisitor final - : public Aws::GameLift::Metrics::IDerivedMetricVisitor { - public: - EmitMessageVisitor(const Aws::GameLift::Metrics::IMetric *originalMetric, - IMetricsEnqueuer &enqueuer) noexcept - : m_originalMetric(originalMetric), m_enqueuer(enqueuer) {} - - virtual void VisitDerivedMetric( - Aws::GameLift::Metrics::IDerivedMetric &metric) override { - metric.EmitMetrics(m_originalMetric, m_enqueuer); - } - - private: - const Aws::GameLift::Metrics::IMetric *m_originalMetric; - IMetricsEnqueuer &m_enqueuer; - }; - - EmitMessageVisitor visitor(message.Metric, enqueuer); - message.Metric->GetDerivedMetrics().Visit(visitor); - } -} -} // namespace - -void MetricsProcessor::ProcessMessages(std::vector &messages) { - // Compute derived metrics and appends their messages to the end - UpdateDerivedMetrics(messages, m_enqueuer); - SubmitDerivedMetrics(messages, m_enqueuer); - std::copy(std::begin(m_enqueuer.m_messages), std::end(m_enqueuer.m_messages), - std::back_inserter(messages)); - - // Combine all the metrics - for (auto &message : messages) { - if (message.IsTag()) { - m_metricTags.Handle(message); - } else { - m_combinedMetrics.Add(message); - } - } - - if (m_combinedMetrics.IsEmpty()) { - return; - } - - // Build & send packets - for (const auto &message : m_combinedMetrics) { - m_packet.Append(message, m_globalTags, m_metricTags.GetTags(message.Metric), - m_sendPacket); - } - m_packet.Flush(m_sendPacket); -} - -void MetricsProcessor::OnStartGameSession( - const Aws::GameLift::Server::Model::GameSession &session) { -#ifdef GAMELIFT_USE_STD - const char *sessionId = session.GetGameSessionId().c_str(); -#else - const char *sessionId = session.GetGameSessionId(); -#endif - - if (sessionId != nullptr && sessionId[0] != '\0') { - SetGlobalTag("session_id", sessionId); - } -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/MetricsUtils.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/MetricsUtils.cpp deleted file mode 100644 index 393da240..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/MetricsUtils.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include -#include -#include -#include -#include -#include -#include - -using namespace Aws::GameLift::Server; - -namespace Aws { -namespace GameLift { -namespace Metrics { - -MetricsParameters CreateMetricsParametersFromEnvironmentOrDefault() { - // Start with default values - const char* statsdHost = DEFAULT_STATSD_HOST; - int statsdPort = DEFAULT_STATSD_PORT; - const char* crashReporterHost = DEFAULT_CRASH_REPORTER_HOST; - int crashReporterPort = DEFAULT_CRASH_REPORTER_PORT; - int flushIntervalMs = DEFAULT_FLUSH_INTERVAL_MS; - int maxPacketSize = DEFAULT_MAX_PACKET_SIZE; - - // Check environment variables and override defaults - const char* envStatsdHost = std::getenv(ENV_VAR_STATSD_HOST); - if (envStatsdHost && envStatsdHost[0] != '\0') { - statsdHost = envStatsdHost; - spdlog::info("Env override for statsdHost: {}", statsdHost); - } - - const char* envStatsdPort = std::getenv(ENV_VAR_STATSD_PORT); - if (envStatsdPort && envStatsdPort[0] != '\0') { - statsdPort = std::atoi(envStatsdPort); - spdlog::info("Env override for statsdPort: {}", statsdPort); - } - - const char* envCrashReporterHost = std::getenv(ENV_VAR_CRASH_REPORTER_HOST); - if (envCrashReporterHost && envCrashReporterHost[0] != '\0') { - crashReporterHost = envCrashReporterHost; - spdlog::info("Env override for crashReporterHost: {}", crashReporterHost); - } - - const char* envCrashReporterPort = std::getenv(ENV_VAR_CRASH_REPORTER_PORT); - if (envCrashReporterPort && envCrashReporterPort[0] != '\0') { - crashReporterPort = std::atoi(envCrashReporterPort); - spdlog::info("Env override for crashReporterPort: {}", crashReporterPort); - } - - const char* envFlushInterval = std::getenv(ENV_VAR_FLUSH_INTERVAL_MS); - if (envFlushInterval && envFlushInterval[0] != '\0') { - flushIntervalMs = std::atoi(envFlushInterval); - spdlog::info("Env override for flushIntervalMs: {}", flushIntervalMs); - } - - const char* envMaxPacketSize = std::getenv(ENV_VAR_MAX_PACKET_SIZE); - if (envMaxPacketSize && envMaxPacketSize[0] != '\0') { - maxPacketSize = std::atoi(envMaxPacketSize); - spdlog::info("Env override for maxPacketSize: {}", maxPacketSize); - } - -#ifdef GAMELIFT_USE_STD - return MetricsParameters(std::string(statsdHost), statsdPort, std::string(crashReporterHost), crashReporterPort, flushIntervalMs, maxPacketSize); -#else - return MetricsParameters(statsdHost, statsdPort, crashReporterHost, crashReporterPort, flushIntervalMs, maxPacketSize); -#endif -} - -MetricsSettings FromMetricsParameters(const Aws::GameLift::Server::MetricsParameters ¶ms) { - MetricsSettings settings; - settings.StatsDClientHost = params.GetStatsDHost(); - settings.StatsDClientPort = params.GetStatsDPort(); - settings.CrashReporterHost = params.GetCrashReporterHost(); - settings.CrashReporterPort = params.GetCrashReporterPort(); - settings.MaxPacketSizeBytes = params.GetMaxPacketSize(); - settings.CaptureIntervalSec = params.GetFlushIntervalMs() / 1000.0f; - return settings; -} - -Aws::GameLift::GenericOutcome ValidateMetricsParameters(const Aws::GameLift::Server::MetricsParameters ¶ms) { - // Validate StatsD host -#ifdef GAMELIFT_USE_STD - if (params.GetStatsDHost().empty()) { - return Aws::GameLift::GenericOutcome(Aws::GameLift::GameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "StatsDHost cannot be empty")); - } -#else - const char* statsdHost = params.GetStatsDHost(); - if (statsdHost == nullptr || statsdHost[0] == '\0') { - return Aws::GameLift::GenericOutcome(Aws::GameLift::GameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "StatsDHost cannot be empty")); - } -#endif - - // Validate StatsD port - int statsdPort = params.GetStatsDPort(); - if (statsdPort < PORT_MIN || statsdPort > PORT_MAX) { - return Aws::GameLift::GenericOutcome(Aws::GameLift::GameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "StatsDPort must be between 1 and 65535")); - } - - // Validate CrashReporter host -#ifdef GAMELIFT_USE_STD - if (params.GetCrashReporterHost().empty()) { - return Aws::GameLift::GenericOutcome(Aws::GameLift::GameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "CrashReporterHost cannot be empty")); - } -#else - const char* crashReporterHost = params.GetCrashReporterHost(); - if (crashReporterHost == nullptr || crashReporterHost[0] == '\0') { - return Aws::GameLift::GenericOutcome(Aws::GameLift::GameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "CrashReporterHost cannot be empty")); - } -#endif - - // Validate CrashReporter port - int crashReporterPort = params.GetCrashReporterPort(); - if (crashReporterPort < PORT_MIN || crashReporterPort > PORT_MAX) { - return Aws::GameLift::GenericOutcome(Aws::GameLift::GameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "CrashReporterPort must be between 1 and 65535")); - } - - // Validate FlushIntervalMs - int flushIntervalMs = params.GetFlushIntervalMs(); - if (flushIntervalMs < 0) { - return Aws::GameLift::GenericOutcome(Aws::GameLift::GameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "FlushIntervalMs must be non-negative")); - } - - // Validate MaxPacketSize - int maxPacketSize = params.GetMaxPacketSize(); - if (maxPacketSize < 0) { - return Aws::GameLift::GenericOutcome(Aws::GameLift::GameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION, "MaxPacketSize must be non-negative")); - } - - return Aws::GameLift::GenericOutcome(nullptr); -} - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/PacketBuilder.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/PacketBuilder.cpp deleted file mode 100644 index 4b47af25..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/PacketBuilder.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include -#include -#include -#include -#include -#include -#include - -namespace { -static constexpr int NullTerminator = 1; -} - -PacketBuilder::PacketBuilder(size_t packetSize, int floatPrecision) - : m_packetSize(packetSize), m_floatPrecision(floatPrecision) { - m_formatBuffer << std::setprecision(floatPrecision) - << std::setiosflags(std::ios_base::fixed); -} - -void PacketBuilder::Append( - const MetricMessage &message, const TagMap &globalTags, - const TagMap &metricTags, - Aws::GameLift::Metrics::MetricsSettings::SendPacketFunc sendPacketFunc) { - const auto startPosition = m_formatBuffer.tellp(); - AppendToStream(message, m_floatPrecision, globalTags, metricTags, - m_formatBuffer); - const auto endPosition = m_formatBuffer.tellp(); - - const size_t messageLength = endPosition - startPosition; - if (messageLength > GetPacketSize() - NullTerminator) { - // If there's no way a message can fit the packet size, we drop it and log - // an error. - - try { - // Use a simple message that doesn't reference message.Metric - // which could be null in tests - GAMELIFT_METRICS_LOG_WARN( - "Message length ({}) exceeds packet size ({}), message has " - "been dropped.", - messageLength, GetPacketSize() - NullTerminator); - } catch (...) { - // Silently continue if logging fails - don't break tests - } - - // Reset the stream to the start position so we can continue appending - m_formatBuffer.seekp(startPosition); - return; - } - - const size_t formatBufferLength = endPosition; - if (formatBufferLength > GetPacketSize() - NullTerminator) { - // Likely case: - // this message caused us to exceed packet size - // - // 1. Seek back to the end of the previous message (cut the new message - // out of the stream). - // 2. Flush (sending packet). - // 3. Re-append the message to the (now) empty stream. - m_formatBuffer.seekp(startPosition); - Flush(sendPacketFunc); - AppendToStream(message, m_floatPrecision, globalTags, metricTags, - m_formatBuffer); - } else if (formatBufferLength == GetPacketSize() - NullTerminator) { - // Unlikely case: - // we hit the packet size exactly - // so we can just flush - Flush(sendPacketFunc); - } -} - -void PacketBuilder::Flush( - Aws::GameLift::Metrics::MetricsSettings::SendPacketFunc sendPacketFunc) { - m_sendBuffer = m_formatBuffer.str(); - m_sendBuffer.resize(m_formatBuffer.tellp()); - - sendPacketFunc(m_sendBuffer.c_str(), - static_cast(m_sendBuffer.size() + NullTerminator)); - - m_formatBuffer.seekp(0); -} - -namespace { -void WriteTags(const PacketBuilder::TagMap &tags, std::ostream &stream) { - if (tags.size() == 0) { - return; - } - - auto it = std::begin(tags); - stream << it->first << ':' << it->second; - for (++it; it != std::end(tags); ++it) { - stream << ',' << it->first << ':' << it->second; - } -} - -void WriteTags(const PacketBuilder::TagMap &globalTags, - const PacketBuilder::TagMap &metricTags, std::ostream &stream) { - if (globalTags.size() > 0 || metricTags.size() > 0) { - stream << "|#"; - WriteTags(globalTags, stream); - if (globalTags.size() > 0 && metricTags.size() > 0) { - stream << ','; - } - WriteTags(metricTags, stream); - } -} - -void WriteValue(double value, int floatPrecision, std::ostream &stream) { - const auto valueAsInteger = static_cast(value); - const double fractionalPart = value - valueAsInteger; - - /* - * We check if the fractional part of our value is 0 when rounded for display. - * - * We configured ostream to round to a specific float precision earlier. - * Ie with a precision = 2, 1.425 becomes 1.43 - * - * Due to floating point imprecision, we may, at some point, end up with a - * value like 1.0000002. When rounded this ends up as 1.00 (with precision = 2 - * as before) and we'd prefer to print it as an integer. - * - * The check is simple: we multiply the fraction by 10^precision and see if - * when rounded the value equals to 0. - * - * 0.425 * 10^2 = 42.5 ~= 43 => not zero so we print 1.425 as a real - * 0.0000002 * 10^2 = 0.00002 ~= 0 => zero so we can print 1.0000002 as an - * integer - * - * This also takes care of integer valued doubles in general. (Fractional part - * is already zero in that case.) - */ - const double thousandths = std::pow(10, floatPrecision); - const bool hasFractionalPart = std::round(fractionalPart * thousandths) != 0; - - if (hasFractionalPart) { - stream << value; - } else { - stream << valueAsInteger; - } -} - -void WriteSampleRate(const MetricMessage &message, std::ostream &stream) { - // Get the sample rate from the sampler - if (message.Metric) { - Aws::GameLift::Metrics::ISampler &sampler = message.Metric->GetSampler(); - float rate = sampler.GetSampleRate(); - - // Only add sample rate if it's less than 1.0 (1.0 is implicit/default in - // StatsD). Packets with a 0.0 sample rate are not sent. - if (rate < 1.0f) { - // Format using a separate stringstream with default formatting - std::ostringstream rateStream; - rateStream << rate; - - stream << "|@" << rateStream.str(); - } - } -} - -void WriteMessage(const MetricMessage &message, int floatPrecision, - std::ostream &stream) { - static constexpr auto showPositiveSign = std::ios_base::showpos; - - stream << message.Metric->GetKey() << ':'; - - if (message.Type == MetricMessageType::GaugeSet) { - WriteValue(message.SubmitDouble.Value, floatPrecision, stream); - stream << "|g"; - } else if (message.Type == MetricMessageType::GaugeAdd) { - stream << std::setiosflags(showPositiveSign); - WriteValue(message.SubmitDouble.Value, floatPrecision, stream); - stream << "|g" << std::resetiosflags(showPositiveSign); - } else if (message.Type == MetricMessageType::CounterAdd) { - WriteValue(message.SubmitDouble.Value, floatPrecision, stream); - stream << "|c" << std::resetiosflags(showPositiveSign); - } else if (message.Type == MetricMessageType::TimerSet) { - WriteValue(message.SubmitDouble.Value, floatPrecision, stream); - stream << "|ms"; - } - - // Add sample rate if using SampleFraction - WriteSampleRate(message, stream); -} -} // namespace - -void AppendToStream(const MetricMessage &message, int floatPrecision, - const PacketBuilder::TagMap &globalTags, - const PacketBuilder::TagMap &metricTags, - std::ostream &stream) { - if (message.Type == MetricMessageType::GaugeSet && - message.SubmitDouble.Value < 0) { - /* - * There's an intentional amgibuity in `gaugor:-10|g` - - * It means 'subtract 10 from gaugor'. So the only way to set a - * gauge to a negative value is by setting it to zero first and - * subtracting: - * gaugor:0|g - * gaugor:-10|g - * - * See: - https://github.com/statsd/statsd/blob/master/docs/metric_types.md#gauges - */ - WriteMessage(MetricMessage::GaugeSet(*message.Metric, 0), floatPrecision, - stream); - WriteTags(globalTags, metricTags, stream); - stream << '\n'; - WriteMessage( - MetricMessage::GaugeAdd(*message.Metric, message.SubmitDouble.Value), - floatPrecision, stream); - WriteTags(globalTags, metricTags, stream); - stream << '\n'; - } else if (message.IsCounter() && message.SubmitDouble.Value <= 0) { - // Skip non-positive or negative counters - } else { - WriteMessage(message, floatPrecision, stream); - WriteTags(globalTags, metricTags, stream); - stream << '\n'; - } -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Percentiles.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Percentiles.cpp deleted file mode 100644 index f215410c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Percentiles.cpp +++ /dev/null @@ -1,207 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace { -struct PercentileMetric { - double m_percentile; - DynamicMetric m_metric; - bool m_metricInitialized = false; - - explicit PercentileMetric(double percentile) : m_percentile(percentile) {} - - double GetPercentile() const { return m_percentile; } - void SetPercentile(double percentile) { m_percentile = percentile; } - PercentileMetric &WithPercentile(double percentile) { - SetPercentile(percentile); - return *this; - } -}; - -/** - * INTERNAL: concrete percentile metric implementation - */ -class PercentilesImpl : public IDerivedMetric { -public: - template PercentilesImpl(It begin, It end) { - std::transform(begin, end, std::back_inserter(m_percentiles), - [](double value) { return PercentileMetric(value); }); - } - - virtual void HandleMessage(MetricMessage &message, - IMetricsEnqueuer &submitter) override { - switch (message.Type) { - case MetricMessageType::GaugeAdd: - m_currentValue += message.SubmitDouble.Value; - AppendValue(m_currentValue); - break; - case MetricMessageType::GaugeSet: - case MetricMessageType::TimerSet: - m_currentValue = message.SubmitDouble.Value; - AppendValue(m_currentValue); - break; - case MetricMessageType::TagSet: - case MetricMessageType::TagRemove: - for (auto &percentile : m_percentiles) { - CopyTagMessage(message, percentile.m_metric, submitter); - } - break; - default: - break; - } - } - - virtual void EmitMetrics(const IMetric *originalMetric, - IMetricsEnqueuer &submitter) override { - if (m_numSeenSinceLastEmitCall == 0) { - return; - } - - m_numSeenSinceLastEmitCall = 0; - std::sort(std::begin(m_values), std::end(m_values)); - for (auto &percentile : m_percentiles) { - EmitPercentile(originalMetric, percentile, submitter); - } - m_values.clear(); - } - -private: - void AppendValue(double newCurrentValue) { - m_values.emplace_back(newCurrentValue); - m_numSeenSinceLastEmitCall++; - } - - void EmitPercentile(const IMetric *originalMetric, - PercentileMetric &percentile, - IMetricsEnqueuer &submitter) { - const double value = ComputePercentile(percentile.GetPercentile()); - - if (!percentile.m_metricInitialized) { - percentile.m_metric.SetMetricType(originalMetric->GetMetricType()); - - std::stringstream stream; - stream << originalMetric->GetKey() << ".p" << std::setw(2) - << std::setfill('0') - << static_cast(percentile.GetPercentile() * 100.0); - -#ifdef GAMELIFT_USE_STD - percentile.m_metric.SetKey(stream.str()); -#else - percentile.m_metric.SetKey(stream.str().c_str()); -#endif - percentile.m_metricInitialized = true; - } - - switch (percentile.m_metric.GetMetricType()) { - case MetricType::Gauge: - submitter.Enqueue(MetricMessage::GaugeSet(percentile.m_metric, value)); - break; - case MetricType::Timer: - submitter.Enqueue(MetricMessage::TimerSet(percentile.m_metric, value)); - break; - default: - break; - } - } - - double ComputePercentile(double percentile) const { - const double startIndexFloat = percentile * (m_values.size() - 1); - const size_t startIndex = static_cast(startIndexFloat); - const double fractionalPart = startIndexFloat - startIndex; - - const bool isBetweenValues = fractionalPart != 0; - if (isBetweenValues) { - const double start = m_values[startIndex]; - const double end = m_values[startIndex + 1]; - return start + fractionalPart * (end - start); - } else { - return m_values[startIndex]; - } - } - -private: - std::vector m_percentiles; - - size_t m_numSeenSinceLastEmitCall = 0; - double m_currentValue = 0; - std::vector m_values; -}; - -/** - * INTERNAL: validate percentiles and report errors / warnings for debug builds - * - * @param begin The begin iterator of percentile collection - * @param end The past-the-end iterator of percentile collection - */ -template -inline void ValidatePercentiles(InputIt begin, InputIt end) { - if (begin == end) { - GAMELIFT_METRICS_LOG_CRITICAL("Percentile list is empty."); - } - - for (auto it = begin + 1; it != end; ++it) { - if (*(it - 1) == *it) { - GAMELIFT_METRICS_LOG_CRITICAL("Duplicate percentiles detected.", *it); - } - } - - for (auto it = begin; it != end; ++it) { - const auto &value = *it; - if (value < 0 || value > 1) { - GAMELIFT_METRICS_LOG_CRITICAL("Percentiles must be in the [0, 1] range.", - value); - } - - const auto percentileFloat = value * 100; - const auto percentileInteger = static_cast(percentileFloat); - const double fractionalPart = percentileFloat - percentileInteger; - const double absDistance = 0.0001; - if (std::abs(fractionalPart) >= absDistance) { - // Warn about the user entering too many digits past decimal point. - // Diff might be a tiny value due to float rounding, so we check against - // distance to ignore it. - GAMELIFT_METRICS_LOG_WARN( - "Percentile {} ({}) has too many digits past the decimal " - "point. It will be truncated to {}", - percentileFloat, value, percentileInteger); - } - } -} -} // anonymous namespace - -namespace Internal { -PercentilesWrapper PercentilesWrapper::Create(double *begin, double *end) { - std::sort(begin, end); // sort percentiles (mostly for validation but might - // as well keep them in this order) - -#ifndef NDEBUG - ValidatePercentiles(begin, end); -#endif - - return PercentilesWrapper(new PercentilesImpl(begin, end)); -} -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Samplers.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Samplers.cpp deleted file mode 100644 index d0fb556e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Samplers.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { -/** - * Basic wrapper around seed_seq so we don't have to leak it in the header - */ -struct SeedState { - std::seed_seq m_seed; - // std::seed_seq has internal state that is updated when we first initialize - // the sampler per-thread - std::mutex m_mutex; - - explicit SeedState(Int64 seed) : m_seed{seed} {} -}; -} // namespace Internal - -namespace { -/** - * Per thread sampler with own RNG. - * - * We use this to avoid synchronization in multithreaded scenarios. - * This way we only have to lock when first initializing the thread. - */ -class PerThreadSampler { -public: - explicit PerThreadSampler(Internal::SeedState &state) noexcept - : m_distribution(0.0, 1.0) { - const std::lock_guard guard(state.m_mutex); - if (state.m_seed.size() > 0) { - m_engine = std::mt19937(state.m_seed); - } - } - - bool ShouldTakeSample(float fraction) { - const float randomValue = m_distribution(m_engine); - return randomValue <= fraction; - } - -private: - std::uniform_real_distribution m_distribution; - std::mt19937 m_engine; -}; -} // namespace - -ISampler::~ISampler() {} - -SampleFraction::SampleFraction(float fractionToSample, Int64 seed) - : m_fractionToSample(fractionToSample), - m_seed(new Internal::SeedState(seed)) {} - -SampleFraction::~SampleFraction() { delete m_seed; } - -bool SampleFraction::ShouldTakeSample() { - // We use per-thread RNG to avoid synchronization. - static thread_local PerThreadSampler sampler(*m_seed); - return sampler.ShouldTakeSample(m_fractionToSample); -} - -Int64 SampleFraction::DefaultSeed() { - using Nanoseconds = std::chrono::duration; - return std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()) - .count(); -} -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/StatsDClient.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/StatsDClient.cpp deleted file mode 100644 index ff3c037a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/StatsDClient.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#include -#include - -using namespace Aws::GameLift::Metrics; - -#ifdef GAMELIFT_USE_STD -StatsDClient::StatsDClient(const std::string& host, int port) -#else -StatsDClient::StatsDClient(const char* host, int port) -#endif - : m_socket(m_io_service) - , m_endpoint(asio::ip::address::from_string(host), port) { - - try { - m_socket.open(asio::ip::udp::v4()); - } catch (const std::exception& e) { - GAMELIFT_METRICS_LOG_ERROR("Failed to open StatsD socket: {}", e.what()); - } -} - -void StatsDClient::Send(const char* data, int size) { - try { - m_socket.send_to(asio::buffer(data, size), m_endpoint); - } catch (const std::exception& e) { - GAMELIFT_METRICS_LOG_ERROR("Failed to send StatsD packet: {}", e.what()); - } -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Tags.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Tags.cpp deleted file mode 100644 index e314778a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/Tags.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include -#include - -#include -#include - -void Tags::Handle(MetricMessage &message) { - assert(message.Type == MetricMessageType::TagSet || - message.Type == MetricMessageType::TagRemove); - - if (message.Type == MetricMessageType::TagSet) { - HandleSet(message.Metric, message.SetTag); - } else if (message.Type == MetricMessageType::TagRemove) { - HandleRemove(message.Metric, message.SetTag); - } -} - -void Tags::HandleSet(const IMetric *metric, MetricSetTag &message) { - // Create tag map for current metric if not exist - auto it = m_tags.find(metric); - if (it == std::end(m_tags)) { - it = m_tags.emplace(metric, std::unordered_map()) - .first; - } - assert(it != std::end(m_tags)); - auto &metricTags = it->second; - - auto tagIt = metricTags.find(message.Ptr->Key); - if (tagIt != std::end(metricTags)) { - // Swap-in the new value to avoid copy - // Old value gets deleted below. - using std::swap; - swap(tagIt->second, message.Ptr->Value); - } else { - // Move key and value into dictionary to avoid copy. (We delete empty shells - // below.) - metricTags.emplace(std::move(message.Ptr->Key), - std::move(message.Ptr->Value)); - } - - delete message.Ptr; - message.Ptr = nullptr; -} - -void Tags::HandleRemove(const IMetric *metric, MetricSetTag &message) { - auto it = m_tags.find(metric); - if (it != std::end(m_tags)) { - it->second.erase(message.Ptr->Key); - } - delete message.Ptr; - message.Ptr = nullptr; -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/TypeTraits.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/TypeTraits.cpp deleted file mode 100644 index 2334a99e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/metrics/TypeTraits.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#include - -#ifndef GAMELIFT_USE_STD -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { -const bool TrueType::value; -const bool FalseType::value; -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#endif // !GAMELIFT_USE_STD diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/server/GameLiftServerAPI.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/server/GameLiftServerAPI.cpp deleted file mode 100644 index 268bebfd..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/server/GameLiftServerAPI.cpp +++ /dev/null @@ -1,443 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -using namespace Aws::GameLift; - -static const std::string sdkVersion = "5.4.0"; - -#ifdef GAMELIFT_USE_STD -Aws::GameLift::AwsStringOutcome Server::GetSdkVersion() { return AwsStringOutcome(sdkVersion); } - -Server::InitSDKOutcome Server::InitSDK() { return InitSDK(Aws::GameLift::Server::Model::ServerParameters()); } - -Server::InitSDKOutcome Server::InitSDK(const Aws::GameLift::Server::Model::ServerParameters &serverParameters) { - Internal::LoggerHelper::InitializeLogger(serverParameters.GetProcessId()); - spdlog::info("Initializing GameLift SDK"); - // Initialize the WebSocketWrapper - std::shared_ptr webSocketClientWrapper; - std::shared_ptr wsClientPointer = std::make_shared(); - webSocketClientWrapper = std::make_shared(wsClientPointer); - - InitSDKOutcome initOutcome = InitSDKOutcome(Internal::GameLiftServerState::CreateInstance(webSocketClientWrapper)); - if (initOutcome.IsSuccess()) { - spdlog::info("Created Instance"); - GenericOutcome networkingOutcome = initOutcome.GetResult()->InitializeNetworking(serverParameters); - if (!networkingOutcome.IsSuccess()) { - spdlog::error("Networking outcome failure when init SDK"); - return InitSDKOutcome(networkingOutcome.GetError()); - } - spdlog::info("Networking outcome success. Init SDK success"); - - // Set global processor if available - Aws::GameLift::Metrics::IMetricsProcessor* globalProcessor = GameLiftMetricsGlobalProcessor(); - if (globalProcessor != nullptr) { - initOutcome.GetResult()->SetGlobalProcessor(globalProcessor); - } - } - return initOutcome; -} - -GenericOutcome Server::ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - return serverState->ProcessReady(processParameters); -} - -GenericOutcome Server::ProcessEnding() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - return serverState->ProcessEnding(); -} - -GenericOutcome Server::ActivateGameSession() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - return serverState->ActivateGameSession(); -} - -StartMatchBackfillOutcome Server::StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &request) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return StartMatchBackfillOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - return serverState->StartMatchBackfill(request); -} - -GenericOutcome Server::StopMatchBackfill(const Aws::GameLift::Server::Model::StopMatchBackfillRequest &request) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - return serverState->StopMatchBackfill(request); -} - -GenericOutcome Server::UpdatePlayerSessionCreationPolicy(Aws::GameLift::Server::Model::PlayerSessionCreationPolicy newPlayerSessionPolicy) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - return serverState->UpdatePlayerSessionCreationPolicy(newPlayerSessionPolicy); -} - -Aws::GameLift::AwsStringOutcome Server::GetGameSessionId() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return AwsStringOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - if (!serverState->IsProcessReady()) { - return AwsStringOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - return AwsStringOutcome(serverState->GetGameSessionId()); -} - -Aws::GameLift::AwsLongOutcome Server::GetTerminationTime() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return AwsLongOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - return AwsLongOutcome(serverState->GetTerminationTime()); -} - -GenericOutcome Server::AcceptPlayerSession(const std::string &playerSessionId) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - if (!serverState->IsProcessReady()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - return serverState->AcceptPlayerSession(playerSessionId); -} - -GenericOutcome Server::RemovePlayerSession(const std::string &playerSessionId) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - if (!serverState->IsProcessReady()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - return serverState->RemovePlayerSession(playerSessionId); -} - -#else -Aws::GameLift::AwsStringOutcome Server::GetSdkVersion() { return AwsStringOutcome(sdkVersion.c_str()); } - -GenericOutcome Server::InitSDK() { return InitSDK(Aws::GameLift::Server::Model::ServerParameters()); } - -GenericOutcome Server::InitSDK(const Aws::GameLift::Server::Model::ServerParameters &serverParameters) { - Internal::LoggerHelper::InitializeLogger(serverParameters.GetProcessId()); - spdlog::info("Initializing server SDK"); - // Initialize the WebSocketWrapper - Internal::InitSDKOutcome initOutcome = - Internal::InitSDKOutcome(Internal::GameLiftServerState::CreateInstance()); - if (initOutcome.IsSuccess()) { - spdlog::info("Created Instance"); - GenericOutcome networkingOutcome = initOutcome.GetResult()->InitializeNetworking(serverParameters); - if (!networkingOutcome.IsSuccess()) { - spdlog::error("Networking outcome failure when init SDK"); - return GenericOutcome(networkingOutcome.GetError()); - } - spdlog::info("Networking outcome success. Init SDK success"); - - // Set global processor if available - Aws::GameLift::Metrics::IMetricsProcessor* globalProcessor = GameLiftMetricsGlobalProcessor(); - if (globalProcessor != nullptr) { - initOutcome.GetResult()->SetGlobalProcessor(globalProcessor); - } - } - return GenericOutcome(nullptr); -} - -GenericOutcome Server::ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - return serverState->ProcessReady(processParameters); -} - -GenericOutcome Server::ProcessEnding() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - return serverState->ProcessEnding(); -} - -GenericOutcome Server::ActivateGameSession() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - return serverState->ActivateGameSession(); -} - -StartMatchBackfillOutcome Server::StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &request) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return StartMatchBackfillOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - return serverState->StartMatchBackfill(request); -} - -GenericOutcome Server::StopMatchBackfill(const Aws::GameLift::Server::Model::StopMatchBackfillRequest &request) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - return serverState->StopMatchBackfill(request); -} - -GenericOutcome Server::UpdatePlayerSessionCreationPolicy(Aws::GameLift::Server::Model::PlayerSessionCreationPolicy newPlayerSessionPolicy) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - return serverState->UpdatePlayerSessionCreationPolicy(newPlayerSessionPolicy); -} - -Aws::GameLift::AwsStringOutcome Server::GetGameSessionId() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return AwsStringOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - if (!serverState->IsProcessReady()) { - return AwsStringOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - return AwsStringOutcome(serverState->GetGameSessionId()); -} - -Aws::GameLift::AwsLongOutcome Server::GetTerminationTime() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return AwsLongOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - return AwsLongOutcome(serverState->GetTerminationTime()); -} - -GenericOutcome Server::AcceptPlayerSession(const char *playerSessionId) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - if (!serverState->IsProcessReady()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - return serverState->AcceptPlayerSession(playerSessionId); -} - -GenericOutcome Server::RemovePlayerSession(const char *playerSessionId) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GenericOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - if (!serverState->IsProcessReady()) { - return GenericOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - return serverState->RemovePlayerSession(playerSessionId); -} -#endif - -DescribePlayerSessionsOutcome Server::DescribePlayerSessions(const Aws::GameLift::Server::Model::DescribePlayerSessionsRequest &describePlayerSessionsRequest) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return DescribePlayerSessionsOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - - if (!serverState->IsProcessReady()) { - return DescribePlayerSessionsOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY)); - } - - return serverState->DescribePlayerSessions(describePlayerSessionsRequest); -} - -GenericOutcome Server::Destroy() { - Aws::GameLift::Metrics::MetricsTerminate(); - spdlog::info("Metrics terminated"); - return Internal::GameLiftCommonState::DestroyInstance(); -} - -GetComputeCertificateOutcome Server::GetComputeCertificate() { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GetComputeCertificateOutcome(giOutcome.GetError()); - } - - Internal::GameLiftServerState *serverState = static_cast(giOutcome.GetResult()); - if (serverState != NULL) { - return serverState->GetComputeCertificate(); - } - - return GetComputeCertificateOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::NOT_INITIALIZED)); -} - -GetFleetRoleCredentialsOutcome Server::GetFleetRoleCredentials(const Aws::GameLift::Server::Model::GetFleetRoleCredentialsRequest &request) { - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - - if (!giOutcome.IsSuccess()) { - return GetFleetRoleCredentialsOutcome(giOutcome.GetError()); - } - - auto *serverState = dynamic_cast(giOutcome.GetResult()); - if (serverState != nullptr) { - return serverState->GetFleetRoleCredentials(request); - } - - return GetFleetRoleCredentialsOutcome(GameLiftError(GAMELIFT_ERROR_TYPE::NOT_INITIALIZED)); -} - -GenericOutcome Server::InitMetrics() { - return InitMetrics(Aws::GameLift::Metrics::CreateMetricsParametersFromEnvironmentOrDefault()); -} - -GenericOutcome Server::InitMetrics(const Aws::GameLift::Server::MetricsParameters &metricsParameters) { - // Validate parameters - GenericOutcome validationOutcome = Aws::GameLift::Metrics::ValidateMetricsParameters(metricsParameters); - if (!validationOutcome.IsSuccess()) { - return validationOutcome; - } - - // Map MetricsParameters to MetricsSettings - Aws::GameLift::Metrics::MetricsSettings settings = Aws::GameLift::Metrics::FromMetricsParameters(metricsParameters); - Aws::GameLift::Metrics::MetricsInitialize(settings); - - // Now that metrics are initialized, set the global processor in the server state - Internal::GetInstanceOutcome giOutcome = Internal::GameLiftCommonState::GetInstance(Internal::GAMELIFT_INTERNAL_STATE_TYPE::SERVER); - if (giOutcome.IsSuccess()) { - auto *serverState = dynamic_cast(giOutcome.GetResult()); - if (serverState != nullptr) { - Aws::GameLift::Metrics::IMetricsProcessor* globalProcessor = GameLiftMetricsGlobalProcessor(); - if (globalProcessor != nullptr) { - serverState->SetGlobalProcessor(globalProcessor); - } - // Check if there's an active game session -#ifdef GAMELIFT_USE_STD - std::string gameSessionId = serverState->GetGameSessionId(); - if (!gameSessionId.empty()) { - Aws::GameLift::Server::Model::GameSession gameSession; - gameSession.SetGameSessionId(gameSessionId); - Aws::GameLift::Metrics::OnGameSessionStarted(gameSession); - } -#else - const char* gameSessionId = serverState->GetGameSessionId(); - if (gameSessionId != nullptr && gameSessionId[0] != '\0') { - Aws::GameLift::Server::Model::GameSession gameSession; - gameSession.SetGameSessionId(gameSessionId); - Aws::GameLift::Metrics::OnGameSessionStarted(gameSession); - } -#endif - } - } - - return GenericOutcome(nullptr); -} diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/server/LogParameters.cpp b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/server/LogParameters.cpp deleted file mode 100644 index e684441e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Private/aws/gamelift/server/LogParameters.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#include - -#ifndef GAMELIFT_USE_STD -#include "string.h" -#endif - -#ifndef GAMELIFT_USE_STD -Aws::GameLift::Server::LogParameters::LogParameters(const char *const *logPaths, int count) { - m_count = (count < MAX_LOG_PATHS) ? count : MAX_LOG_PATHS; - for (int i = 0; i < m_count; ++i) { - -#ifdef WIN32 - strcpy_s(m_logPaths[i], MAX_PATH_LENGTH, logPaths[i]); -#else - strncpy(m_logPaths[i], logPaths[i], MAX_PATH_LENGTH); -#endif - } -} - -Aws::GameLift::Server::LogParameters::LogParameters(const LogParameters &o) { - int count = o.getLogPathCount(); - m_count = (count < MAX_LOG_PATHS) ? count : MAX_LOG_PATHS; - for (int i = 0; i < m_count; ++i) { -#ifdef WIN32 - strcpy_s(m_logPaths[i], MAX_PATH_LENGTH, o.getLogPath(i)); -#else - strncpy(m_logPaths[i], o.getLogPath(i), MAX_PATH_LENGTH); -#endif - } -} -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/GameLiftServerSDK.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/GameLiftServerSDK.h deleted file mode 100644 index c64de84a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/GameLiftServerSDK.h +++ /dev/null @@ -1,158 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ -#pragma once - - -#include "Modules/ModuleManager.h" -#include "Delegates/DelegateCombinations.h" - -#if PLATFORM_WINDOWS -#include "Windows/AllowWindowsPlatformTypes.h" -#endif - -#include "aws/gamelift/common/Outcome.h" -#include "aws/gamelift/server/GameLiftServerAPI.h" -#include "GameLiftServerSDKModels.h" -#include - -#if PLATFORM_WINDOWS -#include "Windows/HideWindowsPlatformTypes.h" -#endif - -DECLARE_DELEGATE_OneParam(FOnStartGameSession, Aws::GameLift::Server::Model::GameSession); -DECLARE_DELEGATE_OneParam(FOnUpdateGameSession, Aws::GameLift::Server::Model::UpdateGameSession); -DECLARE_DELEGATE_RetVal(bool, FOnHealthCheck); - -struct GAMELIFTSERVERSDK_API FProcessParameters { - FOnStartGameSession OnStartGameSession; - FOnUpdateGameSession OnUpdateGameSession; - FOnHealthCheck OnHealthCheck; - FSimpleDelegate OnTerminate; - int port = -1; - TArray logParameters; - - void OnTerminateFunction() { - this->OnTerminate.ExecuteIfBound(); - } - - bool OnHealthCheckFunction() { - if (this->OnHealthCheck.IsBound()){ - return this->OnHealthCheck.Execute(); - } - return false; - } - - void OnActivateFunction(Aws::GameLift::Server::Model::GameSession gameSession) { - this->OnStartGameSession.ExecuteIfBound(gameSession); - } - - void OnUpdateFunction(Aws::GameLift::Server::Model::UpdateGameSession updateGameSession) { - this->OnUpdateGameSession.ExecuteIfBound(updateGameSession); - } -}; - -enum class FAttributeType : uint8 -{ - NONE, - STRING, - DOUBLE, - STRING_LIST, - STRING_DOUBLE_MAP -}; - -struct GAMELIFTSERVERSDK_API FAttributeValue { - FString m_S; - double m_N; - TArray m_SL; - TMap m_SDM; - FAttributeType m_type; -}; - -struct GAMELIFTSERVERSDK_API FPlayer { - FString m_playerId; - FString m_team; - TMap m_playerAttributes; - TMap m_latencyInMs; -}; - -struct GAMELIFTSERVERSDK_API FStartMatchBackfillRequest { - FString m_ticketId; - FString m_gameSessionArn; - FString m_matchmakingConfigurationArn; - TArray m_players; - - FStartMatchBackfillRequest(const FString& ticketId, const FString& gameSessionArn, const FString& matchmakingConfigurationArn, const TArray& players) : - m_ticketId(ticketId), - m_gameSessionArn(gameSessionArn), - m_matchmakingConfigurationArn(matchmakingConfigurationArn), - m_players(players) - { - } -}; - -struct GAMELIFTSERVERSDK_API FStopMatchBackfillRequest { - FString m_ticketId; - FString m_gameSessionArn; - FString m_matchmakingConfigurationArn; - - FStopMatchBackfillRequest(const FString& ticketId, const FString& gameSessionArn, const FString& matchmakingConfigurationArn) : - m_ticketId(ticketId), - m_gameSessionArn(gameSessionArn), - m_matchmakingConfigurationArn(matchmakingConfigurationArn) - { - } -}; - - -class GAMELIFTSERVERSDK_API FGameLiftServerSDKModule : public IModuleInterface -{ -public: - - /** IModuleInterface implementation */ - virtual void StartupModule() override; - virtual void ShutdownModule() override; - - virtual FGameLiftStringOutcome GetSdkVersion(); - - // Needs the standalone server to be running locally. If not, this will block at load time. - virtual FGameLiftGenericOutcome InitSDK(); - virtual FGameLiftGenericOutcome InitSDK(const FServerParameters &serverParameters); - - virtual FGameLiftGenericOutcome InitMetrics(); - virtual FGameLiftGenericOutcome InitMetrics(const FMetricsParameters &metricsParameters); - - //virtual TGameLiftGenericOutcome ProcessReady(Aws::GameLift::Server::ProcessParameters &processParameters); - virtual FGameLiftGenericOutcome ProcessReady(FProcessParameters &processParameters); - - virtual FGameLiftGenericOutcome ProcessEnding(); - virtual FGameLiftGenericOutcome ActivateGameSession(); - virtual FGameLiftGenericOutcome AcceptPlayerSession(const FString& playerSessionId); - virtual FGameLiftGenericOutcome RemovePlayerSession(const FString& playerSessionId); - virtual FGameLiftGenericOutcome Destroy(); - virtual FGameLiftDescribePlayerSessionsOutcome DescribePlayerSessions(const FGameLiftDescribePlayerSessionsRequest& describePlayerSessionsRequest); - - virtual FGameLiftGenericOutcome UpdatePlayerSessionCreationPolicy(EPlayerSessionCreationPolicy policy); - virtual FGameLiftStringOutcome GetGameSessionId(); - virtual FGameLiftLongOutcome GetTerminationTime(); - - virtual FGameLiftStringOutcome StartMatchBackfill(const FStartMatchBackfillRequest& request); - virtual FGameLiftGenericOutcome StopMatchBackfill(const FStopMatchBackfillRequest& request); - - virtual FGameLiftGetComputeCertificateOutcome GetComputeCertificate(); - virtual FGameLiftGetFleetRoleCredentialsOutcome GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest& request); - -private: - /** Handle to the dll we will load */ - static void* GameLiftServerSDKLibraryHandle; - static bool LoadDependency(const FString& Dir, const FString& Name, void*& Handle); - static void FreeDependency(void*& Handle); -}; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/GameLiftServerSDKModels.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/GameLiftServerSDKModels.h deleted file mode 100644 index a60cfeb1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/GameLiftServerSDKModels.h +++ /dev/null @@ -1,280 +0,0 @@ -/* -* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or -* its licensors. -* -* For complete copyright and license terms please see the LICENSE at the root of this -* distribution (the "License"). All use of this software is governed by the License, -* or, if provided, by the license below or the license accompanying this file. Do not -* remove or modify any license notices. This file is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* -*/ -#pragma once - -enum class GAMELIFTSERVERSDK_API EPlayerSessionCreationPolicy -{ - NOT_SET, - ACCEPT_ALL, - DENY_ALL -}; - -inline GAMELIFTSERVERSDK_API EPlayerSessionCreationPolicy GetPlayerSessionCreationPolicyForName(FString& name) -{ - if (name == "ACCEPT_ALL") { - return EPlayerSessionCreationPolicy::ACCEPT_ALL; - } - if (name == "DENY_ALL") { - return EPlayerSessionCreationPolicy::DENY_ALL; - } - return EPlayerSessionCreationPolicy::NOT_SET; -} - -inline GAMELIFTSERVERSDK_API FString GetNameForPlayerSessionCreationPolicy(EPlayerSessionCreationPolicy value) -{ - switch (value) { - case EPlayerSessionCreationPolicy::ACCEPT_ALL: - return FString("ACCEPT_ALL"); - case EPlayerSessionCreationPolicy::DENY_ALL: - return FString("DENY_ALL"); - default: - return FString("NOT_SET"); - } -} - -enum class GAMELIFTSERVERSDK_API EPlayerSessionStatus -{ - NOT_SET, - RESERVED, - ACTIVE, - COMPLETED, - TIMEDOUT -}; - -inline GAMELIFTSERVERSDK_API EPlayerSessionStatus GetPlayerSessionStatusForName(FString& name) -{ - if (name == "RESERVED") { - return EPlayerSessionStatus::RESERVED; - } - if (name == "ACTIVE") { - return EPlayerSessionStatus::ACTIVE; - } - if (name == "COMPLETED") { - return EPlayerSessionStatus::COMPLETED; - } - if (name == "TIMEDOUT") { - return EPlayerSessionStatus::TIMEDOUT; - } - return EPlayerSessionStatus::NOT_SET; -} - -inline GAMELIFTSERVERSDK_API FString GetNameForPlayerSessionStatus(EPlayerSessionStatus value) -{ - switch (value) { - case EPlayerSessionStatus::RESERVED: - return FString("RESERVED"); - case EPlayerSessionStatus::ACTIVE: - return FString("ACTIVE"); - case EPlayerSessionStatus::COMPLETED: - return FString("COMPLETED"); - case EPlayerSessionStatus::TIMEDOUT: - return FString("TIMEDOUT"); - default: - return FString("NOT_SET"); - } -} - -struct GAMELIFTSERVERSDK_API FServerParameters -{ - FString m_webSocketUrl; - FString m_fleetId; - FString m_processId; - FString m_hostId; - FString m_authToken; - FString m_awsRegion; - FString m_accessKey; - FString m_secretKey; - FString m_sessionToken; -}; - -struct GAMELIFTSERVERSDK_API FMetricsParameters -{ - FString m_statsDHost; - int32 m_statsDPort = 0; - FString m_crashReporterHost; - int32 m_crashReporterPort = 0; - int32 m_flushIntervalMs = 0; - int32 m_maxPacketSize = 0; -}; - -struct GAMELIFTSERVERSDK_API FGameLiftPlayerSession -{ - FString m_playerSessionId; - FString m_playerId; - FString m_gameSessionId; - FString m_fleetId; - long m_creationTime = 0; - long m_terminationTime = 0; - EPlayerSessionStatus m_status = EPlayerSessionStatus::NOT_SET; - FString m_ipAddress; - int m_port = 0; - FString m_playerData; - FString m_dnsName; -}; - -struct GAMELIFTSERVERSDK_API FGameLiftDescribePlayerSessionsResult -{ - TArray m_playerSessions; - FString m_nextToken; -}; - -struct GAMELIFTSERVERSDK_API FGameLiftDescribePlayerSessionsRequest -{ - FString m_gameSessionId; - FString m_playerId; - FString m_playerSessionId; - FString m_playerSessionStatusFilter; - int m_limit = 0; - FString m_nextToken; -}; - -struct GAMELIFTSERVERSDK_API FGameLiftGetComputeCertificateResult -{ - FString m_certificate_path; - FString m_computeName; -}; - -struct GAMELIFTSERVERSDK_API FGameLiftGetFleetRoleCredentialsResult -{ - FString m_assumedUserRoleArn; - FString m_assumedRoleId; - FString m_accessKeyId; - FString m_secretAccessKey; - FString m_sessionToken; - FDateTime m_expiration; -}; - -struct GAMELIFTSERVERSDK_API FGameLiftGetFleetRoleCredentialsRequest -{ - FString m_roleArn; - FString m_roleSessionName; -}; - -struct GAMELIFTSERVERSDK_API FGameLiftError { - Aws::GameLift::GAMELIFT_ERROR_TYPE m_errorType; - FString m_errorName; - FString m_errorMessage; - - FGameLiftError(){} - FGameLiftError(Aws::GameLift::GAMELIFT_ERROR_TYPE type, FString name, FString message) : - m_errorType(type), - m_errorName(name), - m_errorMessage(message) - {} - - FGameLiftError(Aws::GameLift::GameLiftError error) - { - m_errorMessage = FString(error.GetErrorMessage()); - m_errorName = FString(error.GetErrorName()); - m_errorType = error.GetErrorType(); - } -}; - -template -class GAMELIFTSERVERSDK_API TGameLiftOutcome -{ -public: - - TGameLiftOutcome() : success(false) - { - } // Default constructor - TGameLiftOutcome(const R& r) : result(r), success(true) - { - } // Result copy constructor - TGameLiftOutcome(const E& e) : error(e), success(false) - { - } // Error copy constructor - TGameLiftOutcome(R&& r) : result(std::forward(r)), success(true) - { - } // Result move constructor - TGameLiftOutcome(E&& e) : error(std::forward(e)), success(false) - { - } // Error move constructor - TGameLiftOutcome(const TGameLiftOutcome& o) : - result(o.result), - error(o.error), - success(o.success) - { - } - - TGameLiftOutcome& operator=(const TGameLiftOutcome& o) - { - if (this != &o) - { - result = o.result; - error = o.error; - success = o.success; - } - - return *this; - } - - TGameLiftOutcome(TGameLiftOutcome&& o) : // Required to force Move Constructor - result(std::move(o.result)), - error(std::move(o.error)), - success(o.success) - { - } - - TGameLiftOutcome& operator=(TGameLiftOutcome&& o) - { - if (this != &o) - { - result = std::move(o.result); - error = std::move(o.error); - success = o.success; - } - - return *this; - } - - inline const R& GetResult() const - { - return result; - } - - inline R& GetResult() - { - return result; - } - - /** - * casts the underlying result to an r-value so that caller can't take ownership of underlying resources. - * this is necessary when streams are involved. - */ - inline R&& GetResultWithOwnership() - { - return std::move(result); - } - - inline const E& GetError() const - { - return error; - } - - inline bool IsSuccess() const - { - return this->success; - } - -private: - R result; - E error; - bool success; -}; - -typedef TGameLiftOutcome FGameLiftGenericOutcome; -typedef TGameLiftOutcome FGameLiftStringOutcome; -typedef TGameLiftOutcome FGameLiftLongOutcome; -typedef TGameLiftOutcome FGameLiftDescribePlayerSessionsOutcome; -typedef TGameLiftOutcome FGameLiftGetComputeCertificateOutcome; -typedef TGameLiftOutcome FGameLiftGetFleetRoleCredentialsOutcome; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLiftErrors.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLiftErrors.h deleted file mode 100644 index 39c613b1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLiftErrors.h +++ /dev/null @@ -1,363 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include -#ifndef GAMELIFT_USE_STD -#include "string.h" -#endif - -namespace Aws { -namespace GameLift { -enum class AWS_GAMELIFT_API GAMELIFT_ERROR_TYPE { - ALREADY_INITIALIZED, // The server or client has already been initialized with - // Initialize(). - FLEET_MISMATCH, // The target fleet does not match the fleet of a gameSession or playerSession. - GAMELIFT_CLIENT_NOT_INITIALIZED, // The client has not been initialized. - GAMELIFT_SERVER_NOT_INITIALIZED, // The server SDK has not been initialized. - GAME_SESSION_ENDED_FAILED, // The server SDK could not contact the service to report - // the game session ended. - GAME_SESSION_NOT_READY, // The game session was not activated. - GAME_SESSION_READY_FAILED, // The server SDK could not contact the service to report - // the game session is ready. - GAME_SESSION_ID_NOT_SET, // No game sessions are bound to this process. - INITIALIZATION_MISMATCH, // A client method was called after Server::Initialize(), or vice - // versa. - NOT_INITIALIZED, // The server or client has not been initialized with Initialize(). - NO_TARGET_ALIASID_SET, // A target aliasId has not been set. - NO_TARGET_FLEET_SET, // A target fleet has not been set. - PROCESS_ENDING_FAILED, // The server SDK could not contact the service to report the - // process is ending. - PROCESS_NOT_ACTIVE, // The server process is not yet active, not bound to a GameSession, and - // cannot accept or process PlayerSessions. - PROCESS_NOT_READY, // The server process is not yet ready to be activated. - PROCESS_READY_FAILED, // The server SDK could not contact the service to report the - // process is ready. - SDK_VERSION_DETECTION_FAILED, // SDK version detection failed. - SERVICE_CALL_FAILED, // A call to an AWS service has failed. - STX_CALL_FAILED, // A call to the XStx server backend component has failed. - STX_INITIALIZATION_FAILED, // The XStx server backend component has failed to initialize. - UNEXPECTED_PLAYER_SESSION, // An unregistered player session was encountered by the server. - BAD_REQUEST_EXCEPTION, // Generic error when client creates a bad request. - UNAUTHORIZED_EXCEPTION, // Client not authorized to access a required resource due to missing or invalid auth. - FORBIDDEN_EXCEPTION, // Client requesting to use resources/operations they aren't allow to access. - NOT_FOUND_EXCEPTION, // Request needs a backend resource that the client failed to install. - CONFLICT_EXCEPTION, // Client request error caused by stale data. - TOO_MANY_REQUESTS_EXCEPTION, // Client called request too often and is being throttled. - INTERNAL_SERVICE_EXCEPTION, // Generic error when Amazon GameLift Servers WebSocket fails to process a request. - WEBSOCKET_CONNECT_FAILURE, // Failure to connect to the Amazon GameLift Servers WebSocket - WEBSOCKET_CONNECT_FAILURE_FORBIDDEN, // Access denied, e.g. auth token has expired - WEBSOCKET_CONNECT_FAILURE_INVALID_URL, // End point URL is invalid - WEBSOCKET_CONNECT_FAILURE_TIMEOUT, // Timeout - WEBSOCKET_RETRIABLE_SEND_MESSAGE_FAILURE, // Retriable failure to send message to the Amazon GameLift Servers - // Service WebSocket - WEBSOCKET_SEND_MESSAGE_FAILURE, // Failure to send message to the Amazon GameLift Servers WebSocket - VALIDATION_EXCEPTION // Client-side error when invalid parameters are passed. -}; - -class AWS_GAMELIFT_API GameLiftError { -#ifdef GAMELIFT_USE_STD -public: - GAMELIFT_ERROR_TYPE GetErrorType() const { return m_errorType; } - - const std::string &GetErrorName() const { return m_errorName; } - void SetErrorName(const std::string &errorName) { m_errorName = errorName; } - - const std::string &GetErrorMessage() const { return m_errorMessage; } - void SetErrorMessage(const std::string &errorMessage) { m_errorMessage = errorMessage; } - - GameLiftError() : m_errorType(){}; - - ~GameLiftError(){}; - - GameLiftError(const int statusCode, const std::string &message) : GameLiftError(GetErrorTypeForStatusCode(statusCode), message){}; - - GameLiftError(GAMELIFT_ERROR_TYPE errorType) - : m_errorType(errorType), m_errorName(Aws::GameLift::GameLiftError::GetDefaultNameForErrorType(errorType)), - m_errorMessage(Aws::GameLift::GameLiftError::GetDefaultMessageForErrorType(errorType)){}; - - GameLiftError(GAMELIFT_ERROR_TYPE errorType, const std::string &errorName, const std::string &message) - : m_errorType(errorType), m_errorName(errorName), m_errorMessage(message){}; - - GameLiftError(GAMELIFT_ERROR_TYPE errorType, const std::string &message) - : m_errorType(errorType), m_errorName(Aws::GameLift::GameLiftError::GetDefaultNameForErrorType(errorType)), m_errorMessage(message){}; - - GameLiftError(const GameLiftError &rhs) : m_errorType(rhs.GetErrorType()), m_errorName(rhs.GetErrorName()), m_errorMessage(rhs.GetErrorMessage()){}; - - bool operator==(const GameLiftError other) const { - return other.GetErrorType() == GetErrorType() && other.GetErrorName() == GetErrorName() && other.GetErrorMessage() == GetErrorMessage(); - } - -private: - GAMELIFT_ERROR_TYPE m_errorType; - std::string m_errorName; - std::string m_errorMessage; -#else -public: - const GAMELIFT_ERROR_TYPE GetErrorType() const { return m_errorType; } - - const char *GetErrorName() const { return m_errorName; } - void SetErrorName(const char *errorName) { - strncpy(m_errorName, errorName, sizeof(m_errorName)); - m_errorName[sizeof(m_errorName) - 1] = 0; - } - - const char *GetErrorMessage() const { return m_errorMessage; } - void SetErrorMessage(const char *errorMessage) { - strncpy(m_errorMessage, errorMessage, sizeof(m_errorMessage)); - m_errorMessage[sizeof(m_errorMessage) - 1] = 0; - } - - GameLiftError() { - memset(m_errorName, 0, sizeof(m_errorName)); - memset(m_errorMessage, 0, sizeof(m_errorMessage)); - }; - - ~GameLiftError(){}; - - GameLiftError(const int statusCode, const char *message) : GameLiftError(GetErrorTypeForStatusCode(statusCode), message){}; - - void Init(GAMELIFT_ERROR_TYPE errorType, const char *errorName, const char *message) { - m_errorType = errorType; - SetErrorName(errorName); - SetErrorMessage(message); - }; - - GameLiftError(GAMELIFT_ERROR_TYPE errorType) { - Init(errorType, Aws::GameLift::GameLiftError::GetDefaultNameForErrorType(errorType).c_str(), - Aws::GameLift::GameLiftError::GetDefaultMessageForErrorType(errorType).c_str()); - }; - - GameLiftError(GAMELIFT_ERROR_TYPE errorType, const char *errorName, const char *message) : m_errorType(errorType) { - this->SetErrorName(errorName); - this->SetErrorMessage(message); - }; - - GameLiftError(GAMELIFT_ERROR_TYPE errorType, const char *message) { - Init(errorType, Aws::GameLift::GameLiftError::GetDefaultNameForErrorType(errorType).c_str(), message); - }; - - GameLiftError(const GameLiftError &rhs) { Init(rhs.GetErrorType(), rhs.GetErrorName(), rhs.GetErrorMessage()); }; - - bool operator==(const GameLiftError other) const { - return other.GetErrorType() == GetErrorType() && strcmp(other.GetErrorName(), GetErrorName()) == 0 && - strcmp(other.GetErrorMessage(), GetErrorMessage()) == 0; - } - -private: - GAMELIFT_ERROR_TYPE m_errorType; - char m_errorName[256]; - char m_errorMessage[1024]; -#endif - static GAMELIFT_ERROR_TYPE GetErrorTypeForStatusCode(const int statusCode) { - if (statusCode >= 400 && statusCode < 500) { - // Catch valid 4xx (client errors) status codes returned by websocket lambda - // All other 4xx codes fallback to "bad request exception" - switch(statusCode) { - case 400: - return GAMELIFT_ERROR_TYPE::BAD_REQUEST_EXCEPTION; - case 401: - return GAMELIFT_ERROR_TYPE::UNAUTHORIZED_EXCEPTION; - case 403: - return GAMELIFT_ERROR_TYPE::FORBIDDEN_EXCEPTION; - case 404: - return GAMELIFT_ERROR_TYPE::NOT_FOUND_EXCEPTION; - case 409: - return GAMELIFT_ERROR_TYPE::CONFLICT_EXCEPTION; - case 429: - return GAMELIFT_ERROR_TYPE::TOO_MANY_REQUESTS_EXCEPTION; - } - - return GAMELIFT_ERROR_TYPE::BAD_REQUEST_EXCEPTION; - } else { - // The websocket can return other error types, in this case classify it as an internal - // service exception - return GAMELIFT_ERROR_TYPE::INTERNAL_SERVICE_EXCEPTION; - } - } - - static std::string GetDefaultNameForErrorType(GAMELIFT_ERROR_TYPE errorType) { - switch (errorType) { - case GAMELIFT_ERROR_TYPE::ALREADY_INITIALIZED: - return "Already Initialized"; - case GAMELIFT_ERROR_TYPE::FLEET_MISMATCH: - return "Fleet mismatch."; - case GAMELIFT_ERROR_TYPE::GAMELIFT_CLIENT_NOT_INITIALIZED: - return "Amazon GameLift Servers client not initialized."; - case GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED: - return "Server SDK not initialized."; - case GAMELIFT_ERROR_TYPE::GAME_SESSION_ENDED_FAILED: - return "Game session failed."; - case GAMELIFT_ERROR_TYPE::GAME_SESSION_NOT_READY: - return "Game session not activated."; - case GAMELIFT_ERROR_TYPE::GAME_SESSION_READY_FAILED: - return "Game session failed."; - case GAMELIFT_ERROR_TYPE::GAME_SESSION_ID_NOT_SET: - return "GameSession id is not set."; - case GAMELIFT_ERROR_TYPE::INITIALIZATION_MISMATCH: - return "Initialization mismatch."; - case GAMELIFT_ERROR_TYPE::NOT_INITIALIZED: - return "Not Initialized"; - case GAMELIFT_ERROR_TYPE::NO_TARGET_ALIASID_SET: - return "No target aliasId set."; - case GAMELIFT_ERROR_TYPE::NO_TARGET_FLEET_SET: - return "No target fleet set."; - case GAMELIFT_ERROR_TYPE::PROCESS_ENDING_FAILED: - return "Process ending failed."; - case GAMELIFT_ERROR_TYPE::PROCESS_NOT_ACTIVE: - return "Process not activated."; - case GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY: - return "Process not ready."; - case GAMELIFT_ERROR_TYPE::PROCESS_READY_FAILED: - return "Process ready failed."; - case GAMELIFT_ERROR_TYPE::SDK_VERSION_DETECTION_FAILED: - return "Could not detect SDK version."; - case GAMELIFT_ERROR_TYPE::SERVICE_CALL_FAILED: - return "Service call failed."; - case GAMELIFT_ERROR_TYPE::STX_CALL_FAILED: - return "STX call failed."; - case GAMELIFT_ERROR_TYPE::STX_INITIALIZATION_FAILED: - return "STX Initialization Failed."; - case GAMELIFT_ERROR_TYPE::UNEXPECTED_PLAYER_SESSION: - return "Unexpected player session."; - case GAMELIFT_ERROR_TYPE::BAD_REQUEST_EXCEPTION: - return "Bad request exception."; - case GAMELIFT_ERROR_TYPE::UNAUTHORIZED_EXCEPTION: - return "Unauthorized exception."; - case GAMELIFT_ERROR_TYPE::FORBIDDEN_EXCEPTION: - return "Forbidden exception."; - case GAMELIFT_ERROR_TYPE::NOT_FOUND_EXCEPTION: - return "Not found exception."; - case GAMELIFT_ERROR_TYPE::CONFLICT_EXCEPTION: - return "Conflict exception."; - case GAMELIFT_ERROR_TYPE::TOO_MANY_REQUESTS_EXCEPTION: - return "Throttling exception."; - case GAMELIFT_ERROR_TYPE::INTERNAL_SERVICE_EXCEPTION: - return "Internal service exception."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE: - return "WebSocket Connection Failed."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_FORBIDDEN: - return "WebSocket Connection Denied."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_INVALID_URL: - return "WebSocket Connection has invalid URL."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_TIMEOUT: - return "WebSocket Connection has timed out."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_SEND_MESSAGE_FAILURE: - return "WebSocket Send Message Failed."; - case GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION: - return "Validation exception."; - default: - return "Unknown Error"; - } - } - - static std::string GetDefaultMessageForErrorType(GAMELIFT_ERROR_TYPE errorType) { - switch (errorType) { - case GAMELIFT_ERROR_TYPE::ALREADY_INITIALIZED: - return "Server SDK has already been initialized. You must call Destroy() before " - "reinitializing the client or server."; - case GAMELIFT_ERROR_TYPE::FLEET_MISMATCH: - return "The Target fleet does not match the request fleet. Make sure GameSessions and " - "PlayerSessions belong to your target fleet."; - case GAMELIFT_ERROR_TYPE::GAMELIFT_CLIENT_NOT_INITIALIZED: - return "The Amazon GameLift Servers client has not been initialized. Please call SetTargetFleet or " - "SetTArgetAliasId."; - case GAMELIFT_ERROR_TYPE::GAMELIFT_SERVER_NOT_INITIALIZED: - return "The server SDK has not been initialized. Please call InitSDK."; - case GAMELIFT_ERROR_TYPE::GAME_SESSION_ENDED_FAILED: - return "The GameSessionEnded invocation failed."; - case GAMELIFT_ERROR_TYPE::GAME_SESSION_NOT_READY: - return "The Game session associated with this server was not activated."; - case GAMELIFT_ERROR_TYPE::GAME_SESSION_READY_FAILED: - return "The GameSessionReady invocation failed."; - case GAMELIFT_ERROR_TYPE::GAME_SESSION_ID_NOT_SET: - return "No game sessions are bound to this process."; - case GAMELIFT_ERROR_TYPE::INITIALIZATION_MISMATCH: - return "The current call does not match the initialization state. Client calls require " - "a call to Client::Initialize(), and Server calls require Server::Initialize(). " - "Only one may be active at a time."; - case GAMELIFT_ERROR_TYPE::NOT_INITIALIZED: - return "Server SDK has not been initialized! You must call Client::Initialize() or " - "Server::InitSDK() before making Amazon GameLift Servers calls."; - case GAMELIFT_ERROR_TYPE::NO_TARGET_ALIASID_SET: - return "The aliasId has not been set. Clients should call SetTargetAliasId() before " - "making calls that require an alias."; - case GAMELIFT_ERROR_TYPE::NO_TARGET_FLEET_SET: - return "The target fleet has not been set. Clients should call SetTargetFleet() before " - "making calls that require a fleet."; - case GAMELIFT_ERROR_TYPE::PROCESS_ENDING_FAILED: - return "ProcessEnding call to Amazon GameLift Servers failed."; - case GAMELIFT_ERROR_TYPE::PROCESS_NOT_ACTIVE: - return "The process has not yet been activated."; - case GAMELIFT_ERROR_TYPE::PROCESS_NOT_READY: - return "The process has not yet been activated by calling ProcessReady(). Processes in " - "standby cannot receive StartGameSession callbacks."; - case GAMELIFT_ERROR_TYPE::PROCESS_READY_FAILED: - return "ProcessReady call to Amazon GameLift Servers failed."; - case GAMELIFT_ERROR_TYPE::SDK_VERSION_DETECTION_FAILED: - return "Could not detect SDK version."; - case GAMELIFT_ERROR_TYPE::SERVICE_CALL_FAILED: - return "An AWS service call has failed. See the root cause error for more information."; - case GAMELIFT_ERROR_TYPE::STX_CALL_FAILED: - return "An internal call to the STX server backend component has failed."; - case GAMELIFT_ERROR_TYPE::STX_INITIALIZATION_FAILED: - return "The STX server backend component has failed to initialize."; - case GAMELIFT_ERROR_TYPE::UNEXPECTED_PLAYER_SESSION: - return "The player session was not expected by the server. Clients wishing to connect " - "to a server must obtain a PlayerSessionID from Amazon GameLift Servers by creating a player " - "session on the desired server's game instance."; - case GAMELIFT_ERROR_TYPE::BAD_REQUEST_EXCEPTION: - return "Bad request exception."; - case GAMELIFT_ERROR_TYPE::UNAUTHORIZED_EXCEPTION: - return "User provided invalid or missing authorization to access a resource/operation."; - case GAMELIFT_ERROR_TYPE::FORBIDDEN_EXCEPTION: - return "User is attempting to access resources/operations that they are not allowed to access."; - case GAMELIFT_ERROR_TYPE::NOT_FOUND_EXCEPTION: - return "A necessary resource was missing when attempting to process the request."; - case GAMELIFT_ERROR_TYPE::CONFLICT_EXCEPTION: - return "Request conflicts with the current state of the target resource."; - case GAMELIFT_ERROR_TYPE::TOO_MANY_REQUESTS_EXCEPTION: - return "Too many requests; please increase throttle limit if needed."; - case GAMELIFT_ERROR_TYPE::INTERNAL_SERVICE_EXCEPTION: - return "Internal service exception."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE: - return "Connection to the Amazon GameLift Servers WebSocket has failed"; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_FORBIDDEN: - return "Handshake with Amazon GameLift Servers WebSocket failed. Please verify that values of ServerParameters " - "in InitSDK() are correct. For example, process ID needs to be unique between executions, and " - "the authentication token needs to be correct and unexpired."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_INVALID_URL: - return "Connection to Amazon GameLift Servers WebSocket failed due to invalid websocket URL. Please verify that " - "websocketUrl in InitSDK() is correct and matches the GameLiftServiceSdkEndpoint output from " - "AWS::GameLift::RegisterCompute()."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_CONNECT_FAILURE_TIMEOUT: - return "Connection to the Amazon GameLift Servers WebSocket Connection has timed out."; - case GAMELIFT_ERROR_TYPE::WEBSOCKET_SEND_MESSAGE_FAILURE: - return "Sending Message to the Amazon GameLift Servers WebSocket has failed."; - case GAMELIFT_ERROR_TYPE::VALIDATION_EXCEPTION: - return "The input is invalid."; - default: - return "An unexpected error has occurred."; - } - } -}; -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLiftToolDetector.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLiftToolDetector.h deleted file mode 100644 index 3a953b59..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLiftToolDetector.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Common { - -class GameLiftToolDetector { -public: - virtual ~GameLiftToolDetector() = default; - virtual bool IsToolRunning() = 0; - virtual std::string GetToolName() = 0; - virtual std::string GetToolVersion() = 0; - void SetGameLiftTool(); -}; - -} // namespace Common -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLift_EXPORTS.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLift_EXPORTS.h deleted file mode 100644 index 3b3b8359..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/GameLift_EXPORTS.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4101) -#elif defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdelete-non-abstract-non-virtual-dtor" -#endif -#include -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif -#include - -#ifdef _WIN32 -// disable windows complaining about max template size. -#pragma warning(disable : 4503) -#endif - -#if defined(_MSC_VER) -#pragma warning(disable : 4251) -#ifdef USE_IMPORT_EXPORT -#ifdef AWS_GAMELIFT_EXPORTS -#define AWS_GAMELIFT_API __declspec(dllexport) -#else -#define AWS_GAMELIFT_API __declspec(dllimport) -#endif /* AWS_GAMELIFT_EXPORTS */ -#else -#define AWS_GAMELIFT_API -#endif // -#else /* defined (_WIN32) */ -#define AWS_GAMELIFT_API -#endif diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/MetricsDetector.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/MetricsDetector.h deleted file mode 100644 index d7389e5c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/MetricsDetector.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Common { - -class MetricsDetector : public GameLiftToolDetector { -public: - bool IsToolRunning() override; - std::string GetToolName() override; - std::string GetToolVersion() override; - -private: - static constexpr const char* TOOL_NAME = "Metrics"; - static constexpr const char* TOOL_VERSION = "1.0.0"; - static constexpr const char* WINDOWS_SERVICE_COMMAND = "sc"; - static constexpr const char* WINDOWS_SERVICE_NAME = "GLOTelCollector"; - static constexpr const char* WINDOWS_SERVICE_ARGS = "query "; - static constexpr const char* WINDOWS_RUNNING_STATUS = "RUNNING"; - static constexpr const char* LINUX_SERVICE_COMMAND = "systemctl"; - static constexpr const char* LINUX_SERVICE_NAME = "gl-otel-collector.service"; - static constexpr const char* LINUX_SERVICE_ARGS = "is-active "; - static constexpr const char* LINUX_ACTIVE_STATUS = "active"; - - bool CheckService(const std::string& command, const std::string& arguments, std::function outputValidator); -}; - -} // namespace Common -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/Outcome.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/Outcome.h deleted file mode 100644 index a9522aa4..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/common/Outcome.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -/** - * Template class representing the outcome of making a request. It will contain - * either a successful result or the failure error. The caller must check - * whether the outcome of the request was a success before attempting to access - * the result or the error. - */ -template // Result, Error -class Outcome { -#ifdef GAMELIFT_USE_STD -public: - Outcome() : success(false) {} // Default constructor - Outcome(const R &r) : result(r), success(true) {} // Result copy constructor - Outcome(const E &e) : error(e), success(false) {} // Error copy constructor - Outcome(R &&r) : result(std::forward(r)), success(true) {} // Result move constructor - Outcome(E &&e) : error(std::forward(e)), success(false) {} // Error move constructor - Outcome(const Outcome &o) : result(o.result), error(o.error), success(o.success) {} - - Outcome &operator=(const Outcome &o) { - if (this != &o) { - result = o.result; - error = o.error; - success = o.success; - } - - return *this; - } - - Outcome(Outcome &&o) - : // Required to force Move Constructor - result(std::move(o.result)), error(std::move(o.error)), success(o.success) {} - - Outcome &operator=(Outcome &&o) { - if (this != &o) { - result = std::move(o.result); - error = std::move(o.error); - success = o.success; - } - - return *this; - } - - inline const R &GetResult() const { return result; } - - inline R &GetResult() { return result; } - - /** - * casts the underlying result to an r-value so that caller can't take ownership of underlying - * resources. this is necessary when streams are involved. - */ - inline R &&GetResultWithOwnership() { return std::move(result); } - - inline const E &GetError() const { return error; } - - inline bool IsSuccess() const { return this->success; } - -private: - R result; - E error; - bool success; -}; - -typedef Outcome GenericOutcome; -typedef std::future GenericOutcomeCallable; -typedef Outcome AwsStringOutcome; -typedef Outcome AwsLongOutcome; -#else -public: - Outcome() : success(false) {} // Default constructor - Outcome(const R &r) : result(r), success(true) {} // Result copy constructor - Outcome(const E &e) : error(e), success(false) {} // Error copy constructor - - Outcome(const Outcome &o) : result(o.result), error(o.error), success(o.success) {} - - Outcome &operator=(const Outcome &o) { - if (this != &o) { - result = o.result; - error = o.error; - success = o.success; - } - - return *this; - } - - inline const R &GetResult() const { return result; } - - inline R &GetResult() { return result; } - - inline const E &GetError() const { return error; } - - inline bool IsSuccess() const { return this->success; } - -private: - R result; - E error; - bool success; -}; - -typedef Outcome GenericOutcome; -typedef Outcome AwsStringOutcome; -typedef Outcome AwsLongOutcome; -#endif - -typedef Outcome DescribePlayerSessionsOutcome; -typedef Outcome StartMatchBackfillOutcome; -typedef Outcome GetComputeCertificateOutcome; -typedef Outcome GetFleetRoleCredentialsOutcome; -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/GameLiftCommonState.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/GameLiftCommonState.h deleted file mode 100644 index 1526965a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/GameLiftCommonState.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -enum class GAMELIFT_INTERNAL_STATE_TYPE { CLIENT, SERVER }; - -class GameLiftCommonState; - -typedef Aws::GameLift::Outcome GetInstanceOutcome; - -class GameLiftCommonState { -public: - static GetInstanceOutcome GetInstance(); - - static GetInstanceOutcome GetInstance(GAMELIFT_INTERNAL_STATE_TYPE stateType); - - static GenericOutcome SetInstance(GameLiftCommonState *instance); - - static GenericOutcome DestroyInstance(); - - virtual GAMELIFT_INTERNAL_STATE_TYPE GetStateType() = 0; - - // Normally this should not be public, but AwsMemory needs access to it - virtual ~GameLiftCommonState(); - -protected: - GameLiftCommonState(); - -private: - static GameLiftCommonState *m_instance; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/GameLiftServerState.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/GameLiftServerState.h deleted file mode 100644 index d28d1a3a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/GameLiftServerState.h +++ /dev/null @@ -1,261 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -using namespace Aws::GameLift::Server::Model; - -#ifndef GAMELIFT_USE_STD -typedef Outcome InitSDKOutcome; -#endif - -class GameLiftServerState : public GameLiftCommonState, public IGameLiftMessageHandler { -public: - static constexpr const char *LANGUAGE = "Cpp"; - -private: - static constexpr const char *ENV_VAR_WEBSOCKET_URL = "GAMELIFT_SDK_WEBSOCKET_URL"; - static constexpr const char *ENV_VAR_COMPUTE_TYPE = "GAMELIFT_COMPUTE_TYPE"; - static constexpr const char *ENV_VAR_AUTH_TOKEN = "GAMELIFT_SDK_AUTH_TOKEN"; - static constexpr const char *ENV_VAR_PROCESS_ID = "GAMELIFT_SDK_PROCESS_ID"; - static constexpr const char *ENV_VAR_HOST_ID = "GAMELIFT_SDK_HOST_ID"; - static constexpr const char *ENV_VAR_FLEET_ID = "GAMELIFT_SDK_FLEET_ID"; - static constexpr const char *ENV_VAR_AWS_REGION = "GAMELIFT_REGION"; - static constexpr const char *ENV_VAR_ACCESS_KEY = "GAMELIFT_ACCESS_KEY"; - static constexpr const char *ENV_VAR_SECRET_KEY = "GAMELIFT_SECRET_KEY"; - static constexpr const char *ENV_VAR_SESSION_TOKEN = "GAMELIFT_SESSION_TOKEN"; - static constexpr const char *ENV_VAR_SDK_TOOL_NAME = "GAMELIFT_SDK_TOOL_NAME"; - static constexpr const char *ENV_VAR_SDK_TOOL_VERSION = "GAMELIFT_SDK_TOOL_VERSION"; - static constexpr const char *COMPUTE_TYPE_CONTAINER = "CONTAINER"; - static constexpr const char *AGENTLESS_CONTAINER_PROCESS_ID = "ManagedResource"; - - static constexpr const int HEALTHCHECK_INTERVAL_MILLIS = 60 * 1000; - static constexpr const int HEALTHCHECK_MAX_JITTER_MILLIS = 10 * 1000; - static constexpr const int HEALTHCHECK_TIMEOUT_MILLIS = HEALTHCHECK_INTERVAL_MILLIS - HEALTHCHECK_MAX_JITTER_MILLIS; - - void GetOverrideParams(char **webSocketUrl, - char **authToken, - char **processId, - char **hostId, - char **fleetId, - char **computeType, - char **awsRegion, - char **accessKey, - char **secretKey, - char **sessionToken); - Outcome, std::string> GetSigV4QueryParameters(char *awsRegion, - char *accessKey, - char *secretKey, - char *sessionToken); - void ReportHealth(); - void HealthCheck(); - int GetNextHealthCheckIntervalMillis(); - -#ifdef GAMELIFT_USE_STD -public: - static Server::InitSDKOutcome CreateInstance(std::shared_ptr webSocketClientWrapper); - - virtual GAMELIFT_INTERNAL_STATE_TYPE GetStateType() override { return GAMELIFT_INTERNAL_STATE_TYPE::SERVER; }; - - // Singleton constructors should be private, but we are using a custom allocator that needs to - // be able to see them. Don't use these. - GameLiftServerState(); - - ~GameLiftServerState(); - - GenericOutcome ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters); - - GenericOutcome ProcessEnding(); - - GenericOutcome InitializeNetworking(const Aws::GameLift::Server::Model::ServerParameters &serverParameters); - - GenericOutcome SendSocketMessageWithRetries(Message &message); - - GenericOutcome ActivateGameSession(); - - GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy newPlayerSessionPolicy); - - std::string GetGameSessionId() const; - - long GetTerminationTime() const; - - GenericOutcome AcceptPlayerSession(const std::string &playerSessionId); - - GenericOutcome RemovePlayerSession(const std::string &playerSessionId); - - DescribePlayerSessionsOutcome DescribePlayerSessions(const Aws::GameLift::Server::Model::DescribePlayerSessionsRequest &describePlayerSessionsRequest); - - StartMatchBackfillOutcome StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &startMatchBackfillRequest); - - GenericOutcome StopMatchBackfill(const Aws::GameLift::Server::Model::StopMatchBackfillRequest &stopMatchBackfillRequest); - - GetComputeCertificateOutcome GetComputeCertificate(); - - bool IsProcessReady() const { return m_processReady; } - - // From Network::AuxProxyMessageHandler - void OnStartGameSession(GameSession &gameSession) override; - void OnUpdateGameSession(UpdateGameSession &gameSession) override; - void OnTerminateProcess(long terminationTime) override; - void OnRefreshConnection(const std::string &refreshConnectionEndpoint, const std::string &authToken) override; - -private: - std::function m_onStartGameSession; - std::function m_onUpdateGameSession; - std::function m_onProcessTerminate; - std::function m_onHealthCheck; -#else -public: - template static Internal::InitSDKOutcome CreateInstance() { return ConstructInternal(std::make_shared()); } - template static Internal::InitSDKOutcome CreateInstance() { - return ConstructInternal(std::make_shared(std::make_shared())); - } - - std::shared_ptr GetWebSocketClientWrapper() const; - - virtual GAMELIFT_INTERNAL_STATE_TYPE GetStateType() override { return GAMELIFT_INTERNAL_STATE_TYPE::SERVER; }; - - // Singleton constructors should be private, but we are using a custom allocator that needs to - // be able to see them. Don't use these. - GameLiftServerState(); - - ~GameLiftServerState(); - - GenericOutcome ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters); - - GenericOutcome ProcessEnding(); - - GenericOutcome InitializeNetworking(const Aws::GameLift::Server::Model::ServerParameters &ServerParameters); - - GenericOutcome SendSocketMessageWithRetries(Message &message); - - GenericOutcome ActivateGameSession(); - - GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy newPlayerSessionPolicy); - - const char *GetGameSessionId(); - - long GetTerminationTime(); - - GenericOutcome AcceptPlayerSession(const std::string &playerSessionId); - - GenericOutcome RemovePlayerSession(const std::string &playerSessionId); - - DescribePlayerSessionsOutcome DescribePlayerSessions(const Aws::GameLift::Server::Model::DescribePlayerSessionsRequest &describePlayerSessionsRequest); - - StartMatchBackfillOutcome StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &request); - - GenericOutcome StopMatchBackfill(const Aws::GameLift::Server::Model::StopMatchBackfillRequest &request); - - GetComputeCertificateOutcome GetComputeCertificate(); - - bool IsProcessReady() { return m_processReady; } - - // From Network::AuxProxyMessageHandler - void OnStartGameSession(GameSession &gameSession) override; - void OnUpdateGameSession(UpdateGameSession &gameSession) override; - void OnTerminateProcess(long terminationTime) override; - void OnRefreshConnection(const std::string &refreshConnectionEndpoint, const std::string &authToken) override; - -private: - std::function m_onStartGameSession; - std::function m_onUpdateGameSession; - std::function m_onProcessTerminate; - std::function m_onHealthCheck; - - void *m_startGameSessionState; - void *m_updateGameSessionState; - void *m_processTerminateState; - void *m_healthCheckState; - - void *startGameSessionState; - void *processTerminateState; - void *healthCheckState; - static Internal::InitSDKOutcome ConstructInternal(std::shared_ptr webSocketClientWrapper); -#endif -public: - GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(const Aws::GameLift::Server::Model::GetFleetRoleCredentialsRequest &request); - - void SetGlobalProcessor(Aws::GameLift::Metrics::IMetricsProcessor* processor); - - // When within 15 minutes of expiration we retrieve new instance role credentials - static constexpr const time_t INSTANCE_ROLE_CREDENTIAL_TTL_MIN = 60 * 15; - -private: - bool AssertNetworkInitialized(); - void SetUpCallbacks(); - static void DetectGameLiftTools(); - - bool m_processReady; - - // Only one game session per process. - std::string m_gameSessionId; - - long m_terminationTime; - - GameLiftWebSocketClientManager *m_webSocketClientManager; - std::shared_ptr m_webSocketClientWrapper; - - // Callbacks - std::unique_ptr m_createGameSessionCallback; - std::unique_ptr m_describePlayerSessionsCallback; - std::unique_ptr m_getComputeCertificateCallback; - std::unique_ptr m_getFleetRoleCredentialsCallback; - std::unique_ptr m_terminateProcessCallback; - std::unique_ptr m_updateGameSessionCallback; - std::unique_ptr m_startMatchBackfillCallback; - std::unique_ptr m_refreshConnectionCallback; - - std::string m_connectionEndpoint; - std::string m_authToken; - std::string m_fleetId; - std::string m_hostId; - std::string m_processId; - // Assume we're on managed EC2, if GetFleetRoleCredentials fails we know to set this to false - bool m_onManagedEC2OrContainers = true; - std::map m_instanceRoleResultCache; - - std::unique_ptr m_healthCheckThread; - std::condition_variable m_healthCheckConditionVariable; - std::mutex m_healthCheckMutex; - bool m_healthCheckInterrupted; - - // GlobalProcessor reference for metrics - Aws::GameLift::Metrics::IMetricsProcessor* m_globalProcessor; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/ISerializable.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/ISerializable.h deleted file mode 100644 index d68e2ab4..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/ISerializable.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Interface for objects that are json serializable (i.e. the Message class). - */ -class ISerializable { -protected: - /** - * Serialize the object into Json and return the value. - */ - virtual std::string Serialize() const = 0; - - /** - * Given a JSON string deserialize the value and populate the member variables. - */ - virtual bool Deserialize(const std::string &jsonString) = 0; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/Message.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/Message.h deleted file mode 100644 index f6d85d86..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/Message.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Base Message class representing a message that is sent to and from the Amazon GameLift Servers WebSocket. All - * messages have a request ID, which represents the following: - * - For outgoing messages: A randomly generated ID - * - For incoming messages: The ID of the outgoing message which triggered the incoming - * messages/response - */ -class Message : public ISerializable { -public: - Message() : m_requestId(Message::GenerateRandomRequestId()) {} - Message(const Message &) = default; - Message(Message &&) = default; - Message &operator=(const Message &) = default; - Message &operator=(Message &&) = default; - ~Message() = default; - - inline const std::string &GetAction() const { return m_action; } - - inline const std::string &GetRequestId() const { return m_requestId; } - - inline void SetAction(const std::string &action) { m_action = action; } - - inline void SetRequestId(const std::string &requestId) { m_requestId = requestId; } - - inline Message &WithAction(const std::string &action) { - SetAction(action); - return *this; - } - - inline Message &WithRequestId(const std::string &requestId) { - SetRequestId(requestId); - return *this; - } - - /** - * Serialize the Message into Json and return the value. - */ - std::string Serialize() const override; - - /** - * Deserialize the given json string and populate the member variables. - */ - bool Deserialize(const std::string &jsonString) override; - - friend std::ostream &operator<<(std::ostream &os, const Message &message); - -protected: - /** - * Write this message's member variables to the stringBuffer using the provided writer - * Subclasses of Message should override this function in order to allow for polymorphic - * serialization. - */ - virtual bool Serialize(rapidjson::Writer *writer) const; - - /** - * Given RapidJson Value deserialize and populate this message's member variables. - * Subclasses of Message should override this function in order to allow for polymorphic - * deserialization. - */ - virtual bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *ACTION = "Action"; - static constexpr const char *REQUEST_ID = "RequestId"; - - std::string m_action; - std::string m_requestId; - - static std::string GenerateRandomRequestId(); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/ResponseMessage.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/ResponseMessage.h deleted file mode 100644 index 50b262f2..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/ResponseMessage.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class ResponseMessage : public Message { -public: - ResponseMessage() : m_statusCode(-1), m_errorMessage("") { - SetAction(""); - SetRequestId(""); - } - - ResponseMessage(const ResponseMessage &) = default; - - ResponseMessage(ResponseMessage &&) = default; - - ResponseMessage &operator=(const ResponseMessage &) = default; - - ResponseMessage &operator=(ResponseMessage &&) = default; - - ~ResponseMessage() = default; - - inline int GetStatusCode() const { return m_statusCode; } - - inline void SetStatusCode(const int statusCode) { m_statusCode = statusCode; } - - inline ResponseMessage &WithStatusCode(const long statusCode) { - SetStatusCode(statusCode); - return *this; - } - - inline std::string GetErrorMessage() const { return m_errorMessage; } - - inline void SetErrorMessage(const std::string errorMessage) { m_errorMessage = errorMessage; } - - inline ResponseMessage &WithErrorMessage(const std::string errorMessage) { - SetErrorMessage(errorMessage); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const ResponseMessage &responseMessage); - -protected: - virtual bool Serialize(rapidjson::Writer *writer) const; - - virtual bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *STATUS_CODE = "StatusCode"; - static constexpr const char *ERROR_MESSAGE = "ErrorMessage"; - - int m_statusCode; - std::string m_errorMessage; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/Uri.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/Uri.h deleted file mode 100644 index 7e29cab7..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/Uri.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Class modeling universal resource identifier. Member variables for this class can only be set via - * Builder. - */ -class Uri final { -public: - class UriBuilder { - public: - /** - * Add query parameters to the UriBuilder. - */ - UriBuilder &AddQueryParam(const std::string &key, const std::string &value); - - /** - * Add the base URL. This includes any part of the URI except the query string. - */ - UriBuilder &WithBaseUri(const std::string &baseUriString); - - /** - * Build the URI - */ - Uri Build() const; - - private: - std::string m_baseUriString; - std::map m_queryParams; - }; - - Uri() = default; - Uri(const Uri &) = default; - Uri(Uri &&) = default; - Uri &operator=(const Uri &) = default; - Uri &operator=(Uri &&) = default; - ~Uri() = default; - - /** - * Gets the full URI as a String (including query parameters) - */ - inline const std::string &GetUriString() const { return m_uriString; } - - /** - * Get the URI as a string (all except the query parameters) - */ - inline const std::string &GetBaseUriString() const { return m_baseUriString; } - - /** - * Gets the Map of query params (keys to values) - */ - inline const std::map &GetQueryMap() const { return m_queryMap; } - - inline bool operator==(const Uri &other) const { return other.GetUriString() == GetUriString(); } - - friend std::ostream &operator<<(std::ostream &os, const Uri &uri); - -private: - Uri(const std::string &baseUriString, const std::map &queryMap); - - void SetQueryString(const std::map &queryMap); - - std::string m_uriString; - std::string m_baseUriString; - std::string m_queryString; - std::map m_queryMap; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketAttributeValue.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketAttributeValue.h deleted file mode 100644 index cc8b91d8..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketAttributeValue.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -enum class WebSocketAttrType { NONE, STRING, DOUBLE, STRING_LIST, STRING_DOUBLE_MAP }; - -class WebSocketAttributeValue { -public: - WebSocketAttributeValue() : m_attrType(WebSocketAttrType::NONE){}; - WebSocketAttributeValue(const WebSocketAttributeValue &) = default; - WebSocketAttributeValue(WebSocketAttributeValue &&) = default; - WebSocketAttributeValue &operator=(const WebSocketAttributeValue &) = default; - WebSocketAttributeValue &operator=(WebSocketAttributeValue &&) = default; - ~WebSocketAttributeValue() = default; - - inline const WebSocketAttrType &GetAttributeType() const { return m_attrType; } - - inline void SetAttributeType(const WebSocketAttrType &attrType) { m_attrType = attrType; } - - inline WebSocketAttributeValue &WithAttributeType(const WebSocketAttrType &attrType) { - SetAttributeType(attrType); - return *this; - } - - inline const std::string GetAttributeTypeAsString() const { - switch (m_attrType) { - case WebSocketAttrType::STRING: - return std::string(STRING); - case WebSocketAttrType::DOUBLE: - return std::string(DOUBLE); - case WebSocketAttrType::STRING_LIST: - return std::string(STRING_LIST); - case WebSocketAttrType::STRING_DOUBLE_MAP: - return std::string(STRING_DOUBLE_MAP); - default: - return std::string(NONE); - } - } - - inline void SetAttributeType(const std::string &attrType) { - if (strcmp(attrType.c_str(), STRING) == 0) { - m_attrType = WebSocketAttrType::STRING; - } else if (strcmp(attrType.c_str(), DOUBLE) == 0) { - m_attrType = WebSocketAttrType::DOUBLE; - } else if (strcmp(attrType.c_str(), STRING_LIST) == 0) { - m_attrType = WebSocketAttrType::STRING_LIST; - } else if (strcmp(attrType.c_str(), STRING_DOUBLE_MAP) == 0) { - m_attrType = WebSocketAttrType::STRING_DOUBLE_MAP; - } else { - m_attrType = WebSocketAttrType::NONE; - } - } - - inline const std::string &GetS() const { return m_S; } - - inline void SetS(const std::string &s) { m_S = s; } - - inline WebSocketAttributeValue &WithS(const std::string &s) { - SetS(s); - return *this; - } - - inline const double &GetN() const { return m_N; } - - inline void SetN(const double &n) { m_N = n; } - - inline WebSocketAttributeValue &WithN(const double &n) { - SetN(n); - return *this; - } - - inline const std::vector &GetSL() const { return m_SL; } - - inline void SetSL(const std::vector &sl) { m_SL = sl; } - - inline WebSocketAttributeValue &WithSL(const std::vector &sl) { - SetSL(sl); - return *this; - } - - inline const std::map &GetSDM() const { return m_SDM; } - - inline void SetSDM(const std::map &sdm) { m_SDM = sdm; } - - inline WebSocketAttributeValue &WithSDM(const std::map &sdm) { - SetSDM(sdm); - return *this; - } - - std::string Serialize() const; - bool Deserialize(const std::string &jsonString); - bool Serialize(rapidjson::Writer *writer) const; - bool Deserialize(const rapidjson::Value &value); - -private: - static constexpr const char *ATTR_TYPE = "AttrType"; - static constexpr const char *S = "S"; - static constexpr const char *N = "N"; - static constexpr const char *SL = "SL"; - static constexpr const char *SDM = "SDM"; - - static constexpr const char *NONE = "NONE"; - static constexpr const char *STRING = "STRING"; - static constexpr const char *DOUBLE = "DOUBLE"; - static constexpr const char *STRING_LIST = "STRING_LIST"; - static constexpr const char *STRING_DOUBLE_MAP = "STRING_DOUBLE_MAP"; - - WebSocketAttrType m_attrType; - std::string m_S; - double m_N; - std::vector m_SL; - std::map m_SDM; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketGameSession.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketGameSession.h deleted file mode 100644 index 13e5beef..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketGameSession.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Message from Amazon GameLift Servers initializing GameSession Creation - */ -class WebSocketGameSession { -public: - WebSocketGameSession() : m_maximumPlayerSessionCount(-1), m_port(-1){}; - WebSocketGameSession(const WebSocketGameSession &) = default; - WebSocketGameSession(WebSocketGameSession &&) = default; - WebSocketGameSession &operator=(const WebSocketGameSession &) = default; - WebSocketGameSession &operator=(WebSocketGameSession &&) = default; - ~WebSocketGameSession() = default; - - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - inline const std::string &GetName() const { return m_name; } - - inline const std::string &GetFleetId() const { return m_fleetId; } - - inline const std::string &GetGameSessionData() const { return m_gameSessionData; } - - inline const std::string &GetMatchmakerData() const { return m_matchmakerData; } - - inline const std::string &GetIpAddress() const { return m_ipAddress; } - - inline const std::string &GetDnsName() const { return m_dnsName; } - - inline int GetMaximumPlayerSessionCount() const { return m_maximumPlayerSessionCount; } - - inline int GetPort() const { return m_port; } - - inline const std::map &GetGameProperties() const { return m_gameProperties; } - - inline void SetGameSessionId(const std::string &gameSessionId) { m_gameSessionId = gameSessionId; } - - inline void SetName(const std::string &name) { m_name = name; } - - inline void SetFleetId(const std::string &fleetId) { m_fleetId = fleetId; } - - inline void SetGameSessionData(const std::string &gameSessionData) { m_gameSessionData = gameSessionData; } - - inline void SetMatchmakerData(const std::string &matchmakerData) { m_matchmakerData = matchmakerData; } - - inline void SetIpAddress(const std::string &ipAddress) { m_ipAddress = ipAddress; } - - inline void SetDnsName(const std::string &dnsName) { m_dnsName = dnsName; } - - inline void SetMaximumPlayerSessionCount(const int maximumPlayerSessionCount) { m_maximumPlayerSessionCount = maximumPlayerSessionCount; } - - inline void SetPort(const int port) { m_port = port; } - - inline void SetGameProperties(const std::map &gameProperties) { m_gameProperties = gameProperties; } - - inline WebSocketGameSession &WithGameSessionId(const std::string &gameSessionId) { - SetGameSessionId(gameSessionId); - return *this; - } - - inline WebSocketGameSession &WithName(const std::string &name) { - SetName(name); - return *this; - } - - inline WebSocketGameSession &WithFleetId(const std::string &fleetId) { - SetFleetId(fleetId); - return *this; - } - - inline WebSocketGameSession &WithGameSessionData(const std::string &gameSessionData) { - SetGameSessionData(gameSessionData); - return *this; - } - - inline WebSocketGameSession &WithMatchmakerData(const std::string &matchmakerData) { - SetMatchmakerData(matchmakerData); - return *this; - } - - inline WebSocketGameSession &WithIpAddress(const std::string &ipAddress) { - SetIpAddress(ipAddress); - return *this; - } - - inline WebSocketGameSession &WithDnsName(const std::string &dnsName) { - SetDnsName(dnsName); - return *this; - } - - inline WebSocketGameSession &WithMaximumPlayerSessionCount(const int maximumPlayerSessionCount) { - SetMaximumPlayerSessionCount(maximumPlayerSessionCount); - return *this; - } - - inline WebSocketGameSession &WithPort(const int port) { - SetPort(port); - return *this; - } - - inline WebSocketGameSession &WithGameProperties(const std::map &gameProperties) { - SetGameProperties(gameProperties); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const WebSocketGameSession &createGameSessionMessage); - - std::string Serialize() const; - bool Deserialize(const std::string &jsonString); - bool Serialize(rapidjson::Writer *writer) const; - bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *GAME_SESSION_ID = "GameSessionId"; - static constexpr const char *NAME = "Name"; - static constexpr const char *FLEET_ID = "FleetId"; - static constexpr const char *MAXIMUM_PLAYER_SESSION_COUNT = "MaximumPlayerSessionCount"; - static constexpr const char *PORT = "Port"; - static constexpr const char *IP_ADDRESS = "IpAddress"; - static constexpr const char *GAME_SESSION_DATA = "GameSessionData"; - static constexpr const char *MATCHMAKER_DATA = "MatchmakerData"; - static constexpr const char *GAME_PROPERTIES = "GameProperties"; - static constexpr const char *DNS_NAME = "DnsName"; - - std::string m_gameSessionId; - std::string m_name; - std::string m_fleetId; - int m_maximumPlayerSessionCount; - int m_port; - std::string m_ipAddress; - std::string m_gameSessionData; - std::string m_matchmakerData; - std::map m_gameProperties; - std::string m_dnsName; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayer.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayer.h deleted file mode 100644 index 2f20b2af..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayer.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class WebSocketPlayer { -public: - WebSocketPlayer(){}; - WebSocketPlayer(const WebSocketPlayer &) = default; - WebSocketPlayer(WebSocketPlayer &&) = default; - WebSocketPlayer &operator=(const WebSocketPlayer &) = default; - WebSocketPlayer &operator=(WebSocketPlayer &&) = default; - ~WebSocketPlayer() = default; - - inline const std::string &GetPlayerId() const { return m_playerId; } - - inline void SetPlayerId(const std::string &playerId) { m_playerId = playerId; } - - inline WebSocketPlayer &WithPlayerId(const std::string &playerId) { - SetPlayerId(playerId); - return *this; - } - - inline const std::string &GetTeam() const { return m_team; } - - inline void SetTeam(const std::string &team) { m_team = team; } - - inline WebSocketPlayer &WithTeam(const std::string &team) { - SetTeam(team); - return *this; - } - - inline const std::map &GetPlayerAttributes() const { return m_playerAttributes; } - - inline void SetPlayerAttributes(const std::map &playerAttributes) { m_playerAttributes = playerAttributes; } - - inline WebSocketPlayer &WithPlayerAttributes(const std::map &playerAttributes) { - SetPlayerAttributes(playerAttributes); - return *this; - } - - inline const std::map &GetLatencyInMs() const { return m_latencyInMs; } - - inline void SetLatencyInMs(const std::map &latencyInMs) { m_latencyInMs = latencyInMs; } - - inline WebSocketPlayer &WithLatencyInMs(const std::map &latencyInMs) { - SetLatencyInMs(latencyInMs); - return *this; - } - - std::string Serialize() const; - bool Deserialize(const std::string &jsonString); - bool Serialize(rapidjson::Writer *writer) const; - bool Deserialize(const rapidjson::Value &value); - -private: - static constexpr const char *PLAYER_ID = "PlayerId"; - static constexpr const char *PLAYER_ATTRIBUTES = "PlayerAttributes"; - static constexpr const char *LATENCY_IN_MS = "LatencyInMs"; - static constexpr const char *TEAM = "Team"; - - std::string m_playerId; - std::map m_playerAttributes; - std::map m_latencyInMs; - std::string m_team; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayerSession.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayerSession.h deleted file mode 100644 index e7bfd012..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayerSession.h +++ /dev/null @@ -1,179 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - */ - -#pragma once - -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class WebSocketPlayerSession { -public: - WebSocketPlayerSession() : m_creationTime(-1), m_terminationTime(-1), m_status(), m_port(-1) {} - - ~WebSocketPlayerSession() = default; - WebSocketPlayerSession(const WebSocketPlayerSession &other) = default; - WebSocketPlayerSession(WebSocketPlayerSession &&other) { *this = std::move(other); } - - WebSocketPlayerSession &operator=(const WebSocketPlayerSession &other) = default; - WebSocketPlayerSession &operator=(WebSocketPlayerSession &&other) noexcept { - m_playerSessionId = std::move(other.m_playerSessionId); - m_playerId = std::move(other.m_playerId); - m_gameSessionId = std::move(other.m_gameSessionId); - m_fleetId = std::move(other.m_fleetId); - m_creationTime = other.m_creationTime; - m_terminationTime = other.m_terminationTime; - m_status = other.m_status; - m_ipAddress = std::move(other.m_ipAddress); - m_port = other.m_port; - m_playerData = std::move(other.m_playerData); - m_dnsName = std::move(other.m_dnsName); - - return *this; - } - - inline const std::string &GetPlayerSessionId() const { return m_playerSessionId; } - - inline void SetPlayerSessionId(const std::string &playerSessionId) { m_playerSessionId = playerSessionId; } - - inline WebSocketPlayerSession &WithPlayerSessionId(const std::string &playerSessionId) { - SetPlayerSessionId(playerSessionId); - return *this; - } - - inline const std::string &GetPlayerId() const { return m_playerId; } - - inline void SetPlayerId(const std::string &playerId) { m_playerId = playerId; } - - inline WebSocketPlayerSession &WithPlayerId(const std::string &playerId) { - SetPlayerId(playerId); - return *this; - } - - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - inline void SetGameSessionId(const std::string &gameSessionId) { m_gameSessionId = gameSessionId; } - - inline WebSocketPlayerSession &WithGameSessionId(const std::string &gameSessionId) { - SetGameSessionId(gameSessionId); - return *this; - } - - inline const std::string &GetFleetId() const { return m_fleetId; } - - inline void SetFleetId(const std::string &fleetId) { m_fleetId = fleetId; } - - inline WebSocketPlayerSession &WithFleetId(const std::string &fleetId) { - SetFleetId(fleetId); - return *this; - } - - inline long GetCreationTime() const { return m_creationTime; } - - inline void SetCreationTime(const long creationTime) { m_creationTime = creationTime; } - - inline WebSocketPlayerSession &WithCreationTime(const long creationTime) { - SetCreationTime(creationTime); - return *this; - } - - inline long GetTerminationTime() const { return m_terminationTime; } - - inline void SetTerminationTime(const long terminationTime) { m_terminationTime = terminationTime; } - - inline WebSocketPlayerSession &WithTerminationTime(const long terminationTime) { - SetTerminationTime(terminationTime); - return *this; - } - - inline WebSocketPlayerSessionStatus GetStatus() const { return m_status; } - - inline void SetStatus(const WebSocketPlayerSessionStatus status) { m_status = status; } - - inline WebSocketPlayerSession &WithStatus(const WebSocketPlayerSessionStatus status) { - SetStatus(status); - return *this; - } - - inline const std::string &GetIpAddress() const { return m_ipAddress; } - - inline void SetIpAddress(const std::string &ipAddress) { m_ipAddress = ipAddress; } - - inline WebSocketPlayerSession &WithIpAddress(const std::string &ipAddress) { - SetIpAddress(ipAddress); - return *this; - } - - inline int GetPort() const { return m_port; } - - inline void SetPort(const int port) { m_port = port; } - - inline WebSocketPlayerSession &WithPort(const int port) { - SetPort(port); - return *this; - } - - inline const std::string &GetPlayerData() const { return m_playerData; } - - inline void SetPlayerData(const std::string &playerData) { m_playerData = playerData; } - - inline WebSocketPlayerSession &WithPlayerData(const std::string &playerData) { - SetPlayerData(playerData); - return *this; - } - - inline const std::string &GetDnsName() const { return m_dnsName; } - - inline void SetDnsName(const std::string &dnsName) { m_dnsName = dnsName; } - - inline WebSocketPlayerSession &WithDnsName(const std::string &dnsName) { - SetDnsName(dnsName); - return *this; - } - - bool Serialize(rapidjson::Writer *writer) const; - bool Deserialize(const rapidjson::Value &value); - -private: - static constexpr const char *PLAYER_SESSION_ID = "PlayerSessionId"; - static constexpr const char *PLAYER_ID = "PlayerId"; - static constexpr const char *GAME_SESSION_ID = "GameSessionId"; - static constexpr const char *FLEET_ID = "FleetId"; - static constexpr const char *CREATION_TIME = "CreationTime"; - static constexpr const char *TERMINATION_TIME = "TerminationTime"; - static constexpr const char *STATUS = "Status"; - static constexpr const char *IP_ADDRESS = "IpAddress"; - static constexpr const char *PORT = "Port"; - static constexpr const char *PLAYER_DATA = "PlayerData"; - static constexpr const char *DNS_NAME = "DnsName"; - - std::string m_playerSessionId; - std::string m_playerId; - std::string m_gameSessionId; - std::string m_fleetId; - long m_creationTime; - long m_terminationTime; - WebSocketPlayerSessionStatus m_status; - std::string m_ipAddress; - int m_port; - std::string m_playerData; - std::string m_dnsName; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayerSessionStatus.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayerSessionStatus.h deleted file mode 100644 index 52189cb6..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/WebSocketPlayerSessionStatus.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - */ - -#pragma once -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -enum class WebSocketPlayerSessionStatus { NOT_SET, RESERVED, ACTIVE, COMPLETED, TIMEDOUT }; - -class WebSocketPlayerSessionStatusMapper { -public: - inline static WebSocketPlayerSessionStatus GetStatusForName(const std::string &name) { - if (name == RESERVED) { - return WebSocketPlayerSessionStatus::RESERVED; - } - if (name == ACTIVE) { - return WebSocketPlayerSessionStatus::ACTIVE; - } - if (name == COMPLETED) { - return WebSocketPlayerSessionStatus::COMPLETED; - } - if (name == TIMEDOUT) { - return WebSocketPlayerSessionStatus::TIMEDOUT; - } - return WebSocketPlayerSessionStatus::NOT_SET; - } - - inline static std::string GetNameForStatus(WebSocketPlayerSessionStatus value) { - switch (value) { - case WebSocketPlayerSessionStatus::RESERVED: - return RESERVED; - case WebSocketPlayerSessionStatus::ACTIVE: - return ACTIVE; - case WebSocketPlayerSessionStatus::COMPLETED: - return COMPLETED; - case WebSocketPlayerSessionStatus::TIMEDOUT: - return TIMEDOUT; - default: - return NOT_SET; - } - } - -private: - static constexpr const char *RESERVED = "RESERVED"; - static constexpr const char *ACTIVE = "ACTIVE"; - static constexpr const char *COMPLETED = "COMPLETED"; - static constexpr const char *TIMEDOUT = "TIMEDOUT"; - static constexpr const char *NOT_SET = "NOT_SET"; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/DescribePlayerSessionsAdapter.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/DescribePlayerSessionsAdapter.h deleted file mode 100644 index f4610ccd..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/DescribePlayerSessionsAdapter.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class DescribePlayerSessionsAdapter { -public: - static Server::Model::DescribePlayerSessionsResult convert(const WebSocketDescribePlayerSessionsResponse *webSocketResponse); - static WebSocketDescribePlayerSessionsRequest convert(const Server::Model::DescribePlayerSessionsRequest &request); -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/GetFleetRoleCredentialsAdapter.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/GetFleetRoleCredentialsAdapter.h deleted file mode 100644 index 74865c19..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/GetFleetRoleCredentialsAdapter.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include -#include -namespace Aws { -namespace GameLift { -namespace Internal { -class GetFleetRoleCredentialsAdapter { -public: - static Server::Model::GetFleetRoleCredentialsResult convert(const WebSocketGetFleetRoleCredentialsResponse *webSocketResponse); - - static WebSocketGetFleetRoleCredentialsRequest convert(const Server::Model::GetFleetRoleCredentialsRequest &request); -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/StartMatchBackfillAdapter.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/StartMatchBackfillAdapter.h deleted file mode 100644 index 00b85c94..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/adapter/StartMatchBackfillAdapter.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class StartMatchBackfillAdapter { -public: - static Server::Model::StartMatchBackfillResult convert(const WebSocketStartMatchBackfillResponse *webSocketResponse); - static WebSocketStartMatchBackfillRequest convert(const Server::Model::StartMatchBackfillRequest &request); - static std::map fetchAndConvertLatency(const Server::Model::Player &player); - static std::map fetchAndConvertAttributes(const Server::Model::Player &player); - static std::vector convertStringList(const Server::Model::AttributeValue &attributeValue); - static std::map convertStringDoubleMap(const Server::Model::AttributeValue &attributeValue); -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/CreateGameSessionMessage.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/CreateGameSessionMessage.h deleted file mode 100644 index 2d4081fc..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/CreateGameSessionMessage.h +++ /dev/null @@ -1,148 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Message from Amazon GameLift Servers initializing GameSession Creation - */ -class CreateGameSessionMessage : public Message { -public: - CreateGameSessionMessage() : m_maximumPlayerSessionCount(-1), m_port(-1) { SetAction(CREATE_GAME_SESSION); }; - CreateGameSessionMessage(const CreateGameSessionMessage &) = default; - CreateGameSessionMessage(CreateGameSessionMessage &&) = default; - CreateGameSessionMessage &operator=(const CreateGameSessionMessage &) = default; - CreateGameSessionMessage &operator=(CreateGameSessionMessage &&) = default; - ~CreateGameSessionMessage() = default; - - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - inline const std::string &GetGameSessionName() const { return m_gameSessionName; } - - inline const std::string &GetGameSessionData() const { return m_gameSessionData; } - - inline const std::string &GetMatchmakerData() const { return m_matchmakerData; } - - inline const std::string &GetIpAddress() const { return m_ipAddress; } - - inline const std::string &GetDnsName() const { return m_dnsName; } - - inline int GetMaximumPlayerSessionCount() const { return m_maximumPlayerSessionCount; } - - inline int GetPort() const { return m_port; } - - inline const std::map &GetGameProperties() const { return m_gameProperties; } - - inline void SetGameSessionId(const std::string &gameSessionId) { m_gameSessionId = gameSessionId; } - - inline void SetGameSessionName(const std::string &gameSessionName) { m_gameSessionName = gameSessionName; } - - inline void SetGameSessionData(const std::string &gameSessionData) { m_gameSessionData = gameSessionData; } - - inline void SetMatchmakerData(const std::string &matchmakerData) { m_matchmakerData = matchmakerData; } - - inline void SetIpAddress(const std::string &ipAddress) { m_ipAddress = ipAddress; } - - inline void SetDnsName(const std::string &dnsName) { m_dnsName = dnsName; } - - inline void SetMaximumPlayerSessionCount(const int maximumPlayerSessionCount) { m_maximumPlayerSessionCount = maximumPlayerSessionCount; } - - inline void SetPort(const int port) { m_port = port; } - - inline void SetGameProperties(const std::map &gameProperties) { m_gameProperties = gameProperties; } - - inline CreateGameSessionMessage &WithGameSessionId(const std::string &gameSessionId) { - SetGameSessionId(gameSessionId); - return *this; - } - - inline CreateGameSessionMessage &WithGameSessionName(const std::string &gameSessionName) { - SetGameSessionName(gameSessionName); - return *this; - } - - inline CreateGameSessionMessage &WithGameSessionData(const std::string &gameSessionData) { - SetGameSessionData(gameSessionData); - return *this; - } - - inline CreateGameSessionMessage &WithMatchmakerData(const std::string &matchmakerData) { - SetMatchmakerData(matchmakerData); - return *this; - } - - inline CreateGameSessionMessage &WithIpAddress(const std::string &ipAddress) { - SetIpAddress(ipAddress); - return *this; - } - - inline CreateGameSessionMessage &WithDnsName(const std::string &dnsName) { - SetDnsName(dnsName); - return *this; - } - - inline CreateGameSessionMessage &WithMaximumPlayerSessionCount(const int maximumPlayerSessionCount) { - SetMaximumPlayerSessionCount(maximumPlayerSessionCount); - return *this; - } - - inline CreateGameSessionMessage &WithPort(const int port) { - SetPort(port); - return *this; - } - - inline CreateGameSessionMessage &WithGameProperties(const std::map &gameProperties) { - SetGameProperties(gameProperties); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const CreateGameSessionMessage &createGameSessionMessage); - -protected: - virtual bool Serialize(rapidjson::Writer *writer) const; - virtual bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *CREATE_GAME_SESSION = "CreateGameSession"; - static constexpr const char *GAME_SESSION_ID = "GameSessionId"; - static constexpr const char *GAME_SESSION_NAME = "GameSessionName"; - static constexpr const char *GAME_SESSION_DATA = "GameSessionData"; - static constexpr const char *MATCHMAKER_DATA = "MatchmakerData"; - static constexpr const char *DNS_NAME = "DnsName"; - static constexpr const char *IP_ADDRESS = "IpAddress"; - static constexpr const char *MAXIMUM_PLAYER_SESSION_COUNT = "MaximumPlayerSessionCount"; - static constexpr const char *PORT = "Port"; - static constexpr const char *GAME_PROPERTIES = "GameProperties"; - - std::string m_gameSessionId; - std::string m_gameSessionName; - std::string m_gameSessionData; - std::string m_matchmakerData; - std::string m_ipAddress; - std::string m_dnsName; - int m_maximumPlayerSessionCount; - int m_port; - std::map m_gameProperties; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/RefreshConnectionMessage.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/RefreshConnectionMessage.h deleted file mode 100644 index ddf0a34b..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/RefreshConnectionMessage.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * Message from Amazon GameLift Servers indicating the server SDK should refresh its websocket connection. - */ -class RefreshConnectionMessage : public Message { -public: - RefreshConnectionMessage() { SetAction(REFRESH_CONNECTION); }; - RefreshConnectionMessage(const RefreshConnectionMessage &) = default; - RefreshConnectionMessage(RefreshConnectionMessage &&) = default; - RefreshConnectionMessage &operator=(const RefreshConnectionMessage &) = default; - RefreshConnectionMessage &operator=(RefreshConnectionMessage &&) = default; - ~RefreshConnectionMessage() = default; - - inline const std::string &GetRefreshConnectionEndpoint() const { return m_refreshConnectionEndpoint; } - inline const std::string &GetAuthToken() const { return m_authToken; } - - inline void SetRefreshConnectionEndpoint(const std::string &refreshConnectionEndpoint) { m_refreshConnectionEndpoint = refreshConnectionEndpoint; } - inline void SetAuthToken(const std::string &authToken) { m_authToken = authToken; } - - inline RefreshConnectionMessage &WithRefreshConnectionEndpoint(const std::string &refreshConnectionEndpoint) { - SetRefreshConnectionEndpoint(refreshConnectionEndpoint); - return *this; - } - inline RefreshConnectionMessage &WithAuthToken(const std::string &authToken) { - SetAuthToken(authToken); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const RefreshConnectionMessage &refreshConnectionMessage); - -protected: - virtual bool Serialize(rapidjson::Writer *writer) const; - virtual bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *REFRESH_CONNECTION = "RefreshConnection"; - static constexpr const char *REFRESH_CONNECTION_ENDPOINT = "RefreshConnectionEndpoint"; - static constexpr const char *AUTH_TOKEN = "AuthToken"; - - std::string m_refreshConnectionEndpoint; - std::string m_authToken; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/TerminateProcessMessage.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/TerminateProcessMessage.h deleted file mode 100644 index 3b71f2d6..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/TerminateProcessMessage.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Message from Amazon GameLift Servers initializing GameSession Creation - */ -class TerminateProcessMessage : public Message { -public: - TerminateProcessMessage() : m_terminationTime(-1) { SetAction(TERMINATE_PROCESS); }; - TerminateProcessMessage(const TerminateProcessMessage &) = default; - TerminateProcessMessage(TerminateProcessMessage &&) = default; - TerminateProcessMessage &operator=(const TerminateProcessMessage &) = default; - TerminateProcessMessage &operator=(TerminateProcessMessage &&) = default; - ~TerminateProcessMessage() = default; - - inline long GetTerminationTime() const { return m_terminationTime; } - - inline void SetTerminationTime(const long terminationTime) { m_terminationTime = terminationTime; } - - inline TerminateProcessMessage &WithTerminationTime(const long terminationTime) { - SetTerminationTime(terminationTime); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const TerminateProcessMessage &terminateProcessMessage); - -protected: - virtual bool Serialize(rapidjson::Writer *writer) const; - virtual bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *TERMINATE_PROCESS = "TerminateProcess"; - static constexpr const char *TERMINATION_TIME = "TerminationTime"; - - long m_terminationTime; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/UpdateGameSessionMessage.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/UpdateGameSessionMessage.h deleted file mode 100644 index 334ef192..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/message/UpdateGameSessionMessage.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Message from Amazon GameLift Servers initializing GameSession Creation - */ -class UpdateGameSessionMessage : public Message { -public: - UpdateGameSessionMessage() { SetAction(UPDATE_GAME_SESSION); }; - UpdateGameSessionMessage(const UpdateGameSessionMessage &) = default; - UpdateGameSessionMessage(UpdateGameSessionMessage &&) = default; - UpdateGameSessionMessage &operator=(const UpdateGameSessionMessage &) = default; - UpdateGameSessionMessage &operator=(UpdateGameSessionMessage &&) = default; - ~UpdateGameSessionMessage() = default; - - inline const WebSocketGameSession &GetGameSession() const { return m_gameSession; } - - inline const std::string &GetUpdateReason() const { return m_updateReason; } - - inline const std::string &GetBackfillTicketId() const { return m_backfillTicketId; } - - inline void SetGameSession(WebSocketGameSession &gameSession) { m_gameSession = gameSession; } - - inline void SetUpdateReason(const std::string &updateReason) { m_updateReason = updateReason; } - - inline void SetBackfillTicketId(const std::string &backfillTicketId) { m_backfillTicketId = backfillTicketId; } - - inline UpdateGameSessionMessage &WithGameSession(WebSocketGameSession &gameSession) { - SetGameSession(gameSession); - return *this; - } - - inline UpdateGameSessionMessage &WithUpdateReason(const std::string &updateReason) { - SetUpdateReason(updateReason); - return *this; - } - - inline UpdateGameSessionMessage &WithBackfillTicketId(const std::string &backfillTicketId) { - SetBackfillTicketId(backfillTicketId); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const UpdateGameSessionMessage &createGameSessionMessage); - -protected: - virtual bool Serialize(rapidjson::Writer *writer) const; - virtual bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *UPDATE_GAME_SESSION = "UpdateGameSession"; - static constexpr const char *GAME_SESSION = "GameSession"; - static constexpr const char *UPDATE_REASON = "UpdateReason"; - static constexpr const char *BACKFILL_TICKET_ID = "BackfillTicketId"; - - WebSocketGameSession m_gameSession; - std::string m_updateReason; - std::string m_backfillTicketId; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/AcceptPlayerSessionRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/AcceptPlayerSessionRequest.h deleted file mode 100644 index 56075fa2..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/AcceptPlayerSessionRequest.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class AcceptPlayerSessionRequest : public Message { -public: - AcceptPlayerSessionRequest() { SetAction(ACTION); } - AcceptPlayerSessionRequest(std::string gameSessionId, std::string playerSessionId) - : m_gameSessionId(std::move(gameSessionId)), m_playerSessionId(std::move(playerSessionId)) { - SetAction(ACTION); - } - - AcceptPlayerSessionRequest(const AcceptPlayerSessionRequest &) = default; - AcceptPlayerSessionRequest(AcceptPlayerSessionRequest &&) = default; - AcceptPlayerSessionRequest &operator=(const AcceptPlayerSessionRequest &) = default; - AcceptPlayerSessionRequest &operator=(AcceptPlayerSessionRequest &&) = default; - ~AcceptPlayerSessionRequest() = default; - - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - inline const std::string &GetPlayerSessionId() const { return m_playerSessionId; } - - inline void SetGameSessionId(const std::string &gameSessionId) { m_gameSessionId = gameSessionId; } - - inline void SetPlayerSessionId(const std::string &playerSessionId) { m_playerSessionId = playerSessionId; } - - inline AcceptPlayerSessionRequest &WithGameSessionId(const std::string &gameSessionId) { - SetGameSessionId(gameSessionId); - return *this; - } - - inline AcceptPlayerSessionRequest &WithPlayerSessionId(const std::string &playerSessionId) { - SetPlayerSessionId(playerSessionId); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const AcceptPlayerSessionRequest &request); - -protected: - bool Serialize(rapidjson::Writer *writer) const; - bool Deserialize(const rapidjson::Value &value); - -private: - static constexpr const char *ACTION = "AcceptPlayerSession"; - static constexpr const char *GAME_SESSION_ID = "GameSessionId"; - static constexpr const char *PLAYER_SESSION_ID = "PlayerSessionId"; - - std::string m_gameSessionId; - std::string m_playerSessionId; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/ActivateGameSessionRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/ActivateGameSessionRequest.h deleted file mode 100644 index 61c78914..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/ActivateGameSessionRequest.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * ActivateGameSessionRequest Request. This request is sent to the Amazon GameLift Servers WebSocket during - * ActivateGameSession - */ -class ActivateGameSessionRequest : public Message { -public: - ActivateGameSessionRequest(); - ActivateGameSessionRequest(std::string gameSessionId); - - ActivateGameSessionRequest(const ActivateGameSessionRequest &) = default; - ActivateGameSessionRequest(ActivateGameSessionRequest &&) = default; - ActivateGameSessionRequest &operator=(const ActivateGameSessionRequest &) = default; - ActivateGameSessionRequest &operator=(ActivateGameSessionRequest &&) = default; - ~ActivateGameSessionRequest() = default; - - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - inline void SetGameSessionId(const std::string &gameSessionId) { m_gameSessionId = gameSessionId; } - - inline ActivateGameSessionRequest &WithGameSessionId(const std::string &gameSessionId) { - SetGameSessionId(gameSessionId); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const ActivateGameSessionRequest &request); - -protected: - bool Serialize(rapidjson::Writer *writer) const; - bool Deserialize(const rapidjson::Value &value); - -private: - static constexpr const char *ACTIVATE_GAME_SESSION = "ActivateGameSession"; - static constexpr const char *GAME_SESSION_ID = "GameSessionId"; - - std::string m_gameSessionId; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/ActivateServerProcessRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/ActivateServerProcessRequest.h deleted file mode 100644 index f816dc34..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/ActivateServerProcessRequest.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * ActivateServerProcess Request. This request is sent to the Amazon GameLift Servers WebSocket during the - * ProcessReady call - */ -class ActivateServerProcessRequest : public Message { -public: - ActivateServerProcessRequest(); - ActivateServerProcessRequest(std::string sdkVersion, std::string sdkLanguage, std::string sdkToolName, std::string sdkToolVersion, int port, const Aws::GameLift::Server::LogParameters &logParameters); - - ActivateServerProcessRequest(const ActivateServerProcessRequest &) = default; - ActivateServerProcessRequest(ActivateServerProcessRequest &&) = default; - ActivateServerProcessRequest &operator=(const ActivateServerProcessRequest &) = default; - ActivateServerProcessRequest &operator=(ActivateServerProcessRequest &&) = default; - ~ActivateServerProcessRequest() = default; - - inline const std::string &GetSdkVersion() const { return m_sdkVersion; } - - inline const std::string &GetSdkLanguage() const { return m_sdkLanguage; } - - inline const std::string &GetSdkToolName() const { return m_sdkToolName; } - - inline const std::string &GetSdkToolVersion() const { return m_sdkToolVersion; } - - inline const int GetPort() const { return m_port; } - - inline const Aws::GameLift::Server::LogParameters GetLogParameters() const { return m_logParameters; } - - inline void SetSdkVersion(const std::string &sdkVersion) { m_sdkVersion = sdkVersion; } - - inline void SetSdkLanguage(const std::string &sdkLanguage) { m_sdkLanguage = sdkLanguage; } - - inline void SetSdkToolName(const std::string &sdkToolName) { m_sdkToolName = sdkToolName; } - - inline void SetSdkToolVersion(const std::string &sdkToolVersion) { m_sdkToolVersion = sdkToolVersion; } - - inline void SetPort(const int port) { m_port = port; } - - inline void SetLogParameters(const Aws::GameLift::Server::LogParameters &logParameters) { m_logParameters = logParameters; } - - inline ActivateServerProcessRequest &WithPort(const int port) { - SetPort(port); - return *this; - } - - inline ActivateServerProcessRequest &WithLogParameters(const Aws::GameLift::Server::LogParameters &logParameters) { - SetLogParameters(logParameters); - return *this; - } - - inline ActivateServerProcessRequest &WithSdkVersion(const std::string &sdkVersion) { - SetSdkVersion(sdkVersion); - return *this; - } - - inline ActivateServerProcessRequest &WithSdkLanguage(const std::string &sdkLanguage) { - SetSdkLanguage(sdkLanguage); - return *this; - } - - inline ActivateServerProcessRequest &WithSdkToolName(const std::string &sdkToolName) { - SetSdkToolName(sdkToolName); - return *this; - } - - inline ActivateServerProcessRequest &WithSdkToolVersion(const std::string &sdkToolVersion) { - SetSdkToolVersion(sdkToolVersion); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const ActivateServerProcessRequest &request); - -protected: - bool Serialize(rapidjson::Writer *writer) const; - bool Deserialize(const rapidjson::Value &value); - -private: - static constexpr const char *ACTIVATE_SERVER_PROCESS = "ActivateServerProcess"; - static constexpr const char *SDK_VERSION = "SdkVersion"; - static constexpr const char *SDK_LANGUAGE = "SdkLanguage"; - static constexpr const char *SDK_TOOL_NAME = "SdkToolName"; - static constexpr const char *SDK_TOOL_VERSION = "SdkToolVersion"; - static constexpr const char *PORT = "Port"; - static constexpr const char *LOG_PATHS = "LogPaths"; - - std::string m_sdkVersion; - std::string m_sdkLanguage; - std::string m_sdkToolName; - std::string m_sdkToolVersion; - int m_port; - Aws::GameLift::Server::LogParameters m_logParameters; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/HeartbeatServerProcessRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/HeartbeatServerProcessRequest.h deleted file mode 100644 index 0bb56287..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/HeartbeatServerProcessRequest.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Message from Amazon GameLift Servers/Customer reporting process health. - */ -class HeartbeatServerProcessRequest : public Message { -public: - HeartbeatServerProcessRequest() : m_healthy(true) { SetAction(HEARTBEAT_SERVER_PROCESS); }; - HeartbeatServerProcessRequest(const HeartbeatServerProcessRequest &) = default; - HeartbeatServerProcessRequest(HeartbeatServerProcessRequest &&) = default; - HeartbeatServerProcessRequest &operator=(const HeartbeatServerProcessRequest &) = default; - HeartbeatServerProcessRequest &operator=(HeartbeatServerProcessRequest &&) = default; - ~HeartbeatServerProcessRequest() = default; - - inline const bool GetHealthy() const { return m_healthy; } - - inline void SetHealthy(const bool healthy) { m_healthy = healthy; } - - inline HeartbeatServerProcessRequest &WithHealthy(const bool healthy) { - SetHealthy(healthy); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const HeartbeatServerProcessRequest &HeartbeatServerProcessRequest); - -protected: - virtual bool Serialize(rapidjson::Writer *writer) const; - virtual bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *HEARTBEAT_SERVER_PROCESS = "HeartbeatServerProcess"; - static constexpr const char *HEALTH_STATUS = "HealthStatus"; - - bool m_healthy; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/RemovePlayerSessionRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/RemovePlayerSessionRequest.h deleted file mode 100644 index 8f66f42e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/RemovePlayerSessionRequest.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class RemovePlayerSessionRequest : public Message { -public: - RemovePlayerSessionRequest() { SetAction(ACTION); } - RemovePlayerSessionRequest(std::string gameSessionId, std::string playerSessionId) - : m_gameSessionId(std::move(gameSessionId)), m_playerSessionId(std::move(playerSessionId)) { - SetAction(ACTION); - } - - RemovePlayerSessionRequest(const RemovePlayerSessionRequest &) = default; - RemovePlayerSessionRequest(RemovePlayerSessionRequest &&) = default; - RemovePlayerSessionRequest &operator=(const RemovePlayerSessionRequest &) = default; - RemovePlayerSessionRequest &operator=(RemovePlayerSessionRequest &&) = default; - ~RemovePlayerSessionRequest() = default; - - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - inline const std::string &GetPlayerSessionId() const { return m_playerSessionId; } - - inline void SetGameSessionId(const std::string &gameSessionId) { m_gameSessionId = gameSessionId; } - - inline void SetPlayerSessionId(const std::string &playerSessionId) { m_playerSessionId = playerSessionId; } - - inline RemovePlayerSessionRequest &WithGameSessionId(const std::string &gameSessionId) { - SetGameSessionId(gameSessionId); - return *this; - } - - inline RemovePlayerSessionRequest &WithPlayerSessionId(const std::string &playerSessionId) { - SetPlayerSessionId(playerSessionId); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const RemovePlayerSessionRequest &request); - -protected: - bool Serialize(rapidjson::Writer *writer) const; - bool Deserialize(const rapidjson::Value &value); - -private: - static constexpr const char *ACTION = "RemovePlayerSession"; - static constexpr const char *GAME_SESSION_ID = "GameSessionId"; - static constexpr const char *PLAYER_SESSION_ID = "PlayerSessionId"; - - std::string m_gameSessionId; - std::string m_playerSessionId; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/TerminateServerProcessRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/TerminateServerProcessRequest.h deleted file mode 100644 index 2df64a5e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/TerminateServerProcessRequest.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * TerminateServerProcess Request. This request is sent to the Amazon GameLift Servers WebSocket during the - * ProcessEnding call - */ -class TerminateServerProcessRequest : public Message { -public: - TerminateServerProcessRequest(); - - TerminateServerProcessRequest(const TerminateServerProcessRequest &) = default; - TerminateServerProcessRequest(TerminateServerProcessRequest &&) = default; - TerminateServerProcessRequest &operator=(const TerminateServerProcessRequest &) = default; - TerminateServerProcessRequest &operator=(TerminateServerProcessRequest &&) = default; - ~TerminateServerProcessRequest() = default; - -private: - static constexpr const char *TERMINATE_SERVER_PROCESS = "TerminateServerProcess"; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/UpdatePlayerSessionCreationPolicyRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/UpdatePlayerSessionCreationPolicyRequest.h deleted file mode 100644 index 7e6100ab..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/UpdatePlayerSessionCreationPolicyRequest.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -enum class WebSocketPlayerSessionCreationPolicy { NOT_SET, DENY_ALL, ACCEPT_ALL }; - -/** - * UpdatePlayerSessionCreationPolicyRequest Request. This request is sent to the Amazon GameLift Servers WebSocket - * during a DescribePlayerSessions call - */ -class UpdatePlayerSessionCreationPolicyRequest : public Message { -public: - UpdatePlayerSessionCreationPolicyRequest() { SetAction(ACTION); }; - - UpdatePlayerSessionCreationPolicyRequest(std::string gameSessionId, std::string playerSessionCreationPolicy) : m_gameSessionId(std::move(gameSessionId)) { - SetAction(ACTION); - SetPlayerSessionCreationPolicy(playerSessionCreationPolicy); - } - - UpdatePlayerSessionCreationPolicyRequest(const UpdatePlayerSessionCreationPolicyRequest &) = default; - UpdatePlayerSessionCreationPolicyRequest(UpdatePlayerSessionCreationPolicyRequest &&) = default; - UpdatePlayerSessionCreationPolicyRequest &operator=(const UpdatePlayerSessionCreationPolicyRequest &) = default; - UpdatePlayerSessionCreationPolicyRequest &operator=(UpdatePlayerSessionCreationPolicyRequest &&) = default; - ~UpdatePlayerSessionCreationPolicyRequest() = default; - - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - inline void SetGameSessionId(const std::string &gameSessionId) { m_gameSessionId = gameSessionId; } - - inline UpdatePlayerSessionCreationPolicyRequest &WithGameSessionId(const std::string &gameSessionId) { - SetGameSessionId(gameSessionId); - return *this; - } - - inline const WebSocketPlayerSessionCreationPolicy &GetPlayerSessionCreationPolicy() const { return m_playerSessionCreationPolicy; } - - inline const std::string GetPlayerSessionCreationPolicyAsString() const { - switch (m_playerSessionCreationPolicy) { - case WebSocketPlayerSessionCreationPolicy::ACCEPT_ALL: - return std::string(ACCEPT_ALL); - case WebSocketPlayerSessionCreationPolicy::DENY_ALL: - return std::string(DENY_ALL); - default: - return std::string(NOT_SET); - } - } - - inline void SetPlayerSessionCreationPolicy(const WebSocketPlayerSessionCreationPolicy &playerSessionCreationPolicy) { - m_playerSessionCreationPolicy = playerSessionCreationPolicy; - } - - inline UpdatePlayerSessionCreationPolicyRequest &WithPlayerSessionCreationPolicy(const WebSocketPlayerSessionCreationPolicy &playerSessionCreationPolicy) { - SetPlayerSessionCreationPolicy(playerSessionCreationPolicy); - return *this; - } - - inline void SetPlayerSessionCreationPolicy(const std::string &playerSessionCreationPolicy) { - if (strcmp(playerSessionCreationPolicy.c_str(), ACCEPT_ALL) == 0) { - m_playerSessionCreationPolicy = WebSocketPlayerSessionCreationPolicy::ACCEPT_ALL; - } else if (strcmp(playerSessionCreationPolicy.c_str(), DENY_ALL) == 0) { - m_playerSessionCreationPolicy = WebSocketPlayerSessionCreationPolicy::DENY_ALL; - } else { - m_playerSessionCreationPolicy = WebSocketPlayerSessionCreationPolicy::NOT_SET; - } - } - - inline UpdatePlayerSessionCreationPolicyRequest &WithPlayerSessionCreationPolicy(const std::string &playerSessionCreationPolicy) { - SetPlayerSessionCreationPolicy(playerSessionCreationPolicy); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const UpdatePlayerSessionCreationPolicyRequest &describePlayerSessionsRequest); - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "UpdatePlayerSessionCreationPolicy"; - - static constexpr const char *GAME_SESSION_ID = "GameSessionId"; - static constexpr const char *PLAYER_SESSION_POLICY = "PlayerSessionPolicy"; - static constexpr const char *ACCEPT_ALL = "ACCEPT_ALL"; - static constexpr const char *DENY_ALL = "DENY_ALL"; - static constexpr const char *NOT_SET = "NOT_SET"; - - std::string m_gameSessionId; - WebSocketPlayerSessionCreationPolicy m_playerSessionCreationPolicy = WebSocketPlayerSessionCreationPolicy::NOT_SET; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketDescribePlayerSessionsRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketDescribePlayerSessionsRequest.h deleted file mode 100644 index 8cd4a706..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketDescribePlayerSessionsRequest.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * WebSocketDescribePlayerSessionsRequest Request. This request is sent to the Amazon GameLift Servers WebSocket - * during a DescribePlayerSessions call - */ -class WebSocketDescribePlayerSessionsRequest : public Message { -public: - WebSocketDescribePlayerSessionsRequest() : m_limit(-1) { SetAction(ACTION); }; - WebSocketDescribePlayerSessionsRequest(const WebSocketDescribePlayerSessionsRequest &) = default; - WebSocketDescribePlayerSessionsRequest(WebSocketDescribePlayerSessionsRequest &&) = default; - WebSocketDescribePlayerSessionsRequest &operator=(const WebSocketDescribePlayerSessionsRequest &) = default; - WebSocketDescribePlayerSessionsRequest &operator=(WebSocketDescribePlayerSessionsRequest &&) = default; - ~WebSocketDescribePlayerSessionsRequest() = default; - - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - inline const std::string &GetPlayerId() const { return m_playerId; } - - inline const std::string &GetPlayerSessionId() const { return m_playerSessionId; } - - inline const std::string &GetPlayerSessionStatusFilter() const { return m_playerSessionStatusFilter; } - - inline const std::string &GetNextToken() const { return m_nextToken; } - - inline int GetLimit() const { return m_limit; } - - inline void SetGameSessionId(const std::string &gameSessionId) { m_gameSessionId = gameSessionId; } - - inline void SetPlayerId(const std::string &playerId) { m_playerId = playerId; } - - inline void SetPlayerSessionId(const std::string &playerSessionId) { m_playerSessionId = playerSessionId; } - - inline void SetPlayerSessionStatusFilter(const std::string &playerSessionStatusFilter) { m_playerSessionStatusFilter = playerSessionStatusFilter; } - - inline void SetNextToken(const std::string &nextToken) { m_nextToken = nextToken; } - - inline void SetLimit(const int limit) { m_limit = limit; } - - inline WebSocketDescribePlayerSessionsRequest &WithGameSessionId(const std::string &gameSessionId) { - SetGameSessionId(gameSessionId); - return *this; - } - - inline WebSocketDescribePlayerSessionsRequest &WithPlayerId(const std::string &playerId) { - SetPlayerId(playerId); - return *this; - } - - inline WebSocketDescribePlayerSessionsRequest &WithPlayerSessionId(const std::string &playerSessionId) { - SetPlayerSessionId(playerSessionId); - return *this; - } - - inline WebSocketDescribePlayerSessionsRequest &WithPlayerSessionStatusFilter(const std::string &playerSessionStatusFilter) { - SetPlayerSessionStatusFilter(playerSessionStatusFilter); - return *this; - } - - inline WebSocketDescribePlayerSessionsRequest &WithNextToken(const std::string &nextToken) { - SetNextToken(nextToken); - return *this; - } - - inline WebSocketDescribePlayerSessionsRequest &WithLimit(const int limit) { - SetLimit(limit); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const WebSocketDescribePlayerSessionsRequest &describePlayerSessionsRequest); - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "DescribePlayerSessions"; - - static constexpr const char *GAME_SESSION_ID = "GameSessionId"; - static constexpr const char *PLAYER_ID = "PlayerId"; - static constexpr const char *PLAYER_SESSION_ID = "PlayerSessionId"; - static constexpr const char *PLAYER_SESSION_STATUS_FILTER = "PlayerSessionStatusFilter"; - static constexpr const char *NEXT_TOKEN = "NextToken"; - static constexpr const char *LIMIT = "Limit"; - - std::string m_gameSessionId; - std::string m_playerId; - std::string m_playerSessionId; - std::string m_playerSessionStatusFilter; - std::string m_nextToken; - int m_limit; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketGetComputeCertificateRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketGetComputeCertificateRequest.h deleted file mode 100644 index e7f74f67..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketGetComputeCertificateRequest.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * WebSocketGetComputeCertificateRequest Request. This request is sent to the Amazon GameLift Servers WebSocket - * during a DescribePlayerSessions call - */ -class WebSocketGetComputeCertificateRequest : public Message { -public: - WebSocketGetComputeCertificateRequest() { SetAction(ACTION); }; - WebSocketGetComputeCertificateRequest(const WebSocketGetComputeCertificateRequest &) = default; - WebSocketGetComputeCertificateRequest(WebSocketGetComputeCertificateRequest &&) = default; - WebSocketGetComputeCertificateRequest &operator=(const WebSocketGetComputeCertificateRequest &) = default; - WebSocketGetComputeCertificateRequest &operator=(WebSocketGetComputeCertificateRequest &&) = default; - ~WebSocketGetComputeCertificateRequest() = default; - - friend std::ostream &operator<<(std::ostream &os, const WebSocketGetComputeCertificateRequest &describePlayerSessionsRequest); - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "GetComputeCertificate"; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketGetFleetRoleCredentialsRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketGetFleetRoleCredentialsRequest.h deleted file mode 100644 index 7360c775..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketGetFleetRoleCredentialsRequest.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class WebSocketGetFleetRoleCredentialsRequest : public Message { -public: - WebSocketGetFleetRoleCredentialsRequest() { SetAction(ACTION); }; - - WebSocketGetFleetRoleCredentialsRequest(const WebSocketGetFleetRoleCredentialsRequest &) = default; - - WebSocketGetFleetRoleCredentialsRequest(WebSocketGetFleetRoleCredentialsRequest &&) = default; - - WebSocketGetFleetRoleCredentialsRequest &operator=(const WebSocketGetFleetRoleCredentialsRequest &) = default; - - WebSocketGetFleetRoleCredentialsRequest &operator=(WebSocketGetFleetRoleCredentialsRequest &&) = default; - - ~WebSocketGetFleetRoleCredentialsRequest() = default; - - inline const std::string &GetRoleArn() const { return m_roleArn; } - - inline void SetRoleArn(const std::string &value) { m_roleArn = value; } - - inline WebSocketGetFleetRoleCredentialsRequest &WithRoleArn(const std::string &value) { - SetRoleArn(value); - return *this; - } - - inline const std::string &GetRoleSessionName() const { return m_roleSessionName; } - - inline void SetRoleSessionName(const std::string &value) { m_roleSessionName = value; } - - inline WebSocketGetFleetRoleCredentialsRequest &WithRoleSessionName(const std::string &value) { - SetRoleSessionName(value); - return *this; - } - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "GetFleetRoleCredentials"; - - static constexpr const char *ROLE_ARN = "RoleArn"; - static constexpr const char *ROLE_SESSION_NAME = "RoleSessionName"; - - std::string m_roleArn; - std::string m_roleSessionName; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketStartMatchBackfillRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketStartMatchBackfillRequest.h deleted file mode 100644 index 88caf6f1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketStartMatchBackfillRequest.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * WebSocketStartMatchBackfillRequest request. This request is sent to the Amazon GameLift Servers WebSocket during - * a DescribePlayerSessions call - */ -class WebSocketStartMatchBackfillRequest : public Message { -public: - WebSocketStartMatchBackfillRequest(); - WebSocketStartMatchBackfillRequest(const WebSocketStartMatchBackfillRequest &) = default; - WebSocketStartMatchBackfillRequest(WebSocketStartMatchBackfillRequest &&) = default; - WebSocketStartMatchBackfillRequest &operator=(const WebSocketStartMatchBackfillRequest &) = default; - WebSocketStartMatchBackfillRequest &operator=(WebSocketStartMatchBackfillRequest &&) = default; - ~WebSocketStartMatchBackfillRequest() = default; - - inline const std::string &GetTicketId() const { return m_ticketId; } - - inline void SetTicketId(const std::string &ticketId) { m_ticketId = ticketId; } - - inline WebSocketStartMatchBackfillRequest &WithTicketId(const std::string &ticketId) { - SetTicketId(ticketId); - return *this; - } - - inline const std::string &GetGameSessionArn() const { return m_gameSessionArn; } - - inline void SetGameSessionArn(const std::string &gameSessionArn) { m_gameSessionArn = gameSessionArn; } - - inline WebSocketStartMatchBackfillRequest &WithGameSessionArn(const std::string &gameSessionArn) { - SetGameSessionArn(gameSessionArn); - return *this; - } - - inline const std::string &GetMatchmakingConfigurationArn() const { return m_matchmakingConfigurationArn; } - - inline void SetMatchmakingConfigurationArn(const std::string &matchmakingConfigurationArn) { m_matchmakingConfigurationArn = matchmakingConfigurationArn; } - - inline WebSocketStartMatchBackfillRequest &WithMatchmakingConfigurationArn(const std::string &matchmakingConfigurationArn) { - SetMatchmakingConfigurationArn(matchmakingConfigurationArn); - return *this; - } - - inline const std::vector &GetPlayers() const { return m_players; } - - inline void SetPlayers(const std::vector &players) { m_players = players; } - - inline WebSocketStartMatchBackfillRequest &WithPlayers(const std::vector &players) { - SetPlayers(players); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const WebSocketStartMatchBackfillRequest &describePlayerSessionsRequest); - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "StartMatchBackfill"; - - static constexpr const char *TICKET_ID = "TicketId"; - static constexpr const char *GAME_SESSION_ARN = "GameSessionArn"; - static constexpr const char *MATCHMAKING_CONFIGURATION_ARN = "MatchmakingConfigurationArn"; - static constexpr const char *PLAYERS = "Players"; - - std::string m_ticketId; - std::string m_gameSessionArn; - std::string m_matchmakingConfigurationArn; - std::vector m_players; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketStopMatchBackfillRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketStopMatchBackfillRequest.h deleted file mode 100644 index b5e388e4..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/request/WebSocketStopMatchBackfillRequest.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Message from Amazon GameLift Servers/Customer reporting process health. - */ -class WebSocketStopMatchBackfillRequest : public Message { -public: - WebSocketStopMatchBackfillRequest() { SetAction(STOP_MATCH_BACKFILL); }; - WebSocketStopMatchBackfillRequest(const WebSocketStopMatchBackfillRequest &) = default; - WebSocketStopMatchBackfillRequest(WebSocketStopMatchBackfillRequest &&) = default; - WebSocketStopMatchBackfillRequest &operator=(const WebSocketStopMatchBackfillRequest &) = default; - WebSocketStopMatchBackfillRequest &operator=(WebSocketStopMatchBackfillRequest &&) = default; - ~WebSocketStopMatchBackfillRequest() = default; - - inline const std::string &GetGameSessionArn() const { return m_gameSessionArn; } - inline const std::string &GetMatchmakingConfigurationArn() const { return m_matchmakingConfigurationArn; } - inline const std::string &GetTicketId() const { return m_ticketId; } - - inline void SetGameSessionArn(const std::string &gameSessionArn) { m_gameSessionArn = gameSessionArn; } - inline void SetMatchmakingConfigurationArn(const std::string &matchmakingConfigurationArn) { m_matchmakingConfigurationArn = matchmakingConfigurationArn; } - inline void SetTicketId(const std::string &ticketId) { m_ticketId = ticketId; } - - inline WebSocketStopMatchBackfillRequest &WithMatchmakingConfigurationArn(const std::string &matchmakingConfigurationArn) { - SetMatchmakingConfigurationArn(matchmakingConfigurationArn); - return *this; - } - inline WebSocketStopMatchBackfillRequest &WithGameSessionArn(const std::string &gameSessionArn) { - SetGameSessionArn(gameSessionArn); - return *this; - } - inline WebSocketStopMatchBackfillRequest &WithTicketId(const std::string &ticketId) { - SetTicketId(ticketId); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const WebSocketStopMatchBackfillRequest &stopMatchBackfillMessage); - -protected: - virtual bool Serialize(rapidjson::Writer *writer) const; - virtual bool Deserialize(const rapidjson::Value &obj); - -private: - static constexpr const char *STOP_MATCH_BACKFILL = "StopMatchBackfill"; - static constexpr const char *GAME_SESSION_ARN = "GameSessionArn"; - static constexpr const char *MATCHMAKING_CONFIG_ARN = "MatchmakingConfigurationArn"; - static constexpr const char *TICKET_ID = "TicketId"; - - std::string m_gameSessionArn; - std::string m_matchmakingConfigurationArn; - std::string m_ticketId; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketDescribePlayerSessionsResponse.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketDescribePlayerSessionsResponse.h deleted file mode 100644 index 51896cdc..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketDescribePlayerSessionsResponse.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * WebSocketDescribePlayerSessionsRequest Response. This response is sent to the Amazon GameLift Servers WebSocket - * during a DescribePlayerSessions call - */ -class WebSocketDescribePlayerSessionsResponse : public Message { -public: - WebSocketDescribePlayerSessionsResponse() { SetAction(ACTION); }; - WebSocketDescribePlayerSessionsResponse(const WebSocketDescribePlayerSessionsResponse &) = default; - WebSocketDescribePlayerSessionsResponse(WebSocketDescribePlayerSessionsResponse &&) = default; - WebSocketDescribePlayerSessionsResponse &operator=(const WebSocketDescribePlayerSessionsResponse &) = default; - WebSocketDescribePlayerSessionsResponse &operator=(WebSocketDescribePlayerSessionsResponse &&) = default; - ~WebSocketDescribePlayerSessionsResponse() = default; - - inline const std::string &GetNextToken() const { return m_nextToken; } - - inline const std::vector &GetPlayerSessions() const { return m_playerSessions; } - - inline void SetNextToken(const std::string &nextToken) { m_nextToken = nextToken; } - - inline void SetPlayerSessions(const std::vector &playerSessions) { m_playerSessions = playerSessions; } - - inline WebSocketDescribePlayerSessionsResponse &WithNextToken(const std::string &nextToken) { - SetNextToken(nextToken); - return *this; - } - - inline WebSocketDescribePlayerSessionsResponse &WithPlayerSessions(const std::vector &playerSessions) { - SetPlayerSessions(playerSessions); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const WebSocketDescribePlayerSessionsResponse &describePlayerSessionsResponse); - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "DescribePlayerSessions"; - - static constexpr const char *PLAYER_SESSIONS = "PlayerSessions"; - static constexpr const char *NEXT_TOKEN = "NextToken"; - - std::vector m_playerSessions; - std::string m_nextToken; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketGetComputeCertificateResponse.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketGetComputeCertificateResponse.h deleted file mode 100644 index 24c07237..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketGetComputeCertificateResponse.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * WebSocketDescribePlayerSessionsRequest Response. This response is sent to the Amazon GameLift Servers WebSocket - * during a DescribePlayerSessions call - */ -class WebSocketGetComputeCertificateResponse : public Message { -public: - WebSocketGetComputeCertificateResponse() { SetAction(ACTION); }; - WebSocketGetComputeCertificateResponse(const WebSocketGetComputeCertificateResponse &) = default; - WebSocketGetComputeCertificateResponse(WebSocketGetComputeCertificateResponse &&) = default; - WebSocketGetComputeCertificateResponse &operator=(const WebSocketGetComputeCertificateResponse &) = default; - WebSocketGetComputeCertificateResponse &operator=(WebSocketGetComputeCertificateResponse &&) = default; - ~WebSocketGetComputeCertificateResponse() = default; - - inline const std::string &GetComputeName() const { return m_computeName; } - - inline void SetComputeName(const std::string &computeName) { m_computeName = computeName; } - - inline WebSocketGetComputeCertificateResponse &WithComputeName(const std::string &computeName) { - SetComputeName(computeName); - return *this; - } - - inline const std::string &GetCertificatePath() const { return m_certificatePath; } - - inline void SetCertificatePath(const std::string &certificatePath) { m_certificatePath = certificatePath; } - - inline WebSocketGetComputeCertificateResponse &WithCertificatePath(const std::string &certificatePath) { - SetCertificatePath(certificatePath); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const WebSocketGetComputeCertificateResponse &webSocketGetComputeCertificateResponse); - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "GetComputeCertificate"; - - static constexpr const char *COMPUTE_NAME = "ComputeName"; - static constexpr const char *CERTIFICATE_PATH = "CertificatePath"; - - std::string m_computeName; - std::string m_certificatePath; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketGetFleetRoleCredentialsResponse.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketGetFleetRoleCredentialsResponse.h deleted file mode 100644 index 6786ee20..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketGetFleetRoleCredentialsResponse.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class WebSocketGetFleetRoleCredentialsResponse : public Message { -public: - WebSocketGetFleetRoleCredentialsResponse() : m_expiration(-1) { SetAction(ACTION); }; - - WebSocketGetFleetRoleCredentialsResponse(const WebSocketGetFleetRoleCredentialsResponse &) = default; - - WebSocketGetFleetRoleCredentialsResponse(WebSocketGetFleetRoleCredentialsResponse &&) = default; - - WebSocketGetFleetRoleCredentialsResponse &operator=(const WebSocketGetFleetRoleCredentialsResponse &) = default; - - WebSocketGetFleetRoleCredentialsResponse &operator=(WebSocketGetFleetRoleCredentialsResponse &&) = default; - - virtual ~WebSocketGetFleetRoleCredentialsResponse() = default; - - inline const std::string &GetAssumedRoleUserArn() const { return m_assumedRoleUserArn; } - - inline void SetAssumedRoleUserArn(const std::string &assumedRoleUserArn) { m_assumedRoleUserArn = assumedRoleUserArn; } - - inline WebSocketGetFleetRoleCredentialsResponse &WithAssumedRoleUserArn(const std::string &assumedRoleUserArn) { - SetAssumedRoleUserArn(assumedRoleUserArn); - return *this; - } - - inline const std::string &GetAssumedRoleId() const { return m_assumedRoleId; } - - inline void SetAssumedRoleId(const std::string &assumedRoleId) { m_assumedRoleId = assumedRoleId; } - - inline WebSocketGetFleetRoleCredentialsResponse &WithAssumedRoleId(const std::string &assumedRoleId) { - SetAssumedRoleId(assumedRoleId); - return *this; - } - - inline const std::string &GetAccessKeyId() const { return m_accessKeyId; } - - inline void SetAccessKeyId(const std::string &accessKeyId) { m_accessKeyId = accessKeyId; } - - inline WebSocketGetFleetRoleCredentialsResponse &WithAccessKeyId(const std::string &accessKeyId) { - SetAccessKeyId(accessKeyId); - return *this; - } - - inline const std::string &GetSecretAccessKey() const { return m_secretAccessKey; } - - inline void SetSecretAccessKey(const std::string &secretAccessKey) { m_secretAccessKey = secretAccessKey; } - - inline WebSocketGetFleetRoleCredentialsResponse &WithSecretAccessKey(const std::string &secretAccessKey) { - SetSecretAccessKey(secretAccessKey); - return *this; - } - - inline const std::string &GetSessionToken() const { return m_sessionToken; } - - inline void SetSessionToken(const std::string &sessionToken) { m_sessionToken = sessionToken; } - - inline WebSocketGetFleetRoleCredentialsResponse &WithSessionToken(const std::string &sessionToken) { - SetSessionToken(sessionToken); - return *this; - } - - inline int64_t GetExpiration() const { return m_expiration; } - - inline void SetExpiration(int64_t expiration) { m_expiration = expiration; } - - inline WebSocketGetFleetRoleCredentialsResponse &WithExpiration(int64_t expiration) { - SetExpiration(expiration); - return *this; - } - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "GetFleetRoleCredentials"; - - static constexpr const char *ASSUMED_ROLE_USER_ARN = "AssumedRoleUserArn"; - static constexpr const char *ASSUMED_ROLE_ID = "AssumedRoleId"; - static constexpr const char *ACCESS_KEY_ID = "AccessKeyId"; - static constexpr const char *SECRET_ACCESS_KEY = "SecretAccessKey"; - static constexpr const char *SESSION_TOKEN = "SessionToken"; - static constexpr const char *EXPIRATION = "Expiration"; - - std::string m_assumedRoleUserArn; - std::string m_assumedRoleId; - std::string m_accessKeyId; - std::string m_secretAccessKey; - std::string m_sessionToken; - int64_t m_expiration; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketStartMatchBackfillResponse.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketStartMatchBackfillResponse.h deleted file mode 100644 index 90c30229..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/model/response/WebSocketStartMatchBackfillResponse.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * WebSocketStartMatchBackfillRequest Response. This response is sent to the Amazon GameLift Servers WebSocket - * during a DescribePlayerSessions call - */ -class WebSocketStartMatchBackfillResponse : public Message { -public: - WebSocketStartMatchBackfillResponse() { SetAction(ACTION); }; - WebSocketStartMatchBackfillResponse(const WebSocketStartMatchBackfillResponse &) = default; - WebSocketStartMatchBackfillResponse(WebSocketStartMatchBackfillResponse &&) = default; - WebSocketStartMatchBackfillResponse &operator=(const WebSocketStartMatchBackfillResponse &) = default; - WebSocketStartMatchBackfillResponse &operator=(WebSocketStartMatchBackfillResponse &&) = default; - ~WebSocketStartMatchBackfillResponse() = default; - - inline const std::string &GetTicketId() const { return m_ticketId; } - - inline void SetTicketId(const std::string &ticketId) { m_ticketId = ticketId; } - - inline WebSocketStartMatchBackfillResponse &WithTicketId(const std::string &ticketId) { - SetTicketId(ticketId); - return *this; - } - - friend std::ostream &operator<<(std::ostream &os, const WebSocketStartMatchBackfillResponse &describePlayerSessionsResponse); - -protected: - bool Serialize(rapidjson::Writer *writer) const override; - bool Deserialize(const rapidjson::Value &value) override; - -private: - static constexpr const char *ACTION = "StartMatchBackfill"; - - static constexpr const char *TICKET_ID = "TicketId"; - - std::string m_ticketId; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/GameLiftWebSocketClientManager.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/GameLiftWebSocketClientManager.h deleted file mode 100644 index 38ab7a9f..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/GameLiftWebSocketClientManager.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Class Managing a single WebSocketClientWrapper, enabling connection and communication with - * Amazon GameLift Servers - */ -class GameLiftWebSocketClientManager { -public: - GameLiftWebSocketClientManager(std::shared_ptr webSocketClientWrapper) : m_webSocketClientWrapper(webSocketClientWrapper) {} - - ~GameLiftWebSocketClientManager() = default; - - inline bool IsConnected() { return m_webSocketClientWrapper->IsConnected(); } - - Aws::GameLift::GenericOutcome Connect(std::string websocketUrl, const std::string &authToken, const std::string &processId, const std::string &hostId, - const std::string &fleetId, const std::map &sigV4QueryParameters = {}); - // Messages are synchronously sent and a response is waited for. - GenericOutcome SendSocketMessage(Message &message); - void Disconnect(); - -private: - static bool EndsWith(const std::string &actualString, const std::string &ending); - - static constexpr const char *PID_KEY = "pID"; - static constexpr const char *SDK_VERSION_KEY = "sdkVersion"; - static constexpr const char *FLAVOR_KEY = "sdkLanguage"; - static constexpr const char *AUTH_TOKEN_KEY = "Authorization"; - static constexpr const char *COMPUTE_ID_KEY = "ComputeId"; - static constexpr const char *FLEET_ID_KEY = "FleetId"; - static constexpr const char *IDEMPOTENCY_TOKEN_KEY = "IdempotencyToken"; - - static constexpr const char *REQUIRED_URL_ENDING = "/"; - - // The WebSocketClient that this class is managing. - std::shared_ptr m_webSocketClientWrapper; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/IGameLiftMessageHandler.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/IGameLiftMessageHandler.h deleted file mode 100644 index 5530fbd1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/IGameLiftMessageHandler.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -using namespace Aws::GameLift::Server::Model; - -/** - * Interface for a class that handles Messages from the Amazon GameLift Servers WebSocket. - * Currently Implemented by GameLiftServerState - */ -class IGameLiftMessageHandler { -public: - virtual void OnStartGameSession(GameSession &gameSession) = 0; - virtual void OnUpdateGameSession(UpdateGameSession &gameSession) = 0; - virtual void OnTerminateProcess(long terminationTime) = 0; - virtual void OnRefreshConnection(const std::string &refreshConnectionEndpoint, const std::string &authToken) = 0; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/IWebSocketClientWrapper.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/IWebSocketClientWrapper.h deleted file mode 100644 index dfb960a4..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/IWebSocketClientWrapper.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Interface for a class that wraps a websocket implementation. - */ -class IWebSocketClientWrapper { -public: - virtual Aws::GameLift::GenericOutcome Connect(const Uri &uri) = 0; - virtual Aws::GameLift::GenericOutcome SendSocketMessage(const std::string &requestId, const std::string &message) = 0; - virtual void Disconnect() = 0; - virtual void RegisterGameLiftCallback(const std::string &gameLiftEvent, const std::function &callback) = 0; - virtual bool IsConnected() = 0; - - virtual ~IWebSocketClientWrapper() = default; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/WebSocketppClientWrapper.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/WebSocketppClientWrapper.h deleted file mode 100644 index d2b8a249..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/WebSocketppClientWrapper.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wshadow" -#endif -#include -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif - -namespace Aws { -namespace GameLift { -namespace Internal { -typedef websocketpp::client WebSocketppClientType; - -/** - * Implementation of a WebSocketClientWrapper for the Websocketpp Library. - * https://github.com/zaphoyd/websocketpp - */ -class WebSocketppClientWrapper : public IWebSocketClientWrapper { -public: - WebSocketppClientWrapper(std::shared_ptr webSocketClient); - - Aws::GameLift::GenericOutcome Connect(const Uri &uri) override; - Aws::GameLift::GenericOutcome SendSocketMessage(const std::string &requestId, const std::string &message) override; - void Disconnect() override; - void RegisterGameLiftCallback(const std::string &gameLiftEvent, const std::function &callback) override; - bool IsConnected() override; - - ~WebSocketppClientWrapper(); - -private: - const int WEBSOCKET_OPEN_HANDSHAKE_TIMEOUT_MILLIS = 20000; // 20 seconds - const int SERVICE_CALL_TIMEOUT_MILLIS = 20000; // 20 seconds - const int OK_STATUS_CODE = 200; - const int WAIT_FOR_RECONNECT_RETRY_DELAY_SECONDS = 5; - const int WAIT_FOR_RECONNECT_MAX_RETRIES = 180 / WAIT_FOR_RECONNECT_RETRY_DELAY_SECONDS; // retry up to 3 minutes - - // The WebSocketpp objects this class wraps - std::shared_ptr m_webSocketClient; - WebSocketppClientType::connection_ptr m_connection; - std::unique_ptr m_socket_thread_1; - std::unique_ptr m_socket_thread_2; - - // synchronization variables - std::mutex m_lock; - std::condition_variable m_cond; - bool m_connectionStateChanged; - websocketpp::lib::error_code m_fail_error_code; - websocketpp::http::status_code::value m_fail_response_code; - - std::map> m_eventHandlers; - std::mutex m_requestToPromiseLock; - std::map> m_requestIdToPromise; - Uri m_uri; - - // Helper methods - WebSocketppClientType::connection_ptr PerformConnect(const Uri &uri, websocketpp::lib::error_code &error); - Aws::GameLift::GenericOutcome SendSocketMessageAsync(const std::string &message); - - // CallBacks - void OnConnected(websocketpp::connection_hdl connection); - void OnMessage(websocketpp::connection_hdl connection, websocketpp::config::asio_client::message_type::ptr msgPtr); - websocketpp::lib::shared_ptr OnTlsInit(websocketpp::connection_hdl hdl); - void OnClose(websocketpp::connection_hdl connection); - void OnError(websocketpp::connection_hdl connection); - void OnInterrupt(websocketpp::connection_hdl connection); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/CreateGameSessionCallback.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/CreateGameSessionCallback.h deleted file mode 100644 index c7af95f0..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/CreateGameSessionCallback.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Class representing a default callback for CreateGameSession (action) - */ -class CreateGameSessionCallback { -public: - // Constructors - CreateGameSessionCallback(IGameLiftMessageHandler *gameLiftMessageHandler) : m_gameLiftMessageHandler(gameLiftMessageHandler){}; - - ~CreateGameSessionCallback() = default; - - // Methods - - /** - * Callback to trigger on websocket "CreateGameSession" action - * @param data - * @return - */ - GenericOutcome OnStartGameSession(const std::string &data); - - // Constants - static constexpr const char *CREATE_GAME_SESSION = "CreateGameSession"; - -private: - IGameLiftMessageHandler *m_gameLiftMessageHandler; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/DescribePlayerSessionsCallback.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/DescribePlayerSessionsCallback.h deleted file mode 100644 index fedda8f3..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/DescribePlayerSessionsCallback.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * Class representing a default callback for DescribePlayerSessions (action) - */ -class DescribePlayerSessionsCallback { -public: - // Constructors - DescribePlayerSessionsCallback(){}; - ~DescribePlayerSessionsCallback() = default; - - // Methods - GenericOutcome OnDescribePlayerSessions(const std::string &data); - - static constexpr const char *DESCRIBE_PLAYER_SESSIONS = "DescribePlayerSessions"; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/GetComputeCertificateCallback.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/GetComputeCertificateCallback.h deleted file mode 100644 index 0524211c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/GetComputeCertificateCallback.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * Class representing a default callback for GetComputeCertificate (action) - */ -class GetComputeCertificateCallback { -public: - // Constructors - GetComputeCertificateCallback(){}; - - ~GetComputeCertificateCallback() = default; - - // Methods - GenericOutcome OnGetComputeCertificateCallback(const std::string &data); - - static constexpr const char *GET_COMPUTE_CERTIFICATE = "GetComputeCertificate"; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/GetFleetRoleCredentialsCallback.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/GetFleetRoleCredentialsCallback.h deleted file mode 100644 index 0e8b6730..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/GetFleetRoleCredentialsCallback.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * Class representing a default callback for GetFleetRoleCredentials (action) - */ -class GetFleetRoleCredentialsCallback { -public: - // Constructors - GetFleetRoleCredentialsCallback(){}; - - ~GetFleetRoleCredentialsCallback() = default; - - // Methods - GenericOutcome OnGetFleetRoleCredentials(const std::string &data); - - static constexpr const char *GET_FLEET_ROLE_CREDENTIALS = "GetFleetRoleCredentials"; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/RefreshConnectionCallback.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/RefreshConnectionCallback.h deleted file mode 100644 index 6f564732..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/RefreshConnectionCallback.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * Class representing a default callback for RefreshConnectionMessage - */ -class RefreshConnectionCallback { -public: - // Constructors - RefreshConnectionCallback(IGameLiftMessageHandler *gameLiftMessageHandler) : m_gameLiftMessageHandler(gameLiftMessageHandler){}; - - ~RefreshConnectionCallback() = default; - - // Methods - GenericOutcome OnRefreshConnection(const std::string &data); - - static constexpr const char *REFRESH_CONNECTION = "RefreshConnection"; - IGameLiftMessageHandler *m_gameLiftMessageHandler; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/StartMatchBackfillCallback.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/StartMatchBackfillCallback.h deleted file mode 100644 index fcdaef88..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/StartMatchBackfillCallback.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -/** - * Class representing a default callback for StartMatchBackfill (action) - */ -class StartMatchBackfillCallback { -public: - // Constructors - StartMatchBackfillCallback(){}; - ~StartMatchBackfillCallback() = default; - - // Methods - GenericOutcome OnStartMatchBackfill(const std::string &data); - - static constexpr const char *START_MATCH_BACKFILL = "StartMatchBackfill"; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/TerminateProcessCallback.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/TerminateProcessCallback.h deleted file mode 100644 index 601c64c9..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/TerminateProcessCallback.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Class representing a default callback for TerminateProcess (action) - */ -class TerminateProcessCallback { -public: - // Constructors - TerminateProcessCallback(IGameLiftMessageHandler *gameLiftMessageHandler) : m_gameLiftMessageHandler(gameLiftMessageHandler){}; - - ~TerminateProcessCallback() = default; - - // Methods - GenericOutcome OnTerminateProcess(const std::string &data); - - static constexpr const char *TERMINATE_PROCESS = "TerminateProcess"; - -private: - IGameLiftMessageHandler *m_gameLiftMessageHandler; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/UpdateGameSessionCallback.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/UpdateGameSessionCallback.h deleted file mode 100644 index da49b6ea..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/network/callback/UpdateGameSessionCallback.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -/** - * Class representing a default callback for CreateGameSession (action) - */ -class UpdateGameSessionCallback { -public: - // Constructors - UpdateGameSessionCallback(IGameLiftMessageHandler *gameLiftMessageHandler) : m_gameLiftMessageHandler(gameLiftMessageHandler){}; - - ~UpdateGameSessionCallback() = default; - - // Methods - - /** - * Callback to trigger on websocket "UpdateGameSession" action - * @param data - * @return - */ - GenericOutcome OnUpdateGameSession(const std::string &data); - - // Constants - static constexpr const char *UPDATE_GAME_SESSION = "UpdateGameSession"; - -private: - IGameLiftMessageHandler *m_gameLiftMessageHandler; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/GeometricBackoffRetryStrategy.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/GeometricBackoffRetryStrategy.h deleted file mode 100644 index f3feca56..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/GeometricBackoffRetryStrategy.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class GeometricBackoffRetryStrategy : public RetryStrategy { -public: - GeometricBackoffRetryStrategy() - : m_maxRetries(DEFAULT_MAX_RETRIES), m_initialRetryIntervalSeconds(DEFAULT_INITIAL_RETRY_INTERVAL_SECONDS), - m_maxRetryIntervalSeconds(MAX_RETRY_INTERVAL_SECONDS), m_retryFactor(DEFAULT_RETRY_FACTOR) {} - - void apply(const std::function &callable) override; - -private: - static constexpr const int DEFAULT_MAX_RETRIES = 7; - static constexpr const int DEFAULT_INITIAL_RETRY_INTERVAL_SECONDS = 4; - static constexpr const int MAX_RETRY_INTERVAL_SECONDS = 32; - static constexpr const int DEFAULT_RETRY_FACTOR = 2; - - int m_maxRetries; - int m_initialRetryIntervalSeconds; - int m_maxRetryIntervalSeconds; - int m_retryFactor; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/JitteredGeometricBackoffRetryStrategy.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/JitteredGeometricBackoffRetryStrategy.h deleted file mode 100644 index 74b9014a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/JitteredGeometricBackoffRetryStrategy.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -#pragma once -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class JitteredGeometricBackoffRetryStrategy : public RetryStrategy { -public: - JitteredGeometricBackoffRetryStrategy() - : m_maxRetries(DEFAULT_MAX_RETRIES), m_initialRetryIntervalMs(DEFAULT_INITIAL_RETRY_INTERVAL_MS), m_retryFactor(DEFAULT_RETRY_FACTOR), - m_minRetryDelayMs(DEFAULT_MIN_RETRY_DELAY_MS) {} - - void apply(const std::function &callable) override; - -private: - static constexpr const int DEFAULT_MAX_RETRIES = 5; - static constexpr const int DEFAULT_INITIAL_RETRY_INTERVAL_MS = 1000; - static constexpr const int DEFAULT_MIN_RETRY_DELAY_MS = 100; - static constexpr const int DEFAULT_RETRY_FACTOR = 2; - - int m_maxRetries; - int m_initialRetryIntervalMs; - int m_retryFactor; - int m_minRetryDelayMs; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/RetryStrategy.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/RetryStrategy.h deleted file mode 100644 index c18dc170..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/RetryStrategy.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { -class RetryStrategy { -public: - virtual void apply(const std::function &callable) = 0; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/RetryingCallable.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/RetryingCallable.h deleted file mode 100644 index 5fd77fc8..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/retry/RetryingCallable.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class RetryingCallable { -public: - class Builder { - public: - Builder &WithRetryStrategy(RetryStrategy *retryStrategy); - Builder &WithCallable(const std::function &callable); - RetryingCallable Build() const; - - private: - std::function m_callable; - // Note: The RetryStrategy is not owned by the builder or the RetryingCallable - RetryStrategy *m_retryStrategy; - }; - - void call(); - -private: - RetryingCallable(RetryStrategy &retryStrategy, std::function callable); - - RetryStrategy &m_retryStrategy; - std::function m_callable; -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/AwsCredentials.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/AwsCredentials.h deleted file mode 100644 index bc960093..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/AwsCredentials.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class AwsCredentials { -public: - std::string AccessKey; - std::string SecretKey; - std::string SessionToken; - - AwsCredentials(){} - - AwsCredentials(const std::string &accessKey, const std::string &secretKey, - const std::string &sessionToken) : - AccessKey(accessKey), SecretKey(secretKey), SessionToken(sessionToken) {} -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws - diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/AwsSigV4Utility.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/AwsSigV4Utility.h deleted file mode 100644 index e5206529..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/AwsSigV4Utility.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class AwsSigV4Utility { -public: - static Aws::GameLift::Outcome, std::string> GenerateSigV4QueryParameters(const SigV4Parameters ¶meters); - -private: - static void ValidateParameters(const SigV4Parameters ¶meters); - - static std::string GenerateSignature( - const std::string ®ion, - const std::string &secretKey, - const std::string &formattedRequestDateTime, - const std::string &serviceName, - const std::string &stringToSign); - - static std::map GenerateSigV4QueryParameters( - const std::string &credential, - const std::string &formattedRequestDateTime, - const std::string &sessionToken, - const std::string &signature); - - static std::string ToSortedEncodedQueryString(const std::map &queryParameters); - - /** - * @brief This method uses OpenSSL EVP interface to compute the SHA-256 hash of the input string. - * - * References: - * - AWS SigV4 Documentation: https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html - * - OpenSSL: https://docs.openssl.org/3.1/man3/EVP_DigestInit/ - * - SHA-256: https://datatracker.ietf.org/doc/html/rfc4634 - * - * @param data The input string to be hashed. - * @return std::string The hexadecimal string representing the SHA-256 hash of the input. - */ - static std::string ComputeSha256Hash(const std::string &data); - - /** - * @brief This method uses OpenSSL EVP_MAC interface to compute the HMAC (Hash-based Message Authentication Code) using the SHA-256 algorithm. - * - * References: - * - AWS SigV4: Documentation: https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html - * - OpenSSL: https://docs.openssl.org/3.1/man3/EVP_DigestInit/ - * - HMAC: https://datatracker.ietf.org/doc/html/rfc2104 - * - SHA-256: https://datatracker.ietf.org/doc/html/rfc4634 - * - * @param key The secret key used for the HMAC operation. - * @param data The input data to be authenticated. - * @return std::vector The computed HMAC-SHA256 as a byte vector. - */ - static std::vector ComputeHmacSha256(const std::vector &key, const std::string &data); - - static std::string ToHex(const std::vector &hashBytes); - - static constexpr const char *DateFormat = "%Y%m%d"; - static constexpr const char *DateTimeFormat = "%Y%m%dT%H%M%SZ"; - static constexpr const char *ServiceName = "gamelift"; - static constexpr const char *TerminationString = "aws4_request"; - static constexpr const char *SignatureSecretKeyPrefix = "AWS4"; - static constexpr const char *Algorithm = "AWS4-HMAC-SHA256"; - static constexpr const char *AuthorizationKey = "Authorization"; - static constexpr const char *AuthorizationValue = "SigV4"; - static constexpr const char *AmzAlgorithmKey = "X-Amz-Algorithm"; - static constexpr const char *AmzCredentialKey = "X-Amz-Credential"; - static constexpr const char *AmzDateKey = "X-Amz-Date"; - static constexpr const char *AmzSecurityTokenHeadersKey = "X-Amz-Security-Token"; - static constexpr const char *AmzSignatureKey = "X-Amz-Signature"; -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerCredentialsFetcher.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerCredentialsFetcher.h deleted file mode 100644 index 912bd7ac..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerCredentialsFetcher.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class ContainerCredentialsFetcher { -private: - const std::string ContainerCredentialProviderUrl = "http://169.254.170.2"; - const std::string EnvironmentVariableContainerCredentialsRelativeUri = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; - - HttpClient &httpClient; - -public: - ContainerCredentialsFetcher(HttpClient &httpClient); - - Aws::GameLift::Outcome FetchContainerCredentials(); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws - diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerMetadataFetcher.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerMetadataFetcher.h deleted file mode 100644 index e05c7940..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerMetadataFetcher.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class ContainerMetadataFetcher { -private: - const std::string EnvironmentVariableContainerMetadataUri = "ECS_CONTAINER_METADATA_URI_V4"; - const std::string TaskMetadataRelativePath = "task"; - - HttpClient &httpClient; - -public: - ContainerMetadataFetcher(HttpClient &httpClient); - - Aws::GameLift::Outcome FetchContainerTaskMetadata(); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws - diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerTaskMetadata.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerTaskMetadata.h deleted file mode 100644 index 802d22e1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/ContainerTaskMetadata.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class ContainerTaskMetadata { -public: - std::string TaskId; - - ContainerTaskMetadata() {} - - ContainerTaskMetadata(const std::string &taskId) : - TaskId(taskId) {} - -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/SigV4Parameters.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/SigV4Parameters.h deleted file mode 100644 index f955241c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/security/SigV4Parameters.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -struct SigV4Parameters { - std::string AwsRegion; - AwsCredentials Credentials; - std::map QueryParams; - std::tm RequestTime; - - SigV4Parameters(const std::string &awsRegion, const class AwsCredentials &awsCredentials, - const std::map &queryParams, const tm &requestTime) - : - AwsRegion(awsRegion), Credentials(awsCredentials), QueryParams(queryParams), - RequestTime(requestTime) {} -}; -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/GuidGenerator.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/GuidGenerator.h deleted file mode 100644 index 486cc197..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/GuidGenerator.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class GuidGenerator { -public: - static std::string GenerateGuid(); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/HttpClient.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/HttpClient.h deleted file mode 100644 index dc1f422f..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/HttpClient.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class HttpResponse { -public: - int statusCode; - std::string body; - - bool IsSuccessfulStatusCode(); -}; - -class HttpClient { - -private: - static std::tuple GetHostAndPortAndPath(const std::string &url); - - static HttpResponse ParseHttpResponse(const std::string &response); - -public: - HttpClient() {}; - virtual ~HttpClient() = default; - - /** - * Sends an HTTP GET request to the specified URL. - * Note: This method does not support DNS Resolution nor HTTPS/TLS connections. - * @param url The URL to send the GET request to. - * @return An HttpResponse object containing the status code and body of the response. - * @throws std::runtime_error if there are errors during socket operations or invalid responses. - */ - virtual HttpResponse SendGetRequest(const std::string &url); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/JsonHelper.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/JsonHelper.h deleted file mode 100644 index 49687f04..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/JsonHelper.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -// Simple Utility Class with some methods to help with json parsing -class JsonHelper { -public: - static std::string SafelyDeserializeString(const rapidjson::Value &value, const char *key); - static void WriteNonEmptyString(rapidjson::Writer *writer, const char *key, const std::string &value); - - static int SafelyDeserializeInt(const rapidjson::Value &value, const char *key); - static void WritePositiveInt(rapidjson::Writer *writer, const char *key, int value); - - static int64_t SafelyDeserializeInt64(const rapidjson::Value &value, const char *key); - static void WritePositiveInt64(rapidjson::Writer *writer, const char *key, int64_t value); - - static Aws::GameLift::Server::LogParameters SafelyDeserializeLogParameters(const rapidjson::Value &value, const char *key); - static void WriteLogParameters(rapidjson::Writer *writer, const char *key, const Aws::GameLift::Server::LogParameters &value); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/LoggerHelper.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/LoggerHelper.h deleted file mode 100644 index 9dacb546..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/LoggerHelper.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class LoggerHelper { -#ifdef GAMELIFT_USE_STD -public: - static void InitializeLogger(const std::string& process_Id); -#else -public: - static void InitializeLogger(const char* process_Id); -#endif -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/RandomStringGenerator.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/RandomStringGenerator.h deleted file mode 100644 index f16130f2..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/RandomStringGenerator.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class RandomStringGenerator { -public: - static std::string GenerateRandomAlphaNumericString(const int stringLength); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/UriEncoder.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/UriEncoder.h deleted file mode 100644 index 7bf24dda..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/internal/util/UriEncoder.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Internal { - -class UriEncoder { -public: - static std::string UriEncode(const std::string &value); -}; - -} // namespace Internal -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ArithmeticMacros.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ArithmeticMacros.h deleted file mode 100644 index 616d9723..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ArithmeticMacros.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include - -/** - * INTERNAL: add expr to metric - */ -#define _GAMELIFT_METRICS_INTERNAL_ADD(metric, expr) \ - IF_CONSTEXPR(metric::Platform::bEnabled) { \ - if (metric::Instance().GetSampler().ShouldTakeSample()) { \ - auto *Processor = GameLiftMetricsGlobalProcessor(); \ - if (Processor) { \ - IF_CONSTEXPR( \ - ::Aws::GameLift::Metrics::Internal::IsSame< \ - metric::MetricType, ::Aws::GameLift::Metrics::Gauge>::value) { \ - Processor->Enqueue( \ - ::Aws::GameLift::Metrics::MetricMessage::GaugeAdd( \ - metric::Instance(), (expr))); \ - } \ - else { \ - Processor->Enqueue( \ - ::Aws::GameLift::Metrics::MetricMessage::CounterAdd( \ - metric::Instance(), (expr))); \ - } \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } \ - } - -/** - * @brief This macros adds value to a gauge or a counter. - * - * Expression always executed. - * - * @param metric Gauge or counter to add to. - * @param expr Value to add. - */ -#define GAMELIFT_METRICS_ADD(metric, expr) \ - do { \ - static_assert(Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge, \ - Aws::GameLift::Metrics::Counter>::value, \ - "Metric '" #metric \ - "' is not a gauge or counter. GAMELIFT_METRICS_ADD only " \ - "supports gauges and counters."); \ - auto Value = (expr); \ - _GAMELIFT_METRICS_INTERNAL_ADD(metric, Value) \ - } while (0) - -/** - * @brief This macro subtracts value from a gauge. - * - * Expression always executed. - * - * @param metric Gauge to subtract from. - * @param expr Value to subtract. - */ -#define GAMELIFT_METRICS_SUBTRACT(metric, expr) \ - do { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge>::value, \ - "Metric '" #metric "' is not a gauge. GAMELIFT_METRICS_SUBTRACT " \ - "only supports gauges."); \ - auto Value = (expr); \ - _GAMELIFT_METRICS_INTERNAL_ADD(metric, -(Value)) \ - } while (0) - -/** - * @brief This macro adds value to a gauge or a counter. - * - * Only executes expression when sampled. - * - * @param metric Gauge or counter to add to. - * @param expr Value to add. - */ -#define GAMELIFT_METRICS_ADD_SAMPLED(metric, expr) \ - do { \ - static_assert(Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge, \ - Aws::GameLift::Metrics::Counter>::value, \ - "Metric '" #metric \ - "' is not a gauge or counter. GAMELIFT_METRICS_ADD_SAMPLED " \ - "only supports gauges and counters."); \ - _GAMELIFT_METRICS_INTERNAL_ADD(metric, expr) \ - } while (0) - -/** - * @brief This macro subtracts value from a gauge. - * - * Only executes expression when sampled. - * - * @param metric Gauge to subtract from. - * @param expr Value to subtract. - */ -#define GAMELIFT_METRICS_SUBTRACT_SAMPLED(metric, expr) \ - do { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge>::value, \ - "Metric '" #metric \ - "' is not a gauge. GAMELIFT_METRICS_SUBTRACT_SAMPLED only " \ - "supports gauges."); \ - _GAMELIFT_METRICS_INTERNAL_ADD(metric, -(expr)) \ - } while (0) - -/** - * @brief This macro increments a gauge or a counter. - * - * @param metric Gauge or counter to increment. - */ -#define GAMELIFT_METRICS_INCREMENT(metric) \ - do { \ - static_assert(Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge, \ - Aws::GameLift::Metrics::Counter>::value, \ - "Metric '" #metric \ - "' is not a gauge or counter. GAMELIFT_METRICS_INCREMENT " \ - "only supports gauges and counters."); \ - _GAMELIFT_METRICS_INTERNAL_ADD(metric, 1) \ - } while (0) - -/** - * @brief This macro decrements a gauge. - * - * @param metric Gauge or counter to decrement. - */ -#define GAMELIFT_METRICS_DECREMENT(metric) \ - do { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge>::value, \ - "Metric '" #metric "' is not a gauge. GAMELIFT_METRICS_DECREMENT " \ - "only supports gauges."); \ - _GAMELIFT_METRICS_INTERNAL_ADD(metric, -1) \ - } while (0) - -/** - * @brief This macro counts a line hit. - * - * Alias for GAMELIFT_METRICS_INCREMENT - * - * @param metric Gauge or counter to increment. - */ -#define GAMELIFT_METRICS_COUNT_HIT(metric) \ - do { \ - static_assert(Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge, \ - Aws::GameLift::Metrics::Counter>::value, \ - "Metric '" #metric \ - "' is not a gauge or counter. GAMELIFT_METRICS_COUNT_HIT " \ - "only supports gauges and counters."); \ - _GAMELIFT_METRICS_INTERNAL_ADD(metric, 1) \ - } while (0) - -/** - * @brief This macro counts number of times an expression runs. For example, - * a function call. - * - * @param metric Gauge or counter to increment. - * @param expr Expression to count. - * @returns Result of expr. - */ -#define GAMELIFT_METRICS_COUNT_EXPR(metric, expr) \ - [&]() { \ - static_assert(Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge, \ - Aws::GameLift::Metrics::Counter>::value, \ - "Metric '" #metric \ - "' is not a gauge or counter. GAMELIFT_METRICS_COUNT_EXPR " \ - "only supports gauges and counters."); \ - _GAMELIFT_METRICS_INTERNAL_ADD(metric, 1); \ - return (expr); \ - }() diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Combiner.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Combiner.h deleted file mode 100644 index ae2a4e73..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Combiner.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -#include -#include -#include - -using namespace ::Aws::GameLift::Metrics; - -/** - * Combines metrics logged in the current capture period. - */ -class Combiner final { -public: - using CombinedMessagesMap = - std::unordered_map; - -public: - void Add(MetricMessage message); - void Clear(); - - bool IsEmpty() const { return GetSize() == 0; } - std::size_t GetSize() const { return m_combinedMessages.size(); } - -private: - void UpdateGauge(const MetricMessage &newMessage); - void UpdateCounter(MetricMessage &existing, const MetricMessage &newMessage); - void UpdateTimer(MetricMessage &existing, const MetricMessage &newMessage); - -private: - CombinedMessagesMap m_combinedMessages; - std::unordered_map m_timerSampleCount; - - /** - * We keep track of gauge values during the lifetime of the program. - * This allows us to detect whether a gauge has changed since the last - * collection update. If it has, we can submit it to combined messages to be - * emitted in the next statsd packet. - * - * This allows us to use the 'set gauge' syntax: foo:10|g. This allows us to - * support sending gauges to StatsD receivers that do not have long-term - * internal state, such as the OpenTelemetry collector. - */ - CombinedMessagesMap m_gaugeHistory; - - /** - * STL iterator support. - * - * For compatibility with STL and gtest. - */ -public: - /** - * @brief STL iterator supporting const and mutable iteration via ValueT - * parameter. - * - * @param ValueT The value type we return. Used to customize for const and - * mutable iteration. - * @param BaseIterator The iterator of the underlying deduped message map. - */ - template class Iterator final { - /** - * STL type defs. - */ - public: - using iterator_category = std::forward_iterator_tag; - using difference_type = std::ptrdiff_t; - using value_type = ValueT; - using pointer = value_type *; - using reference = value_type &; - - public: - Iterator(BaseIterator base) : m_base(base) {} - - reference operator*() { return m_base->second; } - pointer operator->() { return &m_base->second; } - - reference operator*() const { return m_base->second; } - pointer operator->() const { return &m_base->second; } - - // Pre-increment - Iterator &operator++() { - ++m_base; - return *this; - } - // Post-increment - Iterator operator++(int) { - Iterator temp = *this; - ++(*this); - return temp; - } - - friend bool operator==(const Iterator &a, const Iterator &b) { - return a.m_base == b.m_base; - }; - friend bool operator!=(const Iterator &a, const Iterator &b) { - return !(a == b); - }; - - private: - BaseIterator m_base; - }; - - using value_type = MetricMessage; - using iterator = Iterator; - using const_iterator = - Iterator; - - iterator begin() { return iterator(std::begin(m_combinedMessages)); } - iterator end() { return iterator(std::end(m_combinedMessages)); } - - const_iterator begin() const { return cbegin(); } - const_iterator end() const { return cend(); } - - const_iterator cbegin() const { - return const_iterator(m_combinedMessages.begin()); - } - const_iterator cend() const { - return const_iterator(m_combinedMessages.end()); - } - - std::size_t size() const { return GetSize(); } - bool empty() const { return IsEmpty(); } -}; \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/CrashReporterClient.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/CrashReporterClient.h deleted file mode 100644 index 0fff6fd5..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/CrashReporterClient.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -class CrashReporterClient { -private: - const std::string RegisterProcessUrlPath = "register"; - const std::string UpdateProcessUrlPath = "update"; - const std::string DeregisterProcessUrlPath = "deregister"; - const std::string ProcessPidParameterName = "process_pid"; - const std::string SessionIdParameterName = "session_id"; - - std::shared_ptr httpClient; - std::string baseUrl; - - bool isRetryableError(const std::string& errorMessage) const; - - void RegisterProcessWithRetries(); - -public: - CrashReporterClient(const std::string &host, int port); - CrashReporterClient(std::shared_ptr httpClient, const std::string &host, int port); - - void RegisterProcess(); - void TagGameSession(const std::string &sessionId); - void DeregisterProcess(); -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DefinitionMacros.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DefinitionMacros.h deleted file mode 100644 index 0dd6a3e4..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DefinitionMacros.h +++ /dev/null @@ -1,237 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -/** - * INTERNAL: declares a metric class - * - * @brief This macro generates a forward declaration for any classes or - * functions required by our implementation. - * - * Can be placed into headers safely. - */ -#define _GAMELIFT_INTERNAL_DECLARE_METRIC_CLASS(api, name, key, platform, \ - sampler_expr, type, ...) \ - class api name : public ::Aws::GameLift::Metrics::IMetric { \ - public: \ - using Platform = platform; \ - using MetricType = type; \ - using SamplerType = decltype(sampler_expr); \ - using DerivedMetricCollectionType = \ - decltype(Aws::GameLift::Metrics::CollectDerivedMetrics(__VA_ARGS__)); \ - \ - static name &Instance(); \ - \ - virtual ::Aws::GameLift::Metrics::MetricType \ - GetMetricType() const override { \ - return ::Aws::GameLift::Metrics::GetMetricType(); \ - } \ - virtual const char *GetKey() const override { return Key; } \ - virtual Aws::GameLift::Metrics::IDerivedMetricCollection & \ - GetDerivedMetrics() override { \ - return DerivedMetrics; \ - } \ - \ - virtual Aws::GameLift::Metrics::ISampler &GetSampler() override { \ - return Sampler; \ - } \ - \ - private: \ - const char *Key; \ - SamplerType Sampler; \ - DerivedMetricCollectionType DerivedMetrics; \ - \ - name() \ - : Key(key), Sampler(sampler_expr), \ - DerivedMetrics( \ - Aws::GameLift::Metrics::CollectDerivedMetrics(__VA_ARGS__)) {} \ - } - -/** - * INTERNAL: defines a metric class - * - * This implements any methods forward-declared by - * _GAMELIFT_INTERNAL_DECLARE_METRIC_CLASS. - * - * Intended for a single source file to define global state. - */ -#define _GAMELIFT_INTERNAL_DEFINE_METRIC_CLASS(metric) \ - metric &metric::Instance() { \ - static metric GlobalInstance; \ - return GlobalInstance; \ - } - -/** - * @brief This macro declares a gauge. - * - * Gauges are metrics that represent a snapshot of a single value like the - * player count or used memory. Once set, the value remains until modified - * again. - * - * Once declared, the gauge must be defined with GAMELIFT_METRICS_DEFINE_GAUGE. - * - * @param name The name of this gauge. - * @param key The key for the metric tied to this gauge. - * @param platform Platform to sample this gauge on. - * @param sampler The sampling strategy to use with this metric. - */ -#define GAMELIFT_METRICS_DECLARE_GAUGE(name, key, platform, sampler, ...) \ - _GAMELIFT_INTERNAL_DECLARE_METRIC_CLASS(, name, key, platform, sampler, \ - Aws::GameLift::Metrics::Gauge, \ - ##__VA_ARGS__) - -/** - * @brief This macro declares a gauge. - * - * Gauges are metrics that represent a snapshot of a single value like the - * player count or used memory. Once set, the value remains until modified - * again. - * - * Once declared, the gauge must be defined with GAMELIFT_METRICS_DEFINE_GAUGE. - * - * @param api Api export for metric class. - * @param name The name of this gauge. - * @param key The key for the metric tied to this gauge. - * @param platform Platform to sample this gauge on. - * @param sampler The sampling strategy to use with this metric. - */ -#define GAMELIFT_METRICS_DECLARE_GAUGE_API(api, name, key, platform, sampler, \ - ...) \ - _GAMELIFT_INTERNAL_DECLARE_METRIC_CLASS(api, name, key, platform, sampler, \ - Aws::GameLift::Metrics::Gauge, \ - ##__VA_ARGS__) - -/** - * @brief This macro defines a gauge. - * - * Prior to definition, the gauge must be declared with - * GAMELIFT_METRICS_DECLARE_GAUGE. - * - * @param metric A gauge declared via `GAMELIFT_METRICS_DECLARE_GAUGE`. - */ -#define GAMELIFT_METRICS_DEFINE_GAUGE(metric) \ - static_assert(Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge>::value, \ - "Metric '" #metric "' is not a gauge."); \ - _GAMELIFT_INTERNAL_DEFINE_METRIC_CLASS(metric) - -/** - * @brief This macro declares a counter. - * - * Counters are metrics that keep track of occurences over time, for example, - * the number of bytes sent, number of shots fired in-game, or the number of - * times a function was called. - * - * Once declared, the counter must be defined with - * GAMELIFT_METRICS_DEFINE_COUNTER. - * - * @param name The name of this counter. - * @param key The key for the metric tied to this counter. - * @param platform Platform to sample this counter on. - * @param sampler The sampling strategy to use with this metric. - */ -#define GAMELIFT_METRICS_DECLARE_COUNTER(name, key, platform, sampler) \ - _GAMELIFT_INTERNAL_DECLARE_METRIC_CLASS(, name, key, platform, sampler, \ - Aws::GameLift::Metrics::Counter) - -/** - * @brief This macro declares a counter. - * - * Counters are metrics that keep track of occurences over time, for example, - * the number of bytes sent, number of shots fired in-game, or the number of - * times a function was called. - * - * Once declared, the counter must be defined with - * GAMELIFT_METRICS_DEFINE_COUNTER. - * - * @param api Api export for metric class. - * @param name The name of this counter. - * @param key The key for the metric tied to this counter. - * @param platform Platform to sample this counter on. - * @param sampler The sampling strategy to use with this metric. - */ -#define GAMELIFT_METRICS_DECLARE_COUNTER_API(api, name, key, platform, \ - sampler) \ - _GAMELIFT_INTERNAL_DECLARE_METRIC_CLASS(api, name, key, platform, sampler, \ - Aws::GameLift::Metrics::Counter) - -/** - * @brief This macro defines a counter. - * - * The counter must be declared with GAMELIFT_METRICS_DECLARE_COUNTER first. - * - * @param metric A counter declared via `GAMELIFT_METRICS_DECLARE_COUNTER`. - */ -#define GAMELIFT_METRICS_DEFINE_COUNTER(metric) \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Counter>::value, \ - "Metric '" #metric "' is not a counter."); \ - _GAMELIFT_INTERNAL_DEFINE_METRIC_CLASS(metric) - -/** - * @brief This macro declares a timer. - * - * Timers are metrics that represent how long something takes, for example, how - * long a game tick takes, the duration of a user session, or the timing of a - * function. - * - * Once declared, the timer must be defined with GAMELIFT_METRICS_DEFINE_TIMER. - * - * @param name The name of this timer. - * @param key The key for the metric tied to this timer. - * @param platform Platform to sample this timer on. - * @param sampler The sampling strategy to use with this metric. - */ -#define GAMELIFT_METRICS_DECLARE_TIMER(name, key, platform, sampler, ...) \ - _GAMELIFT_INTERNAL_DECLARE_METRIC_CLASS(, name, key, platform, sampler, \ - Aws::GameLift::Metrics::Timer, \ - ##__VA_ARGS__) - -/** - * @brief This macro declares a timer. - * - * Timers are metrics that represent how long something takes, for example, how - * long a game tick takes, the duration of a user session, or the timing of a - * function. - * - * Once declared, the timer must be defined with GAMELIFT_METRICS_DEFINE_TIMER. - * - * @param api Api export for metric class. - * @param name The name of this timer. - * @param key The key for the metric tied to this timer. - * @param platform Platform to sample this timer on. - * @param sampler The sampling strategy to use with this metric. - */ -#define GAMELIFT_METRICS_DECLARE_TIMER_API(api, name, key, platform, sampler, \ - ...) \ - _GAMELIFT_INTERNAL_DECLARE_METRIC_CLASS(api, name, key, platform, sampler, \ - Aws::GameLift::Metrics::Timer, \ - ##__VA_ARGS__) - -/** - * @brief This macro defines a timer. - * - * The timer must be declared with GAMELIFT_METRICS_DECLARE_TIMER first. - * - * @param metric A timer declared via `GAMELIFT_METRICS_DECLARE_TIMER`. - */ -#define GAMELIFT_METRICS_DEFINE_TIMER(metric) \ - static_assert(Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Timer>::value, \ - "Metric '" #metric "' is not a timer."); \ - _GAMELIFT_INTERNAL_DEFINE_METRIC_CLASS(metric) diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Defs.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Defs.h deleted file mode 100644 index 96a05252..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Defs.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#if __cplusplus >= 201703L -#define GAMELIFT_METRICS_CPP_17 1 -#else -#define GAMELIFT_METRICS_CPP_17 0 -#endif - -// Prefer `if constexpr` when available to hint at static branch -#if GAMELIFT_METRICS_CPP_17 -#define IF_CONSTEXPR if constexpr -#else -#define IF_CONSTEXPR if -#endif - -/* - * When building from source as Unreal module, we want to export some of the API - * to other modules. - */ -#ifdef _WIN32 -#if defined(USE_IMPORT_EXPORT) || defined(GAMELIFT_METRICS_UNREAL) -#ifdef AWS_GAMELIFT_EXPORTS -#define GAMELIFT_METRICS_API __declspec(dllexport) -#else -#define GAMELIFT_METRICS_API __declspec(dllimport) -#endif -#else -#define GAMELIFT_METRICS_API -#endif // USE_IMPORT_EXPORT -#else -#define GAMELIFT_METRICS_API -#endif // _WIN32 diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DerivedMetric.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DerivedMetric.h deleted file mode 100644 index a6316402..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DerivedMetric.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -/** - * Metric computed from an existing metric. - */ -struct GAMELIFT_METRICS_API IDerivedMetric { - virtual ~IDerivedMetric(); - - /** - * @brief Handles metric messages. - * - * This is the place to intercept them and update internal state. - * - * @param message The metric message to handle. - * @param submitter The enqueuer to submit the metric to. - */ - virtual void HandleMessage(MetricMessage &message, - IMetricsEnqueuer &submitter) = 0; - - /** - * @brief Emits metrics before sending. - * - * Called once per parent metric per capture period. - * - * @param originalMetric The original metric that this derived metric is based - * on. - * @param submitter The enqueuer to submit the metric to. - */ - virtual void EmitMetrics(const IMetric *originalMetric, - IMetricsEnqueuer &submitter) = 0; -}; - -struct GAMELIFT_METRICS_API IDerivedMetricVisitor { - virtual ~IDerivedMetricVisitor(); - - virtual void VisitDerivedMetric(IDerivedMetric &metric) = 0; -}; - -struct GAMELIFT_METRICS_API IDerivedMetricCollection { - virtual ~IDerivedMetricCollection(); - - /** - * @brief Visits all derived metrics in the collection. - * - * Use visitor pattern to add a visitor from the processor which - * will handle message and then later call emit metrics! - * - * @param visitor The visitor to call for each derived metric. - */ - virtual void Visit(IDerivedMetricVisitor &visitor) = 0; -}; - -/** - * INTERNAL: Statically holds the derivative metric types - */ -template struct DerivedMetricCollection; - -/** - * Specialization for empty collection. - * - * No-op visitor. - */ -template <> struct DerivedMetricCollection<> : public IDerivedMetricCollection { - DerivedMetricCollection() = default; - - virtual void Visit(IDerivedMetricVisitor &visitor) override { - (void)visitor; // Suppress unused parameter warning - } -}; - -/** - * Recursive specialization for collections with multiple values. - */ -template -struct DerivedMetricCollection - : public DerivedMetricCollection { - using Base = DerivedMetricCollection; - - DerivedMetricCollection(First &&firstMetric, Rest &&...otherMetrics) - : Base(Internal::Forward(otherMetrics)...), - m_metric(Internal::Forward(firstMetric)) {} - - virtual void Visit(IDerivedMetricVisitor &visitor) override { - visitor.VisitDerivedMetric(m_metric); - Base::Visit(visitor); - } - -private: - First m_metric; -}; - -/** - * Base case: just one derived metric. - */ -template -struct DerivedMetricCollection : public IDerivedMetricCollection { - DerivedMetricCollection(Single &&singleMetric) - : m_metric(Internal::Forward(singleMetric)) {} - - virtual void Visit(IDerivedMetricVisitor &visitor) override { - visitor.VisitDerivedMetric(m_metric); - } - -private: - Single m_metric; -}; - -/** - * INTERNAL: factory for DerivedMetrics - used to infer the full - * DerivedMetricCollection type - */ -template -inline DerivedMetricCollection -CollectDerivedMetrics(Types &&...Metrics) { - return DerivedMetricCollection( - Internal::Forward(Metrics)...); -} - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DynamicMetric.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DynamicMetric.h deleted file mode 100644 index d71c5272..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DynamicMetric.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -#ifdef GAMELIFT_USE_STD -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -class DynamicMetric : public IMetric { -public: - virtual const char *GetKey() const override { return m_key.c_str(); } - virtual MetricType GetMetricType() const override { return m_type; } - virtual IDerivedMetricCollection &GetDerivedMetrics() override { - static DerivedMetricCollection<> Collection; - return Collection; - } - virtual ISampler &GetSampler() override { - static SampleAll DefaultSampler; - return DefaultSampler; - } - - void SetKey(const char *key) { this->m_key = key; } - void SetKey(std::string &&key) { - this->m_key = std::forward(key); - } - void SetMetricType(MetricType newType) { m_type = newType; } - - /** - * @brief Fluent setter for the key - * @param key The new key string - * @return Reference to this object for method chaining - */ - DynamicMetric &WithKey(const char *key) { - SetKey(key); - return *this; - } - - /** - * @brief Fluent setter for the key - * @param key The new key string - * @return Reference to this object for method chaining - */ - DynamicMetric &WithKey(std::string &&key) { - SetKey(std::forward(key)); - return *this; - } - - /** - * @brief Fluent setter for the metric type - * @param newType The new metric type - * @return Reference to this object for method chaining - */ - DynamicMetric &WithMetricType(MetricType newType) { - SetMetricType(newType); - return *this; - } - -private: - std::string m_key; - MetricType m_type; -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#else -namespace Aws { -namespace GameLift { -namespace Metrics { - -class GAMELIFT_METRICS_API DynamicMetric : public IMetric { -public: - static constexpr int MAXIMUM_KEY_LENGTH = 1024; - - DynamicMetric() = default; - DynamicMetric(const DynamicMetric &) = default; - - virtual const char *GetKey() const override { return m_key; } - virtual MetricType GetMetricType() const override { return m_type; } - virtual IDerivedMetricCollection &GetDerivedMetrics() override { - static DerivedMetricCollection<> Collection; - return Collection; - } - virtual ISampler &GetSampler() override { - static SampleAll DefaultSampler; - return DefaultSampler; - } - - void SetKey(const char *key); - - void SetMetricType(MetricType newType) { m_type = newType; } - - /** - * @brief Fluent setter for the key - * @param key The new key string - * @return Reference to this object for method chaining - */ - DynamicMetric &WithKey(const char *key) { - SetKey(key); - return *this; - } - - /** - * @brief Fluent setter for the metric type - * @param newType The new metric type - * @return Reference to this object for method chaining - */ - DynamicMetric &WithMetricType(MetricType newType) { - SetMetricType(newType); - return *this; - } - - char m_key[MAXIMUM_KEY_LENGTH]; - MetricType m_type; -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#endif // GAMELIFT_USE_STD diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DynamicTag.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DynamicTag.h deleted file mode 100644 index 7bf8343a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/DynamicTag.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -class DynamicTag { -public: - std::string Key; - std::string Value; - - DynamicTag() = default; - DynamicTag(std::string Key, std::string Value) : Key(Key), Value(Value) {} -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Function.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Function.h deleted file mode 100644 index ec635d8f..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Function.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#ifdef GAMELIFT_USE_STD -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -/** - * We still want to use std::function here as we benefit - * from zero-alloc specializations for func pointers or stateless lambdas. - */ -template using Function = std::function; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#else -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -template class GAMELIFT_METRICS_API Function; - -template -class GAMELIFT_METRICS_API Function { -private: - /** - * Base class for our type-erasure construct. - * - * Unlike std::function, we do not currently implement the zero-allocation - * optimization for function pointers or stateless/small lambdas - */ - struct WrapperBase { - virtual ~WrapperBase() = default; - - virtual RetType Invoke(ArgTypes &&...args) = 0; - virtual Internal::UniquePtr Clone() const = 0; - }; - - template struct FunctionWrapper : public WrapperBase { - T m_state; - - explicit FunctionWrapper(T &&state) - : m_state(Internal::Forward(state)) {} - - virtual RetType Invoke(ArgTypes &&...args) override { - return m_state(Internal::Forward(args)...); - } - - virtual Internal::UniquePtr Clone() const override { - return Internal::UniquePtr(new FunctionWrapper(*this)); - } - }; - -public: - using Signature = RetType(ArgTypes...); - using CallablePtr = Signature *; - - /** - * Initializes unassigned function. - */ - Function() = default; - - /** - * Copy - */ - Function(const Function &other) - : m_wrappedFunction(other ? other.m_wrappedFunction->Clone() : nullptr) {} - Function &operator=(const Function &other) { - if (other) { - m_wrappedFunction = other.m_wrappedFunction->Clone(); - } else { - m_wrappedFunction = nullptr; - } - return *this; - } - - /** - * Move - */ - Function(Function &&) = default; - Function &operator=(Function &&) = default; - - /** - * @brief Initializes Function from a callable. - * - * @param callable Callable to wrap - function pointer or lambda. - */ - template - Function(T &&callable) - : m_wrappedFunction( - new FunctionWrapper(Internal::Forward(callable))) {} - - /** - * @brief Returns true if the function is bound to a callable - * @returns true if bound - */ - operator bool() const { return m_wrappedFunction; } - - /** - * @brief Invokes the underlying function. - * @returns Result of function call - */ - RetType operator()(ArgTypes &&...args) { - return m_wrappedFunction->Invoke(Internal::Forward(args)...); - } - -private: - Internal::UniquePtr m_wrappedFunction = nullptr; -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#endif // GAMELIFT_USE_STD \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GameLiftMetrics.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GameLiftMetrics.h deleted file mode 100644 index 4ae27d33..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GameLiftMetrics.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GaugeMacros.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GaugeMacros.h deleted file mode 100644 index ed36ff6b..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GaugeMacros.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include - -/** - * @brief Sets a gauge to a value. - * - * Always executes expression. - * - * @param metric The gauge to set. - * @param expr The value to set the gauge to. - * - * @returns the result of expr - */ -#define GAMELIFT_METRICS_SET(metric, expr) \ - [&]() { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge>::value, \ - "Metric '" #metric \ - "' is not a gauge. GAMELIFT_METRICS_SET only supports gauges."); \ - auto Value = (expr); \ - IF_CONSTEXPR(metric::Platform::bEnabled) { \ - if (metric::Instance().GetSampler().ShouldTakeSample()) { \ - auto *Processor = GameLiftMetricsGlobalProcessor(); \ - if (Processor) { \ - Processor->Enqueue( \ - ::Aws::GameLift::Metrics::MetricMessage::GaugeSet( \ - metric::Instance(), Value)); \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } \ - } \ - return Value; \ - }() - -/** - * @brief Sets a gauge to a value. - * - * Only executes expression when sampled. - * - * @param metric The gauge to set. - * @param expr The value to set the gauge to. - */ -#define GAMELIFT_METRICS_SET_SAMPLED(metric, expr) \ - do { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge>::value, \ - "Metric '" #metric "' is not a gauge. GAMELIFT_METRICS_SET_SAMPLED " \ - "only supports gauges."); \ - IF_CONSTEXPR(metric::Platform::bEnabled) { \ - if (metric::Instance().GetSampler().ShouldTakeSample()) { \ - auto *Processor = GameLiftMetricsGlobalProcessor(); \ - if (Processor) { \ - Processor->Enqueue( \ - ::Aws::GameLift::Metrics::MetricMessage::GaugeSet( \ - metric::Instance(), (expr))); \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } \ - } \ - } while (0) - -/** - * @brief Resets a gauge back to zero. - * - * @param metric The gauge to set. - */ -#define GAMELIFT_METRICS_RESET(metric) \ - do { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Gauge>::value, \ - "Metric '" #metric \ - "' is not a gauge. GAMELIFT_METRICS_RESET only supports gauges."); \ - IF_CONSTEXPR(metric::Platform::bEnabled) { \ - auto *Processor = GameLiftMetricsGlobalProcessor(); \ - if (Processor) { \ - Processor->Enqueue(::Aws::GameLift::Metrics::MetricMessage::GaugeSet( \ - metric::Instance(), 0)); \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } \ - } while (0) diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GlobalMetricsProcessor.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GlobalMetricsProcessor.h deleted file mode 100644 index de866d74..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/GlobalMetricsProcessor.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include - -// Internal platform definition always enabled to guarantee shipping critical -// metrics such as server_up. -GAMELIFT_METRICS_DEFINE_PLATFORM(GlobalMetricsProcessor, true); - -// Indicates the server is running and the metrics system is initialized. -GAMELIFT_METRICS_DECLARE_GAUGE(ServerUpGauge, "server_up", - GlobalMetricsProcessor, - Aws::GameLift::Metrics::SampleAll()); - -namespace Aws { -namespace GameLift { -namespace Metrics { - -static constexpr const char *ENV_VAR_PROCESS_ID = "GAMELIFT_SDK_PROCESS_ID"; - -/** - * **Must** be called before any other metrics APIs are used. - */ -extern GAMELIFT_METRICS_API void -MetricsInitialize(const MetricsSettings &settings); -extern GAMELIFT_METRICS_API void MetricsInitialize(); - -/** - * @brief Cleans up global metrics capture state. - * - * Metrics APIs **must not** be used after this function is called. - */ -extern GAMELIFT_METRICS_API void MetricsTerminate(); - -/** - * @brief Processes metrics if enough time has elapsed since the last capture. - */ -extern GAMELIFT_METRICS_API void MetricsProcess(); - -/** - * @brief Called when a game session is started - * @param session The game session that was started - */ -extern GAMELIFT_METRICS_API void -OnGameSessionStarted(const Aws::GameLift::Server::Model::GameSession &session); - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -/* - * Defining GameLiftMetricsGlobalProcessor as a function instead of - * a static method like IMetricProcessor::Get() allows us to mock the - * processor in testing. Same goes for not using namespaces. - */ - -/** - * @returns The global metrics processor instance used to log stats. - */ -extern GAMELIFT_METRICS_API ::Aws::GameLift::Metrics::IMetricsProcessor * -GameLiftMetricsGlobalProcessor(); diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/HighResolutionClock.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/HighResolutionClock.h deleted file mode 100644 index efb22720..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/HighResolutionClock.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#ifdef GAMELIFT_USE_STD -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -/** - * INTERNAL: High resolution clock used for user-facing ScopedTimer. - */ -struct HighResolutionClock { - using Time = std::chrono::high_resolution_clock::time_point; - using Duration = std::chrono::high_resolution_clock::duration; - - static Time Now() { return std::chrono::high_resolution_clock::now(); } - - static double ToMilliseconds(Duration Duration) { - using Milliseconds = std::chrono::duration; - return std::chrono::duration_cast(Duration).count(); - } -}; - -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -#else - -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -/** - * INTERNAL: High resolution clock used for user-facing ScopedTimer. - */ -struct GAMELIFT_METRICS_API HighResolutionClock { - using Time = Int64; - using Duration = Int64; - - static Int64 Now(); - static double ToMilliseconds(Int64 Duration); -}; - -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -#endif diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/IMetricsProcessor.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/IMetricsProcessor.h deleted file mode 100644 index d8fe80f1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/IMetricsProcessor.h +++ /dev/null @@ -1,384 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#ifdef GAMELIFT_USE_STD -#include -#include -#include -#else -#include -#include -#endif - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -enum class GAMELIFT_METRICS_API MetricMessageType : UInt8 { - None, - - GaugeSet, - GaugeAdd, - - CounterAdd, - - TimerSet, - - TagSet, - TagRemove -}; - -struct GAMELIFT_METRICS_API MetricSubmitDouble final { - double Value; - - /** - * @brief Submits a double value metric. - * - * @param value The double value to be submitted. - */ - constexpr MetricSubmitDouble(double value) noexcept : Value(value) {} - - /** - * @brief Gets the double value - * @return The stored double value - */ - double GetValue() const { return Value; } - - /** - * @brief Sets the double value - * @param value The new double value - */ - void SetValue(double value) { Value = value; } - - /** - * @brief Fluent setter for the double value - * @param value The new double value - * @return Reference to this object for method chaining - */ - MetricSubmitDouble &WithValue(double value) { - SetValue(value); - return *this; - } - - friend bool operator!=(const MetricSubmitDouble &a, - const MetricSubmitDouble &b) { - return !(a == b); - } - friend bool operator==(const MetricSubmitDouble &a, - const MetricSubmitDouble &b) { - return a.Value == b.Value; - } -}; - -class DynamicTag; - -struct GAMELIFT_METRICS_API MetricSetTag final { - DynamicTag *Ptr; - - /** - * @brief Tags next submission with tag. - * - * @param ptr Pointer to the tag to apply to the next metrics submission. - */ - constexpr explicit MetricSetTag(DynamicTag *ptr) noexcept : Ptr(ptr) {} - - /** - * @brief Gets the pointer to the DynamicTag - * @return The DynamicTag pointer - */ - DynamicTag *GetPtr() const { return Ptr; } - - /** - * @brief Sets the pointer to the DynamicTag - * @param ptr The DynamicTag pointer - */ - void SetPtr(DynamicTag *ptr) { Ptr = ptr; } - - /** - * @brief Fluent setter for the pointer - * @param ptr The DynamicTag pointer - * @return Reference to this object for method chaining - */ - MetricSetTag &WithPtr(DynamicTag *ptr) { - SetPtr(ptr); - return *this; - } - - friend bool operator!=(const MetricSetTag &a, const MetricSetTag &b) { - return !(a == b); - } - friend bool operator==(const MetricSetTag &a, const MetricSetTag &b); -}; - -/** - * @brief Represents a metric being logged at a call site. - */ -struct GAMELIFT_METRICS_API MetricMessage final { - MetricMessageType Type; - - IMetric *Metric; - /* - * This union is tagged by `Type`. - */ - union { - MetricSubmitDouble SubmitDouble; - MetricSetTag SetTag; - }; - - MetricMessage() : Type(MetricMessageType::None), Metric(nullptr) {} -#ifdef GAMELIFT_USE_STD - MetricMessage(MetricMessageType type, IMetric *metric, - MetricSubmitDouble &&submitDouble) - : Type(type), Metric(metric), - SubmitDouble(std::forward(submitDouble)) {} - MetricMessage(MetricMessageType type, IMetric *metric, MetricSetTag &&setTag) - : Type(type), Metric(metric), SetTag(std::forward(setTag)) { - } -#else - MetricMessage(MetricMessageType type, IMetric *metric, - const MetricSubmitDouble &submitDouble) - : Type(type), Metric(metric), SubmitDouble(submitDouble) {} - MetricMessage(MetricMessageType type, IMetric *metric, - const MetricSetTag &setTag) - : Type(type), Metric(metric), SetTag(setTag) {} -#endif - - /** - * @brief Gets the message type - * @return The metric message type - */ - MetricMessageType GetType() const { return Type; } - - /** - * @brief Sets the message type - * @param type The metric message type - */ - void SetType(MetricMessageType type) { Type = type; } - - /** - * @brief Fluent setter for the message type - * @param type The metric message type - * @return Reference to this object for method chaining - */ - MetricMessage &WithType(MetricMessageType type) { - SetType(type); - return *this; - } - - /** - * @brief Gets the metric pointer - * @return The metric pointer - */ - IMetric *GetMetric() const { return Metric; } - - /** - * @brief Sets the metric pointer - * @param metric The metric pointer - */ - void SetMetric(IMetric *metric) { Metric = metric; } - - /** - * @brief Fluent setter for the metric pointer - * @param metric The metric pointer - * @return Reference to this object for method chaining - */ - MetricMessage &WithMetric(IMetric *metric) { - SetMetric(metric); - return *this; - } - - bool IsGauge() const noexcept { - switch (Type) { - case MetricMessageType::GaugeSet: - case MetricMessageType::GaugeAdd: - return true; - default: - return false; - } - } - - bool IsCounter() const noexcept { - switch (Type) { - case MetricMessageType::CounterAdd: - return true; - default: - return false; - } - } - - bool IsTimer() const noexcept { - switch (Type) { - case MetricMessageType::TimerSet: - return true; - default: - return false; - } - } - - bool IsTag() const noexcept { - switch (Type) { - case MetricMessageType::TagSet: - case MetricMessageType::TagRemove: - return true; - default: - return false; - } - } - - bool IsDouble() const noexcept { return true; } - - /* - * METRICS - */ - static MetricMessage GaugeSet(IMetric &metric, double value) { - return MetricMessage(MetricMessageType::GaugeSet, &metric, - MetricSubmitDouble(value)); - } - static MetricMessage GaugeAdd(IMetric &metric, double value) { - return MetricMessage(MetricMessageType::GaugeAdd, &metric, - MetricSubmitDouble(value)); - } - static MetricMessage CounterAdd(IMetric &metric, double value) { - return MetricMessage(MetricMessageType::CounterAdd, &metric, - MetricSubmitDouble(value)); - } - static MetricMessage TimerSet(IMetric &metric, double value) { - return MetricMessage(MetricMessageType::TimerSet, &metric, - MetricSubmitDouble(value)); - } - - /* - * TAGS - */ -#ifdef GAMELIFT_USE_STD - static MetricMessage TagSet(IMetric &metric, std::string key, - std::string value); - static MetricMessage TagRemove(IMetric &metric, std::string key); -#else - static MetricMessage TagSet(IMetric &metric, const char *key, - const char *value); - static MetricMessage TagRemove(IMetric &metric, const char *key); -#endif - - friend bool operator!=(const MetricMessage &a, const MetricMessage &b) { - return !(a == b); - } - friend bool operator==(const MetricMessage &a, const MetricMessage &b) { - if (a.Type != b.Type) { - return false; - } - - // intentional ptr comparison as metric should be a global, static value - if (a.Metric != b.Metric) { - return false; - } - - if (a.IsTag()) { - return a.SetTag == b.SetTag; - } else { - return a.SubmitDouble == b.SubmitDouble; - } - } -}; - -struct GAMELIFT_METRICS_API IMetricsEnqueuer { - virtual ~IMetricsEnqueuer(); - - /** - * Enqueues message for later processing. - * - * Thread safe. - */ - virtual void Enqueue(MetricMessage message) = 0; -}; - -/** - * Copies a tag message for another metric - */ -extern GAMELIFT_METRICS_API void CopyTagMessage(const MetricMessage &original, - IMetric &destMetric, - IMetricsEnqueuer &enqueuer); - -/** - * Metrics interface to faciliate testing. - */ -class GAMELIFT_METRICS_API IMetricsProcessor : public IMetricsEnqueuer { -public: - virtual ~IMetricsProcessor(); - -#ifdef GAMELIFT_USE_STD - /** - * Sets a key:value tag to be applied to all metrics. - */ - virtual void SetGlobalTag(const std::string &key, - const std::string &value) = 0; - - /** - * Removes a global tag by key. - */ - virtual void RemoveGlobalTag(const std::string &key) = 0; -#else - /** - * Sets a key:value tag to be applied to all metrics. - */ - virtual void SetGlobalTag(const char *key, const char *value) = 0; - - /** - * Removes a global tag by key. - */ - virtual void RemoveGlobalTag(const char *key) = 0; -#endif // GAMELIFT_USE_STD - - /** - * Processes all the current metrics in the queue if the next capture time has - * been reached. - * - * This includes: - * - Summing and averaging counters or timers logged during the capture - * period. - * - Computing derived stats. - * - Assembling a statsd packet. - * - Sending the packet off. - */ - virtual void ProcessMetrics() = 0; - - /** - * Processes all the current metrics in the queue irrespective of the next - * capture time. Intended for use on terminate or for a time critical flush. - * - * This includes: - * - Summing and averaging counters or timers logged during the capture - * period. - * - Computing derived stats. - * - Assembling a statsd packet. - * - Sending the packet off. - */ - virtual void ProcessMetricsNow() = 0; - - /** - * @brief Called when a game session is started - * @param session The game session that was started - */ - virtual void OnStartGameSession( - const Aws::GameLift::Server::Model::GameSession &session) = 0; -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/InternalTypes.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/InternalTypes.h deleted file mode 100644 index c88b5f25..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/InternalTypes.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -#ifdef GAMELIFT_USE_STD -#include -#else -#include -#endif - -namespace Aws { -namespace GameLift { -namespace Metrics { -using UInt8 = uint8_t; -using Int64 = int64_t; - -struct MetricMessage; -class IMetricsProcessor; -struct ISampler; - -/* - * Marker types. - */ -class Gauge {}; -class Counter {}; -class Timer {}; - -struct IDerivedMetricCollection; - -enum class MetricType { Gauge, Counter, Timer }; - -template inline MetricType GetMetricType(); - -template <> inline MetricType GetMetricType() { - return MetricType::Gauge; -} - -template <> inline MetricType GetMetricType() { - return MetricType::Counter; -} - -template <> inline MetricType GetMetricType() { - return MetricType::Timer; -} - -/** - * INTERNAL: Interface for all user-defined metrics. - */ -struct GAMELIFT_METRICS_API IMetric { - virtual ~IMetric(); - - virtual MetricType GetMetricType() const = 0; - virtual const char *GetKey() const = 0; - virtual IDerivedMetricCollection &GetDerivedMetrics() = 0; - virtual ISampler &GetSampler() = 0; -}; - -/** - * Utility class to verify a metric type is supported in static_asserts within - * macros. - * - * For IsSupported::value to evaluate to true, Type must be one of the - * subsequent types in the template params. - */ -template -struct IsSupported : Internal::Conditional::value, - Internal::TrueType, - IsSupported>::type {}; - -/** - * Base case: only two types to compare. - */ -template -struct IsSupported : Internal::IsSame {}; -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/KeySuffix.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/KeySuffix.h deleted file mode 100644 index c683eef4..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/KeySuffix.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -#ifdef GAMELIFT_USE_STD -/** - * Helper class for derived metrics. - * - * Wraps a key suffix and applies it to dynamic metrics. - */ -struct GAMELIFT_METRICS_API KeySuffix final { - KeySuffix() = default; - KeySuffix(const char *suffix) : m_suffix(suffix) {} - KeySuffix(std::string suffix) : m_suffix(suffix) {} - - std::string m_suffix; - - void Apply(const IMetric &original, DynamicMetric &target); - - /** - * @brief Gets the suffix value - * @return The current suffix value - */ - const std::string &GetSuffix() const { return m_suffix; } - - /** - * @brief Sets the suffix value - * @param suffix The new suffix value - */ - void SetSuffix(const std::string &suffix) { m_suffix = suffix; } - - /** - * @brief Fluent setter for the suffix value - * @param suffix The new suffix value - * @return Reference to this object for method chaining - */ - KeySuffix &WithSuffix(const std::string &suffix) { - SetSuffix(suffix); - return *this; - } -}; -#else -/** - * Helper class for derived metrics. - * - * Wraps a key suffix and applies it to dynamic metrics. - */ -struct GAMELIFT_METRICS_API KeySuffix final { - static constexpr int MAXIMUM_SUFFIX_LENGTH = 1024; - - KeySuffix(); - KeySuffix(const char *suffix); - - char m_suffix[MAXIMUM_SUFFIX_LENGTH]; - - void Apply(const IMetric &original, DynamicMetric &target); - - /** - * @brief Gets the suffix value - * @return The current suffix value - */ - const char *GetSuffix() const { return m_suffix; } - - /** - * @brief Sets the suffix value - * @param suffix The new suffix value - */ - void SetSuffix(const char *suffix); - - /** - * @brief Fluent setter for the suffix value - * @param suffix The new suffix value - * @return Reference to this object for method chaining - */ - KeySuffix &WithSuffix(const char *suffix) { - SetSuffix(suffix); - return *this; - } -}; -#endif -} // namespace Metrics -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Latest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Latest.h deleted file mode 100644 index 268264c5..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Latest.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -template struct OpLatest final { - T operator()(T current, T newValue) { return newValue; } -}; - -} // namespace Internal - -/** - * Keeps only the latest value of a metric. - */ -class Latest : public Reduce> { -public: - /** - * Keeps only the latest value. - * - * If ADD supported, this is added to latest. - */ - Latest() : Reduce(".latest") {} - - /** - * Keeps only the latest value. - * - * If ADD supported, this is added to latest. - * - * @param suffix Suffix to add to metric key - */ - explicit Latest(KeySuffix &&suffix) - : Reduce(Internal::Forward(suffix)) {} - - /** - * @brief Gets the suffix - * @return The current suffix - */ - const KeySuffix &GetSuffix() const { return m_suffix; } - - /** - * @brief Sets the suffix - * @param suffix Suffix to add to metric key - */ - void SetSuffix(KeySuffix &&suffix) { - m_suffix = Internal::Forward(suffix); - } - - /** - * @brief Fluent setter for the suffix - * @param suffix Suffix to add to metric key - * @return Reference to this object for method chaining - */ - Latest &WithSuffix(KeySuffix &&suffix) { - SetSuffix(Internal::Forward(suffix)); - return *this; - } -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/LoggerMacros.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/LoggerMacros.h deleted file mode 100644 index f26d4af6..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/LoggerMacros.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -#include -#include - -#define GAMELIFT_METRICS_LOG_INFO(format, ...) \ - spdlog::info("[METRICS] " format, ##__VA_ARGS__) - -#define GAMELIFT_METRICS_LOG_WARN(format, ...) \ - spdlog::warn("[METRICS] " format, ##__VA_ARGS__) - -#define GAMELIFT_METRICS_LOG_ERROR(format, ...) \ - spdlog::error("[METRICS] " format, ##__VA_ARGS__) - -#if defined(GAMELIFT_METRICS_DEBUG) && GAMELIFT_METRICS_DEBUG -#define GAMELIFT_METRICS_LOG_CRITICAL(format, ...) \ - do { \ - spdlog::critical("[METRICS] " format, ##__VA_ARGS__); \ - std::abort(); \ - } while (0) -#else -#define GAMELIFT_METRICS_LOG_CRITICAL(format, ...) \ - spdlog::critical("[METRICS] " format, ##__VA_ARGS__) -#endif diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Mean.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Mean.h deleted file mode 100644 index 4dc84ae5..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Mean.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -template struct OpMean { - size_t sampleCount = 0; - - Real operator()(Real current, Real next) { - ++sampleCount; - const double update = (next - current) / sampleCount; - return current + update; - } -}; - -using MeanReducer = Reduce>; - -} // namespace Internal - -struct Mean : public Internal::MeanReducer { - /** - * Computes the mean over capture period as `metric.mean`. - */ - Mean() : Internal::MeanReducer(".mean", 0) {} - - /** - * Computes the mean over capture period as `metricSUFFIX` with user specified - * SUFFIX. - * - * @param keySuffix Suffix to append to the parent metric name. - */ - explicit Mean(const char *keySuffix) : Internal::MeanReducer(keySuffix) {} - - /** - * @brief Gets the key suffix - * @return The current key suffix - */ - const char *GetKeySuffix() const { -#ifdef GAMELIFT_USE_STD - return m_keySuffix.GetSuffix().c_str(); -#else - return m_keySuffix.GetSuffix(); -#endif - } - - /** - * @brief Sets the key suffix - * @param keySuffix Suffix to append to the parent metric name - */ - void SetKeySuffix(const char *keySuffix) { - m_keySuffix = KeySuffix(keySuffix); - } - - /** - * @brief Fluent setter for the key suffix - * @param keySuffix Suffix to append to the parent metric name - * @return Reference to this object for method chaining - */ - Mean &WithKeySuffix(const char *keySuffix) { - SetKeySuffix(keySuffix); - return *this; - } - - virtual void EmitMetrics(const IMetric *originalMetric, - IMetricsEnqueuer &submitter) override { - Internal::MeanReducer::EmitMetrics(originalMetric, submitter); - operation.sampleCount = 0; - } - -private: - KeySuffix m_keySuffix; -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsProcessor.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsProcessor.h deleted file mode 100644 index ef90f1f8..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsProcessor.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -#include "Combiner.h" -#include "PacketBuilder.h" -#include "Tags.h" -#include -#include -#include -#include - -class MetricsProcessor : public IMetricsProcessor { -private: - using ClockT = std::chrono::high_resolution_clock; - using TimeT = ClockT::time_point; - using NativeDurationT = TimeT::duration; - using SecondsT = std::chrono::duration; - -public: - /** - * @param settings The settings object containing configuration for the - * metrics processor - */ - explicit MetricsProcessor( - const Aws::GameLift::Metrics::MetricsSettings &settings) - : m_sendPacket(settings.SendPacketCallback), - m_captureInterval(std::chrono::duration_cast( - SecondsT(settings.CaptureIntervalSec))), - m_nextCaptureTime(ClockT::now() + m_captureInterval), - m_packet(settings.MaxPacketSizeBytes, settings.FloatPrecision) {} - - virtual void Enqueue(MetricMessage message) override { - m_messageQueueMPSC.enqueue(message); - } - -#ifdef GAMELIFT_USE_STD - virtual void SetGlobalTag(const std::string &key, - const std::string &value) override { - m_globalTags[key] = value; - } - - virtual void RemoveGlobalTag(const std::string &key) override { - auto it = m_globalTags.find(key); - if (it != std::end(m_globalTags)) { - m_globalTags.erase(it); - } - } -#else - virtual void SetGlobalTag(const char *key, const char *value) override { - m_globalTags[key] = value; - } - - virtual void RemoveGlobalTag(const char *key) override { - auto it = m_globalTags.find(key); - if (it != std::end(m_globalTags)) { - m_globalTags.erase(it); - } - } -#endif - - /** - * @brief Gets the capture interval in native duration format - * @return The capture interval duration - */ - NativeDurationT GetCaptureInterval() const { return m_captureInterval; } - - /** - * @brief Sets the capture interval - * @param captureInterval The new capture interval - */ - void SetCaptureInterval(const NativeDurationT &captureInterval) { - m_captureInterval = captureInterval; - } - - /** - * @brief Fluent setter for capture interval - * @param captureInterval The new capture interval - * @return Reference to this object for method chaining - */ - MetricsProcessor & - WithCaptureInterval(const NativeDurationT &captureInterval) { - SetCaptureInterval(captureInterval); - return *this; - } - - /** - * @brief Gets the next scheduled capture time - * @return The next capture time point - */ - TimeT GetNextCaptureTime() const { return m_nextCaptureTime; } - - /** - * @brief Sets the next capture time - * @param nextCaptureTime The new capture time point - */ - void SetNextCaptureTime(const TimeT &nextCaptureTime) { - m_nextCaptureTime = nextCaptureTime; - } - - /** - * @brief Fluent setter for next capture time - * @param nextCaptureTime The new capture time point - * @return Reference to this object for method chaining - */ - MetricsProcessor &WithNextCaptureTime(const TimeT &nextCaptureTime) { - SetNextCaptureTime(nextCaptureTime); - return *this; - } - - virtual void ProcessMetrics() override; - - virtual void ProcessMetricsNow() override; - - /** - * @brief Called when a game session is started - * @param session The game session that was started - */ - virtual void - OnStartGameSession(const Aws::GameLift::Server::Model::GameSession &session); - -private: - void ProcessMessages(std::vector &messages); - - struct VectorEnqueuer : public IMetricsEnqueuer { - std::vector m_messages; - - virtual void Enqueue(MetricMessage message) override { - m_messages.emplace_back(message); - } - - void Clear() { m_messages.clear(); } - }; - -private: - moodycamel::ConcurrentQueue m_messageQueueMPSC; - - Aws::GameLift::Metrics::MetricsSettings::SendPacketFunc m_sendPacket; - Aws::GameLift::Metrics::MetricsSettings::PreProcessingFunc - m_preProcessCallback; - - NativeDurationT m_captureInterval; - TimeT m_nextCaptureTime; - - std::vector m_processQueue; - Combiner m_combinedMetrics; - PacketBuilder m_packet; - Tags m_metricTags; - std::unordered_map m_globalTags; - - VectorEnqueuer m_enqueuer; -}; diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsSettings.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsSettings.h deleted file mode 100644 index 9b6bffd9..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsSettings.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -struct GAMELIFT_METRICS_API MetricsSettings { - using SendPacketFunc = Function; - using PreProcessingFunc = Function; - - /** - * Callback used to send UDP packets. - * Use this to integrate with engine native sockets. - */ - SendPacketFunc SendPacketCallback; - - /** - * Callback before the metrics are processed for current collection period. - */ - PreProcessingFunc PreProcessingCallback; - - /** - * Maximum packet size in bytes. - * - * Typical MTU is 1500 so 1472 maximizes size while leaving room for UDP - * header. - */ - int MaxPacketSizeBytes = 1472; - - /** - * Metric capture interval. - * - * Metrics are collected and sent off every CaptureInterval seconds. - */ - float CaptureIntervalSec = 5.0f; - - /** - * Floating point precision. - * - * How many digits past the decimal point should we log? - */ - int FloatPrecision = 5; - - /** - * Crash reporter host. - */ -#ifdef GAMELIFT_USE_STD - std::string CrashReporterHost; -#else - const char* CrashReporterHost = nullptr; -#endif - - /** - * Crash reporter port. - */ - int CrashReporterPort = 0; - - /** - * StatsD client host. - */ -#ifdef GAMELIFT_USE_STD - std::string StatsDClientHost; -#else - const char* StatsDClientHost = nullptr; -#endif - - /** - * StatsD client port. - */ - int StatsDClientPort = 0; -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsUtils.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsUtils.h deleted file mode 100644 index 969055a6..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/MetricsUtils.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -// Forward declarations -namespace Aws { -namespace GameLift { -namespace Metrics { -struct MetricsSettings; -} -} -} - -namespace Aws { -namespace GameLift { -namespace Metrics { - -// Environment variable names for metrics configuration -static constexpr const char *ENV_VAR_STATSD_HOST = "GAMELIFT_STATSD_HOST"; -static constexpr const char *ENV_VAR_STATSD_PORT = "GAMELIFT_STATSD_PORT"; -static constexpr const char *ENV_VAR_CRASH_REPORTER_HOST = "GAMELIFT_CRASH_REPORTER_HOST"; -static constexpr const char *ENV_VAR_CRASH_REPORTER_PORT = "GAMELIFT_CRASH_REPORTER_PORT"; -static constexpr const char *ENV_VAR_FLUSH_INTERVAL_MS = "GAMELIFT_FLUSH_INTERVAL_MS"; -static constexpr const char *ENV_VAR_MAX_PACKET_SIZE = "GAMELIFT_MAX_PACKET_SIZE"; - -// Default values for metrics configuration -static constexpr const char *DEFAULT_STATSD_HOST = "127.0.0.1"; -static constexpr int DEFAULT_STATSD_PORT = 8125; -static constexpr const char *DEFAULT_CRASH_REPORTER_HOST = "127.0.0.1"; -static constexpr int DEFAULT_CRASH_REPORTER_PORT = 8126; -static constexpr int DEFAULT_FLUSH_INTERVAL_MS = 10000; -static constexpr int DEFAULT_MAX_PACKET_SIZE = 512; - -// Port validation constants -static constexpr int PORT_MIN = 1; -static constexpr int PORT_MAX = 65535; - -/** - * Internal utility function to create MetricsParameters with default values, - * overridden by environment variables if set. - */ -Aws::GameLift::Server::MetricsParameters CreateMetricsParametersFromEnvironmentOrDefault(); - -/** - * Create MetricsSettings from MetricsParameters. - */ -MetricsSettings FromMetricsParameters(const Aws::GameLift::Server::MetricsParameters ¶ms); - -/** - * Validates MetricsParameters for required fields and valid ranges. - * @param params The MetricsParameters to validate - * @return GenericOutcome indicating success or validation error - */ -Aws::GameLift::GenericOutcome ValidateMetricsParameters(const Aws::GameLift::Server::MetricsParameters ¶ms); - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/PacketBuilder.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/PacketBuilder.h deleted file mode 100644 index 76fc6fba..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/PacketBuilder.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -#include -#include -#include - -using namespace ::Aws::GameLift::Metrics; - -class PacketBuilder final { -public: - using TagMap = std::unordered_map; - - explicit PacketBuilder(size_t packetSize) noexcept - : PacketBuilder(packetSize, 5) {} - PacketBuilder(size_t packetSize, int floatPrecision); - - /** - * @brief Appends message to the back of the packet. - * - * Metric is tagged with global tags first and per-metric tags second. - * - * @param message Message to append. - * @param globalTags Global metric tags - * @param metricTags Per-metric tags - * @param sendPacketFunc Callback called with the current packet data whenever - * the packet fills up. - */ - void Append( - const MetricMessage &message, const TagMap &globalTags, - const TagMap &metricTags, - Aws::GameLift::Metrics::MetricsSettings::SendPacketFunc sendPacketFunc); - - /** - * @brief Flushes the internal buffers via sendPacketFunc. - * Resets internal state for new metrics. - * - * @param sendPacketFunc Callback called with the remaining packet data. - */ - void - Flush(Aws::GameLift::Metrics::MetricsSettings::SendPacketFunc sendPacketFunc); - - /** - * @brief Gets the maximum packet size in bytes. - * @returns Maximum packet size in bytes. - */ - size_t GetPacketSize() const noexcept { return m_packetSize; } - - /** - * @brief Sets the maximum packet size in bytes. - * @param packetSize The new maximum packet size in bytes - */ - void SetPacketSize(size_t packetSize) { m_packetSize = packetSize; } - - /** - * @brief Fluent setter for packet size - * @param packetSize The new maximum packet size in bytes - * @return Reference to this object for method chaining - */ - PacketBuilder &WithPacketSize(size_t packetSize) { - SetPacketSize(packetSize); - return *this; - } - - /** - * @brief Gets how many digits floats are rounded to after the decimal point. - * @returns Float precision value - */ - int GetFloatPrecision() const noexcept { return m_floatPrecision; } - - /** - * @brief Sets how many digits floats are rounded to after the decimal point. - * @param floatPrecision The new float precision value - */ - void SetFloatPrecision(int floatPrecision) { - m_floatPrecision = floatPrecision; - } - - /** - * @brief Fluent setter for float precision - * @param floatPrecision The new float precision value - * @return Reference to this object for method chaining - */ - PacketBuilder &WithFloatPrecision(int floatPrecision) { - SetFloatPrecision(floatPrecision); - return *this; - } - -private: - size_t m_packetSize; - int m_floatPrecision = 5; - - std::string m_sendBuffer; - std::stringstream m_formatBuffer; -}; - -/** - * @brief Appends Message to Stream in dogstatsd format. - * - * See - * DogStatsD documentation. - * - * @param message Message to append to the Stream. - * @param floatPrecision Number of digits after the decimal point for floating - * point numbers - * @param globalTags Global metric tags - * @param metricTags Per-metric tags. - * @param stream An Output stream to append to. - */ -extern void AppendToStream(const MetricMessage &message, int floatPrecision, - const PacketBuilder::TagMap &globalTags, - const PacketBuilder::TagMap &metricTags, - std::ostream &stream); diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Percentiles.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Percentiles.h deleted file mode 100644 index 47532590..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Percentiles.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { -class GAMELIFT_METRICS_API PercentilesWrapper : public IDerivedMetric { -public: - static PercentilesWrapper Create(double *percentilesItBegin, - double *percentilesItEnd); - - virtual void HandleMessage(MetricMessage &message, - IMetricsEnqueuer &submitter) override { - m_impl->HandleMessage(message, submitter); - } - - virtual void EmitMetrics(const IMetric *originalMetric, - IMetricsEnqueuer &submitter) override { - m_impl->EmitMetrics(originalMetric, submitter); - } - -private: - explicit PercentilesWrapper(IDerivedMetric *impl) : m_impl(impl) {} - -private: - UniquePtr m_impl; -}; -} // namespace Internal - -/** - * Emit a series of percentiles. - */ -template -inline Internal::PercentilesWrapper Percentiles(Real... values) { - std::vector valuesVec = {static_cast(values)...}; - double *valuesBegin = valuesVec.data(); - double *valuesEnd = valuesBegin + valuesVec.size(); - return Internal::PercentilesWrapper::Create(valuesBegin, valuesEnd); -} - -/** - * Compute the median as .p50 - */ -inline Internal::PercentilesWrapper Median() { return Percentiles(0.5); } - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Platform.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Platform.h deleted file mode 100644 index c5675b78..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Platform.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -/** - * Defines a new metric logging platform. - * - * @param platform Platform name. - * @param compileTimeExpr An expression evaluated at compile time. If true or - * not 0, platform is enabled. Otherwise, platform won't log any metrics. - */ -#define GAMELIFT_METRICS_DEFINE_PLATFORM(platform, compileTimeExpr) \ - struct platform { \ - static constexpr bool bEnabled = (compileTimeExpr); \ - } - -/** - * Defines a new metric logging platform. - * - * @param api API to use - * @param platform Platform name. - * @param compileTimeExpr An expression evaluated at compile time. If true or - * not 0, platform is enabled. Otherwise, platform won't log any metrics. - */ -#define GAMELIFT_METRICS_DEFINE_PLATFORM_API(api, platform, compileTimeExpr) \ - struct api platform { \ - static constexpr bool bEnabled = (compileTimeExpr); \ - } - -/** - * @returns true if platform is enabled at compile time - */ -#define GAMELIFT_METRICS_PLATFORM_IS_ENABLED(platform) platform::bEnabled diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ReduceMetric.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ReduceMetric.h deleted file mode 100644 index 78ef6cd1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ReduceMetric.h +++ /dev/null @@ -1,329 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -/** - * @brief Applies a reduction on a metric. - * - * @param Op Functor taking a pair of doubles - current, new and returning the - * modified value. - */ -template class Reduce : public IDerivedMetric { -public: - /** - * @param suffix Suffix to add to the modified key. - */ - Reduce(KeySuffix &&suffix) - : m_suffix(Internal::Forward(suffix)), m_result(0), - m_metricInitialized(false) {} - - /** - * @param suffix Suffix to add to the modified key. - * @param initialValue Value to initialize the reducer with. - */ - Reduce(KeySuffix &&suffix, double initialValue) - : m_suffix(Internal::Forward(suffix)), m_result(initialValue), - m_metricInitialized(false) {} - - /** - * @param suffix Suffix to add to the modified key. - * @param initialValue Value to initialize the reducer with. - */ - Reduce(KeySuffix &&suffix, double initialValue, Op &&operation) - : m_suffix(Internal::Forward(suffix)), m_result(initialValue), - operation(Internal::Forward(operation)), - m_metricInitialized(false) {} - - /** - * @brief Gets the suffix - * @return The current suffix - */ - const KeySuffix &GetSuffix() const { return m_suffix; } - - /** - * @brief Sets the suffix - * @param suffix Suffix to add to the modified key - */ - void SetSuffix(KeySuffix &&suffix) { - m_suffix = Internal::Forward(suffix); - } - - /** - * @brief Fluent setter for the suffix - * @param suffix Suffix to add to the modified key - * @return Reference to this object for method chaining - */ - Reduce &WithSuffix(KeySuffix &&suffix) { - SetSuffix(Internal::Forward(suffix)); - return *this; - } - - virtual void HandleMessage(MetricMessage &message, - IMetricsEnqueuer &submitter) override { - switch (message.Type) { - case MetricMessageType::GaugeAdd: - m_currentValue += message.SubmitDouble.Value; - UpdateResult(); - break; - case MetricMessageType::GaugeSet: - case MetricMessageType::TimerSet: - m_currentValue = message.SubmitDouble.Value; - UpdateResult(); - break; - case MetricMessageType::TagSet: - case MetricMessageType::TagRemove: - CopyTagMessage(message, m_metric, submitter); - break; - default: - break; - } - } - - virtual void EmitMetrics(const IMetric *originalMetric, - IMetricsEnqueuer &submitter) override { - if (m_numSeenSinceLastEmitCall == 0) { - return; - } - m_numSeenSinceLastEmitCall = 0; - - if (!m_metricInitialized) { - m_suffix.Apply(*originalMetric, m_metric); - m_metric.SetMetricType(originalMetric->GetMetricType()); - m_metricInitialized = true; - } - - switch (m_metric.GetMetricType()) { - case MetricType::Gauge: - submitter.Enqueue(MetricMessage::GaugeSet(m_metric, m_result)); - break; - case MetricType::Timer: - submitter.Enqueue(MetricMessage::TimerSet(m_metric, m_result)); - break; - default: - break; - } - } - -protected: - void UpdateResult() { - m_result = operation(m_result, m_currentValue); - m_numSeenSinceLastEmitCall++; - } - -protected: - KeySuffix m_suffix; - - Op operation; // Op needs to be protected for Mean to work properly - double m_result = 0; - - size_t m_numSeenSinceLastEmitCall = 0; - double m_currentValue = 0; - DynamicMetric m_metric; - - bool m_metricInitialized = false; -}; - -namespace Internal { -template struct OpMax final { - T operator()(T Current, T New) { return New >= Current ? New : Current; } -}; - -template struct OpMin final { - T operator()(T Current, T New) { return New <= Current ? New : Current; } -}; - -template struct OpSum final { - T operator()(T Current, T New) { return Current + New; } -}; - -template struct OpCount final { - T operator()(T Current, T New) { return ++Current; } -}; -} // namespace Internal - -/** - * @brief Logs the maximum of all values seen during the capture period. - */ -struct Max : public Reduce> { - /** - * Initializes a Max metric that logs the maximum value during the capture - * period. - */ - Max() : Reduce(".max", -Internal::NumericLimits::max()) {} - - /** - * @param suffix Suffix to add to the modified key. - */ - explicit Max(KeySuffix &&suffix) - : Reduce(Internal::Forward(suffix), - -Internal::NumericLimits::max()) {} - - /** - * @brief Gets the suffix - * @return The current suffix - */ - const KeySuffix &GetSuffix() const { return m_suffix; } - - /** - * @brief Sets the suffix - * @param suffix Suffix to add to the modified key - */ - void SetSuffix(KeySuffix &&suffix) { - m_suffix = Internal::Forward(suffix); - } - - /** - * @brief Fluent setter for the suffix - * @param suffix Suffix to add to the modified key - * @return Reference to this object for method chaining - */ - Max &WithSuffix(KeySuffix &&suffix) { - SetSuffix(Internal::Forward(suffix)); - return *this; - } -}; - -/** - * @brief Logs the minimum of all values seen during the capture period. - */ -struct Min : public Reduce> { - /** - * Initializes a Min metric that logs the minimum value during the capture - * period. - */ - Min() : Reduce(".min", Internal::NumericLimits::max()) {} - - /** - * @param suffix Suffix to add to the modified key. - */ - explicit Min(KeySuffix &&suffix) - : Reduce(Internal::Forward(suffix), - Internal::NumericLimits::max()) {} - - /** - * @brief Gets the suffix - * @return The current suffix - */ - const KeySuffix &GetSuffix() const { return m_suffix; } - - /** - * @brief Sets the suffix - * @param suffix Suffix to add to the modified key - */ - void SetSuffix(KeySuffix &&suffix) { - m_suffix = Internal::Forward(suffix); - } - - /** - * @brief Fluent setter for the suffix - * @param suffix Suffix to add to the modified key - * @return Reference to this object for method chaining - */ - Min &WithSuffix(KeySuffix &&suffix) { - SetSuffix(Internal::Forward(suffix)); - return *this; - } -}; - -/** - * @brief Logs the sum of all values seen during the capture period. - */ -struct Sum : public Reduce> { - /** - * Initializes a Sum metric that logs the sum of values during the capture - * period. - */ - Sum() : Reduce(".sum", 0) {} - - /** - * @param suffix Suffix to add to the modified key. - */ - explicit Sum(KeySuffix &&suffix) - : Reduce(Internal::Forward(suffix), 0) {} - - /** - * @brief Gets the suffix - * @return The current suffix - */ - const KeySuffix &GetSuffix() const { return m_suffix; } - - /** - * @brief Sets the suffix - * @param suffix Suffix to add to the modified key - */ - void SetSuffix(KeySuffix &&suffix) { - m_suffix = Internal::Forward(suffix); - } - - /** - * @brief Fluent setter for the suffix - * @param suffix Suffix to add to the modified key - * @return Reference to this object for method chaining - */ - Sum &WithSuffix(KeySuffix &&suffix) { - SetSuffix(Internal::Forward(suffix)); - return *this; - } -}; - -/** - * @brief Logs the number of metrics seen. - */ -struct Count : public Reduce> { - /** - * Initializes a Count metric that logs the number of metrics during the - * capture period. - */ - Count() : Reduce(".count", 0) {} - - /** - * @param suffix Suffix to add to the modified key. - */ - explicit Count(KeySuffix &&suffix) - : Reduce(Internal::Forward(suffix), 0) {} - - /** - * @brief Gets the suffix - * @return The current suffix - */ - const KeySuffix &GetSuffix() const { return m_suffix; } - - /** - * @brief Sets the suffix - * @param suffix Suffix to add to the modified key - */ - void SetSuffix(KeySuffix &&suffix) { - m_suffix = Internal::Forward(suffix); - } - - /** - * @brief Fluent setter for the suffix - * @param suffix Suffix to add to the modified key - * @return Reference to this object for method chaining - */ - Count &WithSuffix(KeySuffix &&suffix) { - SetSuffix(Internal::Forward(suffix)); - return *this; - } -}; -} // namespace Metrics -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Samplers.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Samplers.h deleted file mode 100644 index c36087f8..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Samplers.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { - -struct GAMELIFT_METRICS_API ISampler { - virtual ~ISampler(); - - /** - * @brief Checks if we want to take this sample and updates internal state (if - * any). - * - * @return true if this sample should be recorded, false otherwise - */ - virtual bool ShouldTakeSample() = 0; - - /** - * @brief Gets the sample rate for this sampler - * @return The sample rate as a float between 0.0 and 1.0 inclusive - */ - virtual float GetSampleRate() const = 0; -}; - -/** - * Takes every sample. - */ -class GAMELIFT_METRICS_API SampleAll : public ISampler { -public: - bool ShouldTakeSample() { return true; } - float GetSampleRate() const override { return 1.0f; } -}; - -/** - * Takes no samples. - */ -class GAMELIFT_METRICS_API SampleNone : public ISampler { -public: - bool ShouldTakeSample() { return false; } - float GetSampleRate() const override { return 0.0f; } -}; - -namespace Internal { -/** - * Opaque wrapper around seed initialization state for per-thread RNG. - */ -struct SeedState; -} // namespace Internal - -/** - * Takes a random fraction of all samples. - */ -class GAMELIFT_METRICS_API SampleFraction : public ISampler { -public: - /** - * @param fractionToSample The fraction of samples to take. e.g. 0.90 will - * take 90% of all samples. - * - * Uses current time since epoch as default seed for the random number - * generators. - */ - explicit SampleFraction(double fractionToSample) noexcept - : SampleFraction(fractionToSample, DefaultSeed()) {} - - /** - * @param fractionToSample The fraction of samples to take. e.g. 0.90 will - * take 90% of all samples. - * @param seed The integer seed for random number generators. - */ - SampleFraction(double fractionToSample, Int64 seed) - : SampleFraction(static_cast(fractionToSample), seed) {} - - /** - * @param fractionToSample The fraction of samples to take. e.g. 0.90 will - * take 90% of all samples. - * @param seed The integer seed for random number generators. - */ - SampleFraction(float fractionToSample, Int64 seed); - - SampleFraction(const SampleFraction &) = delete; - SampleFraction &operator=(const SampleFraction &) = delete; - - SampleFraction(SampleFraction &&other) - : m_fractionToSample(other.m_fractionToSample), m_seed(other.m_seed) { - other.m_seed = nullptr; - } - - SampleFraction &operator=(SampleFraction &&other) { - m_fractionToSample = other.m_fractionToSample; - m_seed = other.m_seed; - other.m_seed = nullptr; - return *this; - } - - ~SampleFraction(); - - virtual bool ShouldTakeSample() override; - - /** - * @brief Gets the sample rate for this sampler - * @return The fraction value between 0.0 and 1.0 - */ - float GetSampleRate() const override { return m_fractionToSample; } - - /** - * @brief Gets the fraction of samples to take - * @return The fraction value between 0.0 and 1.0 - */ - float GetFractionToSample() const { return m_fractionToSample; } - - /** - * @brief Sets the fraction of samples to take - * @param fractionToSample The fraction value between 0.0 and 1.0 - */ - void SetFractionToSample(float fractionToSample) { - m_fractionToSample = fractionToSample; - } - - /** - * @brief Fluent setter for the fraction of samples to take - * @param fractionToSample The fraction value between 0.0 and 1.0 - * @return Reference to this object for method chaining - */ - SampleFraction &WithFractionToSample(float fractionToSample) { - SetFractionToSample(fractionToSample); - return *this; - } - -private: - static Int64 DefaultSeed(); - -private: - float m_fractionToSample; - Internal::SeedState *m_seed; -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ScopedTimer.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ScopedTimer.h deleted file mode 100644 index 15ddeb3c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ScopedTimer.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -/** - * INTERNAL: RAII scoped timer - * - * @param Metric Metric to record to. - * @param Clock Clock used for measurements. (@see - * Internal::HighResolutionClock) - * @param GetProcessor Functor returning the global metrics processor. - */ -template -class ScopedTimer { - // This is the no-op base case for when the metric is disabled for a build. - -public: - ScopedTimer() : m_dummy(0) {} - ~ScopedTimer() { - /* - * This line results in the dummy being 'used' which removes - * 'unused variable' warnings wherever ScopedTimer is used with - * a disabled metric. - * - * It is a no-op and will be optimized out by the compiler. - * - * If we leave ctor and dtor undefined, we get warnings because the timer - * variable is not used by calling code and does nothing itself. - */ - (void)m_dummy; - } - -private: - int m_dummy; -}; - -template -class ScopedTimer< - Metric, Clock, GetProcessor, - typename Internal::EnableIf::type> { - // This is the main case for enabled metrics. See EnableIf ^ - -private: - using Time = typename Clock::Time; - -public: - ScopedTimer() : m_startTime(Clock::Now()) {} - - ~ScopedTimer() { - const auto duration = Clock::Now() - m_startTime; - - if (!Metric::Instance().GetSampler().ShouldTakeSample()) { - return; - } - - auto *processor = GetProcessor()(); - if (processor) { - processor->Enqueue(MetricMessage::TimerSet( - Metric::Instance(), Clock::ToMilliseconds(duration))); - } else { - GAMELIFT_METRICS_LOG_CRITICAL("Metrics processor is not initialized"); - } - } - -private: - Time m_startTime; -}; - -/** - * INTERNAL: default processor - */ -struct GAMELIFT_METRICS_API DefaultGetProcessor { - IMetricsProcessor *operator()() { return GameLiftMetricsGlobalProcessor(); } -}; - -} // namespace Internal - -/** - * @brief Scoped timer. Measures its own lifetime. - * - * Timing begins at construction and ends when destroyed. - * Time collected in milliseconds and sent using the provided metric. - * - * @param Metric The name of a metric declared with - * GAMELIFT_METRIC_DECLARE_TIMER - */ -template -using ScopedTimer = Internal::ScopedTimer; -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ScopedTimerMacros.inl b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ScopedTimerMacros.inl deleted file mode 100644 index f0b455d3..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/ScopedTimerMacros.inl +++ /dev/null @@ -1,37 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ - -/** - * Times a scope. - * - * Timing begins when called and ends when the scope exits. - * - * @param metric Metric declared with GAMELIFT_METRICS_DECLARE_TIMER - */ -#define GAMELIFT_METRICS_TIME_SCOPE(metric) \ - static_assert(Aws::GameLift::Metrics::IsSupported::value, "Metric '" #metric "' is not a timer. GAMELIFT_METRICS_TIME_SCOPE only supports timers."); \ - ::Aws::GameLift::Metrics::Internal::MacroScopedTimer _GAMELIFT_INTERNAL_TIME_SCOPE_##metric_##__LINE__ - -/** - * Times an expression. For example, a function call. - * - * @param metric Metric declared with GAMELIFT_METRICS_DECLARE_TIMER - * @param expr Expression to time - * @returns Result of `expr`. - */ -#define GAMELIFT_METRICS_TIME_EXPR(metric, expr) \ - [&]() \ - { \ - static_assert(Aws::GameLift::Metrics::IsSupported::value, "Metric '" #metric "' is not a timer. GAMELIFT_METRICS_TIME_EXPR only supports timers."); \ - ::Aws::GameLift::Metrics::Internal::MacroScopedTimer _GAMELIFT_INTERNAL_TIME_EXPR_##metric_##__LINE__; \ - return (expr); \ - }() diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/StatsDClient.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/StatsDClient.h deleted file mode 100644 index d3408970..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/StatsDClient.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -#ifdef GAMELIFT_USE_STD -#include -#endif - -namespace Aws { -namespace GameLift { -namespace Metrics { - -class StatsDClient { -public: -#ifdef GAMELIFT_USE_STD - StatsDClient(const std::string& host, int port); -#else - StatsDClient(const char* host, int port); -#endif - ~StatsDClient() = default; - - void Send(const char* data, int size); - -private: - asio::io_service m_io_service; - asio::ip::udp::socket m_socket; - asio::ip::udp::endpoint m_endpoint; -}; - -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TagMacros.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TagMacros.h deleted file mode 100644 index ebdbfd30..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TagMacros.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -/** - * @brief Sets a global tag applied to all metrics. - * - * @param platform The platform on which this tag is set. If not enabled, the - * tag will not be added. - * @param key Key string - * @param expr String expression - */ -#define GAMELIFT_METRICS_GLOBAL_TAG_SET(platform, key, expr) \ - IF_CONSTEXPR(platform::bEnabled) { \ - auto *processor = GameLiftMetricsGlobalProcessor(); \ - if (processor) { \ - processor->SetGlobalTag(key, expr); \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } - -/** - * @brief Removes global tag. - * - * @param platform The platform on which this tag is set. If not enabled, the - * tag will not be added. - * @param key Key string - */ -#define GAMELIFT_METRICS_GLOBAL_TAG_REMOVE(platform, key) \ - IF_CONSTEXPR(platform::bEnabled) { \ - auto *processor = GameLiftMetricsGlobalProcessor(); \ - if (processor) { \ - processor->RemoveGlobalTag(key); \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } - -/** - * @brief Sets a tag for a specific metric. - * - * @param metric The metric to apply the tag to. Declared with - * GAMELIFT_METRIC_DECLARE_XXXXXX - * @param key Key string - * @param expr String expression - */ -#define GAMELIFT_METRICS_TAG_SET(metric, key, expr) \ - IF_CONSTEXPR(metric::Platform::bEnabled) { \ - auto *processor = GameLiftMetricsGlobalProcessor(); \ - if (processor) { \ - processor->Enqueue(::Aws::GameLift::Metrics::MetricMessage::TagSet( \ - metric::Instance(), key, (expr))); \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } - -/** - * @brief Removes a tag for a specific metric. - * - * @param metric The metric to apply the tag to. Declared with - * GAMELIFT_METRIC_DECLARE_XXXXXX - * @param key Key string - */ -#define GAMELIFT_METRICS_TAG_REMOVE(metric, key) \ - IF_CONSTEXPR(metric::Platform::bEnabled) { \ - auto *processor = GameLiftMetricsGlobalProcessor(); \ - if (processor) { \ - processor->Enqueue(::Aws::GameLift::Metrics::MetricMessage::TagRemove( \ - metric::Instance(), key)); \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Tags.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Tags.h deleted file mode 100644 index 5a4f57ba..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/Tags.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include - -class DynamicTag; -using namespace ::Aws::GameLift::Metrics; - -class Tags { -public: - /** - * @brief Handles a Tag message, updating current tags for metrics. - * - * Cleans up any dynamic allocations. - */ - void Handle(MetricMessage &message); - - /** - * @brief Retrieves the current tags for a particular metric. - * - * @param metricKey - the (static) key for the metric we're interested in. - * - * @return map of metrics for the metric or empty map if no tags are set. - */ - const std::unordered_map & - GetTags(const IMetric *metric) const { - auto it = m_tags.find(metric); - if (it == std::end(m_tags)) { - static const std::unordered_map emptyMap; - return emptyMap; - } - return it->second; - } - -private: - void HandleSet(const IMetric *metric, MetricSetTag &message); - void HandleRemove(const IMetric *metric, MetricSetTag &message); - -private: - std::unordered_map> - m_tags; -}; \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TimerMacros.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TimerMacros.h deleted file mode 100644 index 0feae85b..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TimerMacros.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include - -/** - * INTERNAL: sets timer to value in milliseconds - */ -#define _GAMELIFT_METRICS_INTERNAL_SET_MS(metric, expr) \ - IF_CONSTEXPR(metric::Platform::bEnabled) { \ - if (metric::Instance().GetSampler().ShouldTakeSample()) { \ - auto *processor = GameLiftMetricsGlobalProcessor(); \ - if (processor) { \ - processor->Enqueue(::Aws::GameLift::Metrics::MetricMessage::TimerSet( \ - metric::Instance(), expr)); \ - } else { \ - GAMELIFT_METRICS_LOG_CRITICAL( \ - "Global metrics processor is not initialized"); \ - } \ - } \ - } - -/** - * @brief Sets a timer to a value in milliseconds. - * - * Always executes expression. - * - * @param metric Metric declared with GAMELIFT_METRICS_DECLARE_TIMER - * @param expr Value in milliseconds. - * - * @returns Result of expr. - */ -#define GAMELIFT_METRICS_SET_MS(metric, expr) \ - [&]() { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Timer>::value, \ - "Metric '" #metric \ - "' is not a timer. GAMELIFT_METRICS_SET_MS only supports timers."); \ - auto value = (expr); \ - _GAMELIFT_METRICS_INTERNAL_SET_MS(metric, value) \ - return value; \ - }() - -/** - * @brief Sets a timer to a value in seconds. - * - * Always executes expression. - * - * @param metric Metric declared with GAMELIFT_METRICS_DECLARE_TIMER - * @param expr Value in seconds. - * - * @returns Result of expr. - */ -#define GAMELIFT_METRICS_SET_SEC(metric, expr) \ - [&]() { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Timer>::value, \ - "Metric '" #metric \ - "' is not a timer. GAMELIFT_METRICS_SET_SEC only supports timers."); \ - auto value = (expr); \ - _GAMELIFT_METRICS_INTERNAL_SET_MS(metric, value * 1000.0) \ - return value; \ - }() - -/** - * @brief Sets a timer to a value in milliseconds. - * - * Only executes expression when sampled. - * - * @param metric Metric declared with GAMELIFT_METRICS_DECLARE_TIMER - * @param expr Value in milliseconds. - */ -#define GAMELIFT_METRICS_SET_MS_SAMPLED(metric, expr) \ - do { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Timer>::value, \ - "Metric '" #metric \ - "' is not a timer. GAMELIFT_METRICS_SET_MS_SAMPLED only supports " \ - "timers."); \ - _GAMELIFT_METRICS_INTERNAL_SET_MS(metric, expr) \ - } while (0) - -/** - * @brief Sets a timer to a value in seconds. - * - * Only executes expression when sampled. - * - * @param metric Metric declared with GAMELIFT_METRICS_DECLARE_TIMER - * @param expr Value in seconds. - */ -#define GAMELIFT_METRICS_SET_SEC_SAMPLED(metric, expr) \ - do { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Timer>::value, \ - "Metric '" #metric \ - "' is not a timer. GAMELIFT_METRICS_SET_SEC_SAMPLED only supports " \ - "timers."); \ - _GAMELIFT_METRICS_INTERNAL_SET_MS(metric, (expr)*1000.0) \ - } while (0) - -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -template -class MacroScopedTimer - : public ::Aws::GameLift::Metrics::Internal::ScopedTimer< - Metric, ::Aws::GameLift::Metrics::Internal::HighResolutionClock, - ::Aws::GameLift::Metrics::Internal::DefaultGetProcessor> {}; - -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -#include - -/** - * @brief Times an expression. For example, a function call. - * - * Only executes expression if sampled. - * - * @param metric Metric declared with GAMELIFT_METRICS_DECLARE_TIMER - * @param expr Expression to time - */ -#define GAMELIFT_METRICS_TIME_EXPR_SAMPLED(metric, expr) \ - do { \ - static_assert( \ - Aws::GameLift::Metrics::IsSupported< \ - metric::MetricType, Aws::GameLift::Metrics::Timer>::value, \ - "Metric '" #metric \ - "' is not a timer. GAMELIFT_METRICS_TIME_EXPR_SAMPLED only supports " \ - "timers."); \ - _GAMELIFT_METRICS_INTERNAL_SET_MS(metric, [&]() { \ - const auto Start = \ - ::Aws::GameLift::Metrics::Internal::HighResolutionClock::Now(); \ - (expr); \ - const auto End = \ - ::Aws::GameLift::Metrics::Internal::HighResolutionClock::Now(); \ - return ::Aws::GameLift::Metrics::Internal::HighResolutionClock:: \ - ToMilliseconds(End - Start); \ - }()) \ - } while (0) \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TypeTraits.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TypeTraits.h deleted file mode 100644 index cdba0f97..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/TypeTraits.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -/** - * @brief We define some type_traits-like types here. - * - * When GAMELIFT_USE_STD is on, we simply typedef them to be standard library - * type traits to take advantage of compiler optimizations (if any). - * - * Otherwise, we define our own minimal implementations. - */ -#ifdef GAMELIFT_USE_STD -#include -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -template -using Conditional = std::conditional; - -template using IsSame = std::is_same; - -using TrueType = std::true_type; - -template using EnableIf = std::enable_if; - -template using RemoveReference = std::remove_reference; - -template using NumericLimits = std::numeric_limits; - -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#else -#include - -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { -struct GAMELIFT_METRICS_API TrueType { -#if GAMELIFT_METRICS_CPP_17 - static constexpr bool value = true; -#else - static const bool value = true; -#endif // GAMELIFT_METRICS_CPP_17 -}; - -struct GAMELIFT_METRICS_API FalseType { -#if GAMELIFT_METRICS_CPP_17 - static constexpr bool value = false; -#else - static const bool value = false; -#endif // GAMELIFT_METRICS_CPP_17 -}; - -template struct Conditional; - -template -struct Conditional { - using type = TrueType; -}; - -template -struct Conditional { - using type = FalseType; -}; - -template struct IsSame : public FalseType {}; - -template struct IsSame : public TrueType {}; - -template struct EnableIf {}; - -template struct EnableIf { using type = T; }; - -template struct RemoveReference { using type = T; }; - -template struct RemoveReference { using type = T; }; - -template struct RemoveReference { using type = T; }; - -template struct NumericLimits; - -#ifdef max -#undef max -#endif - -template <> struct NumericLimits { - static constexpr double max() { return DBL_MAX; } -}; - -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws - -#endif // GAMELIFT_USE_STD - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -template -inline T &&Forward(typename RemoveReference::type &Value) { - return static_cast(Value); -} - -template -inline T &&Forward(typename RemoveReference::type &&Value) { - return static_cast(Value); -} - -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/UniquePtr.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/UniquePtr.h deleted file mode 100644 index 4c92f38c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/metrics/UniquePtr.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates - * or its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root - * of this distribution (the "License"). All use of this software is governed by - * the License, or, if provided, by the license below or the license - * accompanying this file. Do not remove or modify any license notices. This - * file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. - * - */ -#pragma once - -#ifdef GAMELIFT_USE_STD -#include - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -template using UniquePtr = std::unique_ptr; - -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#else - -namespace Aws { -namespace GameLift { -namespace Metrics { -namespace Internal { - -template class GAMELIFT_METRICS_API UniquePtr { -public: - UniquePtr() : Ptr(nullptr) {} - UniquePtr(T *Ptr) noexcept : Ptr(Ptr) {} - - ~UniquePtr() { delete Ptr; } - - // no copy - UniquePtr(const UniquePtr &) = delete; - UniquePtr &operator=(const UniquePtr &) = delete; - - UniquePtr(UniquePtr &&Other) : Ptr(nullptr) { swap(*this, Other); } - UniquePtr &operator=(UniquePtr &&Other) { - swap(*this, Other); - return *this; - } - - T *get() { return Ptr; } - const T *get() const { return Ptr; } - - void reset(T *NewPtr = nullptr) { - delete Ptr; - Ptr = NewPtr; - } - - T &operator*() { return *Ptr; } - const T &operator*() const { return *Ptr; } - - T *operator->() { return Ptr; } - const T *operator->() const { return Ptr; } - - operator bool() const { return Ptr ? true : false; } - - friend void swap(UniquePtr &A, UniquePtr &B) { - auto Temp = A.Ptr; - A.Ptr = B.Ptr; - B.Ptr = Temp; - } - -private: - T *Ptr = nullptr; -}; - -} // namespace Internal -} // namespace Metrics -} // namespace GameLift -} // namespace Aws -#endif // GAMELIFT_USE_STD diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/GameLiftServerAPI.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/GameLiftServerAPI.h deleted file mode 100644 index f254f448..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/GameLiftServerAPI.h +++ /dev/null @@ -1,336 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -/* The GameLiftServerAPI contains methods that should be used by the server executable you upload to - * Amazon GameLift Servers. */ - -namespace Aws { -namespace GameLift { -namespace Internal { -class GameLiftServerState; -} -namespace Server { -#ifdef GAMELIFT_USE_STD -typedef Aws::GameLift::Outcome InitSDKOutcome; -typedef Aws::GameLift::Outcome, GameLiftError> GetExpectedPlayerSessionIDsOutcome; -typedef Aws::GameLift::Outcome, GameLiftError> GetConnectedPlayerSessionIDsOutcome; - -/** -@return The current SDK version. -*/ -AWS_GAMELIFT_API AwsStringOutcome GetSdkVersion(); - -/** -Initializes the game server. -Should be called when the server starts, before any Amazon GameLift Servers dependent initialization happens. -Should be only used with Managed EC2 fleets, where the serer parameters are read from the environment. -@return Pointer to the internal server state indicating that the server process is ready to call ProcessReady(). -*/ -AWS_GAMELIFT_API InitSDKOutcome InitSDK(); - -/** -Initializes the game server. -Should be called when the server starts with the given server parameters, before any Amazon GameLift Servers dependent initialization happens. -@return Pointer to the internal server state indicating that the server process is ready to call ProcessReady(). -*/ -AWS_GAMELIFT_API InitSDKOutcome InitSDK(const Aws::GameLift::Server::Model::ServerParameters &serverParameters); - -/** -Initializes the metrics system with default configuration parameters. -For best results, it's recommended to call this method before InitSDK() to enable metrics collection. -Uses default values, overridden by environment variables if available. -Defaults: localhost:8125 for StatsD, localhost:8126 for crash reporter -FlushInterval: 10000ms, MaxPacketSize: 512 bytes -Override with environment variables: GAMELIFT_STATSD_HOST, GAMELIFT_STATSD_PORT, etc. -@return GenericOutcome indicating success or failure. -*/ -AWS_GAMELIFT_API GenericOutcome InitMetrics(); - -/** -Initializes the metrics system with the specified configuration parameters. -For best results, it's recommended to call this method before InitSDK() to enable metrics collection. -Uses the provided parameters exactly as specified. To use environment variables or defaults, call InitMetrics() instead. -@param metricsParameters A MetricsParameters object containing configuration for metrics collection: -- StatsD server host and port for metrics reporting -- Crash reporter host and port for crash tracking -- Metrics maximum packet size and flush interval settings -@return GenericOutcome indicating success or failure. -*/ -AWS_GAMELIFT_API GenericOutcome InitMetrics(const Aws::GameLift::Server::MetricsParameters &metricsParameters); - -/** -Signals Amazon GameLift Servers that the process is ready to receive GameSessions. -The onStartGameSession callback will be invoked when the server is bound to a GameSession. -Game-property-dependent initialization (such as loading a user-requested map) should take place at -that time. The onHealthCheck callback is invoked asynchronously. There is no mechanism to to destroy -the resulting thread. If it does not complete in a given time period the server status will be -reported as unhealthy. -@param processParameters The parameters required to successfully run the process. -*/ -AWS_GAMELIFT_API GenericOutcome ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters); - -/** -Signals Amazon GameLift Servers that the process is ending. -Amazon GameLift Servers will eventually terminate the process and recycle the host. Once the process is marked as -Ending, -*/ -AWS_GAMELIFT_API GenericOutcome ProcessEnding(); - -/** -Reports to Amazon GameLift Servers that the server process is now ready to receive player sessions. -Should be called once all GameSession initialization has finished. -*/ -AWS_GAMELIFT_API GenericOutcome ActivateGameSession(); - -/** -Reports to Amazon GameLift Servers that we need to backfill a match using FlexMatch. -When the match has been succeessfully backfilled updated matchmaker data will be sent to -the OnUpdateGameSession callback. -*/ -AWS_GAMELIFT_API StartMatchBackfillOutcome StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &startMatchBackfillRequest); - -/** -Reports to GameLift that we need to stop a request to backfill a match using FlexMatch. -*/ -AWS_GAMELIFT_API GenericOutcome StopMatchBackfill(const Aws::GameLift::Server::Model::StopMatchBackfillRequest &request); - -/** -update player session policy on the GameSession -*/ -AWS_GAMELIFT_API GenericOutcome UpdatePlayerSessionCreationPolicy(Aws::GameLift::Server::Model::PlayerSessionCreationPolicy newPlayerSessionPolicy); - -/** - @return The server's bound GameSession Id, if the server is Active. - */ -AWS_GAMELIFT_API AwsStringOutcome GetGameSessionId(); - -/** -Gets the time remaining before Amazon GameLift Servers will shut down the server process. Use this method in your -onProcessTerminate() callback implementation to learn when the process will be terminated. -@return The server's terminationTime in epoch seconds. Value will be -1 if Amazon GameLift Servers is not scheduled -to terminate the server process. -*/ -AWS_GAMELIFT_API AwsLongOutcome GetTerminationTime(); - -/** - Processes and validates a player session connection. This method should be called when a client - requests a connection to the server. The client should send the PlayerSessionID which it received - from RequestPlayerSession or GameLift::CreatePlayerSession to be passed into this function. This - method will return an UNEXPECTED_PLAYER_SESSION error if the player session ID is invalid. - @param playerSessionId the ID of the joining player's session. - */ -AWS_GAMELIFT_API GenericOutcome AcceptPlayerSession(const std::string &playerSessionId); - -/** - Processes a player session disconnection. Should be called when a player leaves or otherwise - disconnects from the server. - @param playerSessionId the ID of the joining player's session. - */ -AWS_GAMELIFT_API GenericOutcome RemovePlayerSession(const std::string &playerSessionId); - -/** -

Retrieves properties for one or more player sessions. This action can be used - in several ways: (1) provide a PlayerSessionId parameter to request - properties for a specific player session; (2) provide a - GameSessionId parameter to request properties for all player - sessions in the specified game session; (3) provide a PlayerId - parameter to request properties for all player sessions of a specified player. -

You can filter this request by player session status. Use the pagination - parameters to retrieve results as a set of sequential pages. If successful, a - PlayerSession object is returned for each session matching the request.

-*/ -AWS_GAMELIFT_API DescribePlayerSessionsOutcome -DescribePlayerSessions(const Aws::GameLift::Server::Model::DescribePlayerSessionsRequest &describePlayerSessionsRequest); - -#else -/** -@return The current SDK version. -*/ -AWS_GAMELIFT_API AwsStringOutcome GetSdkVersion(); - -/** -Initializes the game server. -Should be called when the server starts, before any Amazon GameLift Servers dependent initialization happens. -Should be only used with Managed EC2 fleets, where the serer parameters are read from the environment. -@return Pointer to the internal server state indicating that the server process is ready to call ProcessReady(). -*/ -AWS_GAMELIFT_API GenericOutcome InitSDK(); - -/** -Initializes the game server. -Should be called when the server starts with the given server parameters, before any Amazon GameLift Servers dependent initialization happens. -@return Pointer to the internal server state indicating that the server process is ready to call ProcessReady(). -*/ -AWS_GAMELIFT_API GenericOutcome InitSDK(const Aws::GameLift::Server::Model::ServerParameters &serverParameters); - -/** -Initializes the metrics system with default configuration parameters. -For best results, it's recommended to call this method before InitSDK() to enable metrics collection. -Uses default values, overridden by environment variables if available. -Defaults: localhost:8125 for StatsD, localhost:8126 for crash reporter -FlushInterval: 10000ms, MaxPacketSize: 512 bytes -Override with environment variables: GAMELIFT_STATSD_HOST, GAMELIFT_STATSD_PORT, etc. -@return GenericOutcome indicating success or failure. -*/ -AWS_GAMELIFT_API GenericOutcome InitMetrics(); - -/** -Initializes the metrics system with the specified configuration parameters. -For best results, it's recommended to call this method before InitSDK() to enable metrics collection. -Uses the provided parameters exactly as specified. To use environment variables or defaults, call InitMetrics() instead. -@param metricsParameters A MetricsParameters object containing configuration for metrics collection: -- StatsD server host and port for metrics reporting -- Crash reporter host and port for crash tracking -- Metrics maximum packet size and flush interval settings -@return GenericOutcome indicating success or failure. -*/ -AWS_GAMELIFT_API GenericOutcome InitMetrics(const Aws::GameLift::Server::MetricsParameters &metricsParameters); - -/** -Signals Amazon GameLift Servers that the process is ready to receive GameSessions. -The onStartGameSession callback will be invoked when the server is bound to a GameSession. -Game-property-dependent initialization (such as loading a user-requested map) should take place at -that time. The onHealthCheck callback is invoked asynchronously. There is no mechanism to to destroy -the resulting thread. If it does not complete in a given time period the server status will be -reported as unhealthy. -@param processParameters The parameters required to successfully run the process. -*/ -AWS_GAMELIFT_API GenericOutcome ProcessReady(const Aws::GameLift::Server::ProcessParameters &processParameters); - -/** -Signals Amazon GameLift Servers that the process is ending. -Amazon GameLift Servers will eventually terminate the process and recycle the host. Once the process is marked as -Ending, -*/ -AWS_GAMELIFT_API GenericOutcome ProcessEnding(); - -/** -Reports to Amazon GameLift Servers that the server process is now ready to receive player sessions. -Should be called once all GameSession initialization has finished. -*/ -AWS_GAMELIFT_API GenericOutcome ActivateGameSession(); - -/** -Reports to Amazon GameLift Servers that we need to backfill a match using FlexMatch. -When the match has been succeessfully backfilled updated matchmaker data will be sent to -the OnUpdateGameSession callback. -*/ -AWS_GAMELIFT_API StartMatchBackfillOutcome StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &startMatchBackfillRequest); - -/** -Reports to Amazon GameLift Servers that we need to backfill a match using FlexMatch. -When the match has been succeessfully backfilled updated matchmaker data will be sent to -the OnUpdateGameSession callback. -*/ -AWS_GAMELIFT_API StartMatchBackfillOutcome StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &startMatchBackfillRequest); - -/** -Reports to Amazon GameLift Servers that we need to stop a request to backfill a match using FlexMatch. -*/ -AWS_GAMELIFT_API GenericOutcome StopMatchBackfill(const Aws::GameLift::Server::Model::StopMatchBackfillRequest &request); - -/** -Reports to Amazon GameLift Servers that we need to backfill a match using FlexMatch. -When the match has been succeessfully backfilled updated matchmaker data will be sent to -the OnUpdateGameSession callback. -*/ -AWS_GAMELIFT_API StartMatchBackfillOutcome StartMatchBackfill(const Aws::GameLift::Server::Model::StartMatchBackfillRequest &startMatchBackfillRequest); - -/** -Reports to GameLift that we need to stop a request to backfill a match using FlexMatch. -*/ -AWS_GAMELIFT_API GenericOutcome StopMatchBackfill(const Aws::GameLift::Server::Model::StopMatchBackfillRequest &request); - -/** -update player session policy on the GameSession -*/ -AWS_GAMELIFT_API GenericOutcome UpdatePlayerSessionCreationPolicy(Aws::GameLift::Server::Model::PlayerSessionCreationPolicy newPlayerSessionPolicy); - -/** -@return The server's bound GameSession Id, if the server is Active. -*/ -AWS_GAMELIFT_API AwsStringOutcome GetGameSessionId(); - -/** -Gets the time remaining before Amazon GameLift Servers will shut down the server process. Use this method in your -onProcessTerminate() callback implementation to learn when the process will be terminated. -@return The server's terminationTime in epoch seconds. Value will be -1 if Amazon GameLift Servers is not scheduled -to terminate the server process. -*/ -AWS_GAMELIFT_API AwsLongOutcome GetTerminationTime(); - -/** -Processes and validates a player session connection. This method should be called when a client -requests a connection to the server. The client should send the PlayerSessionID which it received -from RequestPlayerSession or GameLift::CreatePlayerSession to be passed into this function. This -method will return an UNEXPECTED_PLAYER_SESSION error if the player session ID is invalid. -@param playerSessionId the ID of the joining player's session. -*/ -AWS_GAMELIFT_API GenericOutcome AcceptPlayerSession(const char *playerSessionId); - -/** -Processes a player session disconnection. Should be called when a player leaves or otherwise -disconnects from the server. -@param playerSessionId the ID of the joining player's session. -*/ -AWS_GAMELIFT_API GenericOutcome RemovePlayerSession(const char *playerSessionId); - -/** -

Retrieves properties for one or more player sessions. This action can be used - in several ways: (1) provide a PlayerSessionId parameter to request - properties for a specific player session; (2) provide a - GameSessionId parameter to request properties for all player - sessions in the specified game session; (3) provide a PlayerId - parameter to request properties for all player sessions of a specified player. -

You can filter this request by player session status. Use the pagination - parameters to retrieve results as a set of sequential pages. If successful, a - PlayerSession object is returned for each session matching the request.

-*/ -AWS_GAMELIFT_API DescribePlayerSessionsOutcome -DescribePlayerSessions(const Aws::GameLift::Server::Model::DescribePlayerSessionsRequest &describePlayerSessionsRequest); - -#endif - -/** -

Destroys allocated resources.

-*/ -AWS_GAMELIFT_API GenericOutcome Destroy(); - -/** -

Retrieves the certificate, private key and password in PEM format. -Will only succeed if the certificate generation is enabled on the fleet.

-*/ -AWS_GAMELIFT_API GetComputeCertificateOutcome GetComputeCertificate(); - -/** - * Retrieves the instance role credentials for the host on managed EC2. Returns an - * error for customer managed hardware. - */ -AWS_GAMELIFT_API GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(const Aws::GameLift::Server::Model::GetFleetRoleCredentialsRequest &request); - -} // namespace Server -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/LogParameters.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/LogParameters.h deleted file mode 100644 index a704b3b4..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/LogParameters.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_LOG_PATHS -#define MAX_LOG_PATHS 10 -#endif -#ifndef MAX_PATH_LENGTH -#define MAX_PATH_LENGTH 1024 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -class LogParameters { -#ifdef GAMELIFT_USE_STD -public: - AWS_GAMELIFT_API LogParameters() {} - AWS_GAMELIFT_API LogParameters(const std::vector &logPaths) : m_logPaths(logPaths) {} - - // Copy constructor - AWS_GAMELIFT_API LogParameters(const LogParameters &o) : m_logPaths(o.getLogPaths()) {} - - // Move Constructor - AWS_GAMELIFT_API LogParameters(LogParameters &&o) : m_logPaths(std::move(o.getLogPaths())) {} - - AWS_GAMELIFT_API LogParameters &operator=(const LogParameters &o) { - if (this != &o) { - m_logPaths = o.getLogPaths(); - } - - return *this; - } - - AWS_GAMELIFT_API LogParameters &operator=(LogParameters &&o) { - if (this != &o) { - m_logPaths = std::move(o.getLogPaths()); - } - - return *this; - } - - AWS_GAMELIFT_API std::vector getLogPaths() const { return m_logPaths; } - - AWS_GAMELIFT_API int getLogPathCount() const { return m_logPaths.size(); } - - AWS_GAMELIFT_API const char *getLogPath(int index) const { return index < m_logPaths.size() ? m_logPaths[index].c_str() : nullptr; } - - AWS_GAMELIFT_API bool operator==(const LogParameters &other) const { return getLogPaths() == other.getLogPaths(); } - -private: - std::vector m_logPaths; -}; -#else -public: - AWS_GAMELIFT_API LogParameters() : m_count(0) { memset(m_logPaths, 0, sizeof(m_logPaths)); } - - AWS_GAMELIFT_API LogParameters(const char *const *logPaths, int count); - - AWS_GAMELIFT_API LogParameters(const LogParameters &o); - - AWS_GAMELIFT_API LogParameters &operator=(const LogParameters &o) { - if (this == &o) { - return *this; - } - - int count = o.getLogPathCount(); - m_count = (count < MAX_LOG_PATHS) ? count : MAX_LOG_PATHS; - for (int i = 0; i < m_count; ++i) { -#ifdef WIN32 - strcpy_s(m_logPaths[i], MAX_PATH_LENGTH, o.getLogPath(i)); -#else - strncpy(m_logPaths[i], o.getLogPath(i), MAX_PATH_LENGTH); -#endif - } - - return *this; - } - - AWS_GAMELIFT_API int getLogPathCount() const { return m_count; } - - AWS_GAMELIFT_API const char *getLogPath(int index) const { return index < m_count ? m_logPaths[index] : nullptr; } - - AWS_GAMELIFT_API bool operator==(const LogParameters &other) const { - if (getLogPathCount() != other.getLogPathCount()) { - return false; - } - - for (size_t i = 0; i < getLogPathCount(); i++) { - if (strcmp(getLogPath(i), other.getLogPath(i)) != 0) { - return false; - } - } - - return true; - } - -private: - char m_logPaths[MAX_LOG_PATHS][MAX_PATH_LENGTH]; - int m_count; -}; -#endif -} // namespace Server -} // namespace GameLift -} // namespace Aws \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/MetricsParameters.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/MetricsParameters.h deleted file mode 100644 index 9cd462d1..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/MetricsParameters.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_STATSD_HOST_LENGTH -#define MAX_STATSD_HOST_LENGTH 256 -#endif -#ifndef MAX_CRASH_REPORTER_HOST_LENGTH -#define MAX_CRASH_REPORTER_HOST_LENGTH 256 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { - -class AWS_GAMELIFT_API MetricsParameters { -#ifdef GAMELIFT_USE_STD -public: - MetricsParameters(const std::string &statsDHost, int statsDPort, const std::string &crashReporterHost, - int crashReporterPort, int flushIntervalMs, int maxPacketSize) - : m_statsDHost(statsDHost), m_statsDPort(statsDPort), m_crashReporterHost(crashReporterHost), - m_crashReporterPort(crashReporterPort), m_flushIntervalMs(flushIntervalMs), m_maxPacketSize(maxPacketSize) {} - - MetricsParameters(const MetricsParameters &) = default; - MetricsParameters(MetricsParameters &&) = default; - MetricsParameters &operator=(const MetricsParameters &) = default; - MetricsParameters &operator=(MetricsParameters &&) = default; - - inline const std::string &GetStatsDHost() const { return m_statsDHost; } - inline int GetStatsDPort() const { return m_statsDPort; } - inline int GetFlushIntervalMs() const { return m_flushIntervalMs; } - inline int GetMaxPacketSize() const { return m_maxPacketSize; } - inline const std::string &GetCrashReporterHost() const { return m_crashReporterHost; } - inline int GetCrashReporterPort() const { return m_crashReporterPort; } - - inline void SetStatsDHost(const std::string &statsDHost) { m_statsDHost = statsDHost; } - inline void SetStatsDPort(int statsDPort) { m_statsDPort = statsDPort; } - inline void SetFlushIntervalMs(int flushIntervalMs) { m_flushIntervalMs = flushIntervalMs; } - inline void SetMaxPacketSize(int maxPacketSize) { m_maxPacketSize = maxPacketSize; } - inline void SetCrashReporterHost(const std::string &crashReporterHost) { m_crashReporterHost = crashReporterHost; } - inline void SetCrashReporterPort(int crashReporterPort) { m_crashReporterPort = crashReporterPort; } - -private: - std::string m_statsDHost; - int m_statsDPort; - std::string m_crashReporterHost; - int m_crashReporterPort; - int m_flushIntervalMs; - int m_maxPacketSize; - -#else -public: - MetricsParameters(const char *statsDHost, int statsDPort, const char *crashReporterHost, - int crashReporterPort, int flushIntervalMs, int maxPacketSize) - : m_statsDPort(statsDPort), m_crashReporterPort(crashReporterPort), m_flushIntervalMs(flushIntervalMs), m_maxPacketSize(maxPacketSize) { - if (statsDHost != nullptr) { - strncpy(m_statsDHost, statsDHost, MAX_STATSD_HOST_LENGTH - 1); - m_statsDHost[MAX_STATSD_HOST_LENGTH - 1] = '\0'; - } - if (crashReporterHost != nullptr) { - strncpy(m_crashReporterHost, crashReporterHost, MAX_CRASH_REPORTER_HOST_LENGTH - 1); - m_crashReporterHost[MAX_CRASH_REPORTER_HOST_LENGTH - 1] = '\0'; - } - } - - MetricsParameters(const MetricsParameters &other) : m_statsDPort(other.m_statsDPort), m_crashReporterPort(other.m_crashReporterPort), - m_flushIntervalMs(other.m_flushIntervalMs), m_maxPacketSize(other.m_maxPacketSize) { - strncpy(m_statsDHost, other.m_statsDHost, MAX_STATSD_HOST_LENGTH - 1); - m_statsDHost[MAX_STATSD_HOST_LENGTH - 1] = '\0'; - strncpy(m_crashReporterHost, other.m_crashReporterHost, MAX_CRASH_REPORTER_HOST_LENGTH - 1); - m_crashReporterHost[MAX_CRASH_REPORTER_HOST_LENGTH - 1] = '\0'; - } - - MetricsParameters &operator=(const MetricsParameters &other) { - if (this != &other) { - m_statsDPort = other.m_statsDPort; - m_flushIntervalMs = other.m_flushIntervalMs; - m_maxPacketSize = other.m_maxPacketSize; - m_crashReporterPort = other.m_crashReporterPort; - strncpy(m_statsDHost, other.m_statsDHost, MAX_STATSD_HOST_LENGTH - 1); - m_statsDHost[MAX_STATSD_HOST_LENGTH - 1] = '\0'; - strncpy(m_crashReporterHost, other.m_crashReporterHost, MAX_CRASH_REPORTER_HOST_LENGTH - 1); - m_crashReporterHost[MAX_CRASH_REPORTER_HOST_LENGTH - 1] = '\0'; - } - return *this; - } - - inline const char *GetStatsDHost() const { return m_statsDHost; } - inline int GetStatsDPort() const { return m_statsDPort; } - inline int GetFlushIntervalMs() const { return m_flushIntervalMs; } - inline int GetMaxPacketSize() const { return m_maxPacketSize; } - inline const char *GetCrashReporterHost() const { return m_crashReporterHost; } - inline int GetCrashReporterPort() const { return m_crashReporterPort; } - - inline void SetStatsDHost(const char *statsDHost) { - if (statsDHost != nullptr) { - strncpy(m_statsDHost, statsDHost, MAX_STATSD_HOST_LENGTH - 1); - m_statsDHost[MAX_STATSD_HOST_LENGTH - 1] = '\0'; - } - } - inline void SetStatsDPort(int statsDPort) { m_statsDPort = statsDPort; } - inline void SetFlushIntervalMs(int flushIntervalMs) { m_flushIntervalMs = flushIntervalMs; } - inline void SetMaxPacketSize(int maxPacketSize) { m_maxPacketSize = maxPacketSize; } - inline void SetCrashReporterHost(const char *crashReporterHost) { - if (crashReporterHost != nullptr) { - strncpy(m_crashReporterHost, crashReporterHost, MAX_CRASH_REPORTER_HOST_LENGTH - 1); - m_crashReporterHost[MAX_CRASH_REPORTER_HOST_LENGTH - 1] = '\0'; - } - } - inline void SetCrashReporterPort(int crashReporterPort) { m_crashReporterPort = crashReporterPort; } - -private: - char m_statsDHost[MAX_STATSD_HOST_LENGTH]; - int m_statsDPort; - char m_crashReporterHost[MAX_CRASH_REPORTER_HOST_LENGTH]; - int m_crashReporterPort; - int m_flushIntervalMs; - int m_maxPacketSize; -#endif -}; - -} // namespace Server -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/ProcessParameters.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/ProcessParameters.h deleted file mode 100644 index 8e4d77fb..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/ProcessParameters.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Server { -#ifndef GAMELIFT_USE_STD -typedef void (*StartGameSessionFn)(Aws::GameLift::Server::Model::GameSession, void *); -typedef void (*UpdateGameSessionFn)(Aws::GameLift::Server::Model::UpdateGameSession, void *); -typedef void (*ProcessTerminateFn)(void *); -typedef bool (*HealthCheckFn)(void *); -#endif - -class ProcessParameters { -#ifdef GAMELIFT_USE_STD -public: - ProcessParameters() - : m_onStartGameSession(nullptr), m_onUpdateGameSession(nullptr), m_onProcessTerminate(nullptr), m_onHealthCheck(nullptr), m_port(-1), - m_logParameters(LogParameters()) {} - - ProcessParameters(const std::function onStartGameSession, const std::function onProcessTerminate, - const std::function onHealthCheck, int port, const Aws::GameLift::Server::LogParameters logParameters) - : m_onStartGameSession(onStartGameSession), m_onUpdateGameSession([](const Aws::GameLift::Server::Model::UpdateGameSession &) {}), - m_onProcessTerminate(onProcessTerminate), m_onHealthCheck(onHealthCheck), m_port(port), m_logParameters(logParameters) {} - - ProcessParameters(const std::function onStartGameSession, - const std::function onUpdateGameSession, - const std::function onProcessTerminate, const std::function onHealthCheck, int port, - const Aws::GameLift::Server::LogParameters logParameters) - : m_onStartGameSession(onStartGameSession), m_onUpdateGameSession(onUpdateGameSession), m_onProcessTerminate(onProcessTerminate), - m_onHealthCheck(onHealthCheck), m_port(port), m_logParameters(logParameters) {} - - AWS_GAMELIFT_API std::function getOnStartGameSession() const { return m_onStartGameSession; } - AWS_GAMELIFT_API std::function getOnUpdateGameSession() const { return m_onUpdateGameSession; } - AWS_GAMELIFT_API std::function getOnProcessTerminate() const { return m_onProcessTerminate; } - AWS_GAMELIFT_API std::function getOnHealthCheck() const { return m_onHealthCheck; } - AWS_GAMELIFT_API int getPort() const { return m_port; } - AWS_GAMELIFT_API Aws::GameLift::Server::LogParameters getLogParameters() const { return m_logParameters; } - -private: - std::function m_onStartGameSession; - std::function m_onUpdateGameSession; - std::function m_onProcessTerminate; - std::function m_onHealthCheck; - int m_port; - Aws::GameLift::Server::LogParameters m_logParameters; -#else -public: - ProcessParameters() - : m_onStartGameSession(nullptr), m_onUpdateGameSession(nullptr), m_onProcessTerminate(nullptr), m_onHealthCheck(nullptr), - m_startGameSessionState(nullptr), m_processTerminateState(nullptr), m_healthCheckState(nullptr), m_port(-1), m_logParameters(LogParameters()) {} - - ProcessParameters(StartGameSessionFn onStartGameSession, void *startGameSessionState, UpdateGameSessionFn onUpdateGameSession, void *updateGameSessionState, - ProcessTerminateFn onProcessTerminate, void *processTerminateState, HealthCheckFn onHealthCheck, void *healthCheckState, int port, - const Aws::GameLift::Server::LogParameters logParameters) - : - - m_onStartGameSession(onStartGameSession), m_onUpdateGameSession(onUpdateGameSession), m_onProcessTerminate(onProcessTerminate), - m_onHealthCheck(onHealthCheck), m_startGameSessionState(startGameSessionState), m_updateGameSessionState(updateGameSessionState), - m_processTerminateState(processTerminateState), m_healthCheckState(healthCheckState), m_port(port), m_logParameters(logParameters) {} - - ProcessParameters(StartGameSessionFn onStartGameSession, void *startGameSessionState, ProcessTerminateFn onProcessTerminate, void *processTerminateState, - HealthCheckFn onHealthCheck, void *healthCheckState, int port, const Aws::GameLift::Server::LogParameters logParameters) - : - - m_onStartGameSession(onStartGameSession), m_onUpdateGameSession([](Aws::GameLift::Server::Model::UpdateGameSession, void *) {}), - m_onProcessTerminate(onProcessTerminate), m_onHealthCheck(onHealthCheck), m_startGameSessionState(startGameSessionState), - m_updateGameSessionState(nullptr), m_processTerminateState(processTerminateState), m_healthCheckState(healthCheckState), m_port(port), - m_logParameters(logParameters) {} - - AWS_GAMELIFT_API StartGameSessionFn getOnStartGameSession() const { return m_onStartGameSession; } - AWS_GAMELIFT_API void *getStartGameSessionState() const { return m_startGameSessionState; } - AWS_GAMELIFT_API UpdateGameSessionFn getOnUpdateGameSession() const { return m_onUpdateGameSession; } - AWS_GAMELIFT_API void *getUpdateGameSessionState() const { return m_updateGameSessionState; } - AWS_GAMELIFT_API ProcessTerminateFn getOnProcessTerminate() const { return m_onProcessTerminate; } - AWS_GAMELIFT_API void *getProcessTerminateState() const { return m_processTerminateState; } - AWS_GAMELIFT_API HealthCheckFn getOnHealthCheck() const { return m_onHealthCheck; } - AWS_GAMELIFT_API void *getHealthCheckState() const { return m_healthCheckState; } - AWS_GAMELIFT_API int getPort() const { return m_port; } - AWS_GAMELIFT_API Aws::GameLift::Server::LogParameters getLogParameters() const { return m_logParameters; } - -private: - StartGameSessionFn m_onStartGameSession; - UpdateGameSessionFn m_onUpdateGameSession; - ProcessTerminateFn m_onProcessTerminate; - HealthCheckFn m_onHealthCheck; - void *m_startGameSessionState; - void *m_updateGameSessionState; - void *m_processTerminateState; - void *m_healthCheckState; - int m_port; - Aws::GameLift::Server::LogParameters m_logParameters; -#endif -}; -} // namespace Server -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/AttributeValue.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/AttributeValue.h deleted file mode 100644 index f4502546..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/AttributeValue.h +++ /dev/null @@ -1,323 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include - -#ifndef MAX_STRING_LIST_LENGTH -#define MAX_STRING_LIST_LENGTH 10 -#endif -#ifndef MAX_STRING_MAP_SIZE -#define MAX_STRING_MAP_SIZE 10 -#endif -#ifndef MAX_STRING_LENGTH -#define MAX_STRING_LENGTH 101 -#endif - -#ifdef GAMELIFT_USE_STD -#include -#include -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -/** - *

A single player attribute value to be used when making a StartMatchBackfill - * request. This could be a string, number, string list, or string/number map. - * For more information, see the Amazon GameLift Servers - * Developer Guide.

- */ -class AWS_GAMELIFT_API AttributeValue { -public: - enum class AttrType { NONE, STRING, DOUBLE, STRING_LIST, STRING_DOUBLE_MAP }; - - /** - *

Construct an attribute value of type string list.

- */ - static AttributeValue ConstructStringList() { return AttributeValue(AttrType::STRING_LIST); } - - /** - *

Construct an attribute value of type string list.

- */ - static AttributeValue ConstructStringDoubleMap() { return AttributeValue(AttrType::STRING_DOUBLE_MAP); } - - inline AttrType GetType() const { return m_attrType; } - -#ifdef GAMELIFT_USE_STD - AttributeValue() : m_N(0), m_S(""), m_attrType(AttrType::NONE) {} - - /** - *

Construct an attribute value of type double.

- */ - explicit AttributeValue(double n) : m_N(n), m_S(""), m_attrType(AttrType::DOUBLE) {} - - /** - *

Construct an attribute value of type string.

- */ - AttributeValue(std::string s) : m_N(0), m_S(s), m_attrType(AttrType::STRING) {} - - /** - *

Destructor.

- */ - ~AttributeValue() {} - - /** - *

Copy Constructor.

- */ - AttributeValue(const AttributeValue &other) : m_S(other.m_S), m_N(other.m_N), m_SL(other.m_SL), m_SDM(other.m_SDM), m_attrType(other.m_attrType) {} - - /** - *

Move Constructor.

- */ - AttributeValue(AttributeValue &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - AttributeValue &operator=(const AttributeValue &other) { - m_S = other.m_S; - m_N = other.m_N; - m_SL = other.m_SL; - m_SDM = other.m_SDM; - m_attrType = other.m_attrType; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - AttributeValue &operator=(AttributeValue &&other) { - m_S = std::move(other.m_S); - m_N = std::move(other.m_N); - m_SL = std::move(other.m_SL); - m_SDM = std::move(other.m_SDM); - m_attrType = std::move(other.m_attrType); - - return *this; - } - - inline const std::string &GetS() const { return m_S; } - - inline double GetN() const { return m_N; } - - inline const std::vector &GetSL() const { return m_SL; } - - inline const std::map &GetSDM() const { return m_SDM; } - - inline void AddString(std::string value) { - if (m_attrType == AttrType::STRING_LIST && m_SL.size() < MAX_STRING_LIST_LENGTH) { - m_SL.emplace_back(std::move(value)); - } - } - - inline AttributeValue &WithString(std::string value) { - AddString(value); - return *this; - } - - inline void AddStringAndDouble(std::string key, double value) { - if (m_attrType == AttrType::STRING_DOUBLE_MAP && m_SDM.size() < MAX_STRING_MAP_SIZE) { - m_SDM.emplace(std::move(key), std::move(value)); - } - } - - inline AttributeValue &WithStringAndDouble(std::string key, double value) { - AddStringAndDouble(key, value); - return *this; - } - -private: - explicit AttributeValue(AttrType attrType) : m_N(0), m_S(""), m_attrType(attrType) {} -#else -public: - explicit AttributeValue(AttrType attrType) : m_N(0), m_SLCount(0), m_SDMCount(0), m_attrType(attrType) { m_S[0] = '\0'; } - - AttributeValue() : m_N(0), m_SLCount(0), m_SDMCount(0), m_attrType(AttrType::NONE) { m_S[0] = '\0'; } - - /** - *

Construct an attribute value of type double.

- */ - explicit AttributeValue(double n) : m_N(n), m_SLCount(0), m_SDMCount(0), m_attrType(AttrType::DOUBLE) { m_S[0] = '\0'; } - - struct KeyAndValue; - typedef char AttributeStringType[MAX_STRING_LENGTH]; - - explicit AttributeValue(const char *s) { - initValues(); - - m_attrType = AttrType::STRING; - strncpy(m_S, s, MAX_STRING_LENGTH); - m_S[MAX_STRING_LENGTH - 1] = '\0'; - } - - /** - *

Destructor.

- */ - ~AttributeValue() {} - - /** - *

Copy Constructor.

- */ - AttributeValue(const AttributeValue &other) { *this = other; } - - /** - *

Move Constructor.

- */ - AttributeValue(AttributeValue &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - AttributeValue &operator=(const AttributeValue &other) { - m_attrType = other.m_attrType; - strncpy(m_S, other.m_S, MAX_STRING_LENGTH); - m_N = other.m_N; - m_SLCount = other.m_SLCount; - m_SDMCount = other.m_SDMCount; - for (int index = 0; index < m_SLCount; ++index) { - strncpy(m_SL[index], other.m_SL[index], MAX_STRING_LENGTH); - } - for (int index = 0; index < m_SDMCount; ++index) { - m_SDM[index] = other.m_SDM[index]; - } - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - AttributeValue &operator=(AttributeValue &&other) { - *this = other; - - return *this; - } - - inline const char *GetS() const { return m_S; } - - inline double GetN() const { return m_N; } - - inline const AttributeStringType *const GetSL(int &count) const { - count = m_SLCount; - return m_SL; - } - - inline const KeyAndValue *GetSDM(int &count) const { - count = m_SDMCount; - return m_SDM; - } - - inline void AddString(const char *value) { - if (m_attrType == AttrType::STRING_LIST && m_SLCount < MAX_STRING_LIST_LENGTH) { - strncpy(m_SL[m_SLCount], value, MAX_STRING_LENGTH); - m_SL[m_SLCount++][MAX_STRING_LENGTH - 1] = '\0'; - } - }; - - inline AttributeValue &WithString(const char *value) { - AddString(value); - return *this; - } - - inline void AddStringAndDouble(const char *key, double value) { - if (m_attrType == AttrType::STRING_DOUBLE_MAP && m_SDMCount < MAX_STRING_MAP_SIZE) { - m_SDM[m_SDMCount++] = KeyAndValue(key, value); - } - }; - - inline AttributeValue &WithStringAndDouble(const char *key, double value) { - AddStringAndDouble(key, value); - return *this; - } - - struct KeyAndValue { - KeyAndValue() : m_key(), m_value(0) {} - - KeyAndValue(const char *key, double value) : m_value(value) { - strncpy(m_key, key, MAX_STRING_LENGTH); - m_key[MAX_STRING_LENGTH - 1] = '\0'; - } - - KeyAndValue(const KeyAndValue &other) { *this = other; } - - KeyAndValue &operator=(const KeyAndValue &other) { - strncpy(m_key, other.m_key, MAX_STRING_LENGTH); - m_key[MAX_STRING_LENGTH - 1] = '\0'; - m_value = other.m_value; - - return *this; - } - - KeyAndValue(const KeyAndValue &&other) { *this = std::move(other); } - - KeyAndValue &operator=(const KeyAndValue &&other) { - *this = other; - - return *this; - } - - inline const char *GetKey() const { return m_key; } - - inline double GetValue() const { return m_value; } - - private: - AttributeStringType m_key; - double m_value; - }; - -private: - void initValues() { - m_S[0] = '\0'; - m_N = 0; - memset(m_SL, 0, sizeof(AttributeStringType) * MAX_STRING_LIST_LENGTH); - - m_SLCount = 0; - m_SDMCount = 0; - } -#endif - -private: -#ifdef GAMELIFT_USE_STD - std::string m_S; - double m_N; - std::vector m_SL; - std::map m_SDM; - std::string m_value; -#else - AttributeStringType m_S; - double m_N; - AttributeStringType m_SL[MAX_STRING_LIST_LENGTH]; - KeyAndValue m_SDM[MAX_STRING_MAP_SIZE]; - int m_SLCount; - int m_SDMCount; -#endif - AttrType m_attrType; -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/DescribePlayerSessionsRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/DescribePlayerSessionsRequest.h deleted file mode 100644 index b3f198d6..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/DescribePlayerSessionsRequest.h +++ /dev/null @@ -1,716 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_GAME_SESSION_ID_LENGTH -#define MAX_GAME_SESSION_ID_LENGTH 256 -#endif -#ifndef MAX_PLAYER_ID_LENGTH -#define MAX_PLAYER_ID_LENGTH 1024 -#endif -#ifndef MAX_PLAYER_SESSION_ID_LENGTH -#define MAX_PLAYER_SESSION_ID_LENGTH 256 -#endif -#ifndef MAX_PLAYER_SESSION_STATUS_FILTER_LENGTH -#define MAX_PLAYER_SESSION_STATUS_FILTER_LENGTH 1024 -#endif -#ifndef MAX_NEXT_TOKEN_LENGTH -#define MAX_NEXT_TOKEN_LENGTH 1024 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -/** - *

Represents the input for a request action.

- */ -class AWS_GAMELIFT_API DescribePlayerSessionsRequest { -#ifdef GAMELIFT_USE_STD -public: - DescribePlayerSessionsRequest() : m_limit(0) {} - - /** - *

Destructor.

- */ - ~DescribePlayerSessionsRequest() {} - - /** - *

Copy Constructor.

- */ - DescribePlayerSessionsRequest(const DescribePlayerSessionsRequest &other) - : m_gameSessionId(other.m_gameSessionId), m_playerId(other.m_playerId), m_playerSessionId(other.m_playerSessionId), - m_playerSessionStatusFilter(other.m_playerSessionStatusFilter), m_limit(other.m_limit), m_nextToken(other.m_nextToken) {} - - /** - *

Move Constructor.

- */ - DescribePlayerSessionsRequest(DescribePlayerSessionsRequest &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - DescribePlayerSessionsRequest &operator=(const DescribePlayerSessionsRequest &other) { - m_gameSessionId = other.m_gameSessionId; - m_playerId = other.m_playerId; - m_playerSessionId = other.m_playerSessionId; - m_playerSessionStatusFilter = other.m_playerSessionStatusFilter; - m_limit = other.m_limit; - m_nextToken = other.m_nextToken; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - DescribePlayerSessionsRequest &operator=(DescribePlayerSessionsRequest &&other) { - m_gameSessionId = std::move(other.m_gameSessionId); - m_playerId = std::move(other.m_playerId); - m_playerSessionId = std::move(other.m_playerSessionId); - m_playerSessionStatusFilter = std::move(other.m_playerSessionStatusFilter); - - m_limit = other.m_limit; - other.m_limit = 0; - - m_nextToken = std::move(other.m_nextToken); - - return *this; - } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline void SetGameSessionId(const std::string &value) { m_gameSessionId = value; } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline void SetGameSessionId(std::string &&value) { m_gameSessionId = value; } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline void SetGameSessionId(const char *value) { m_gameSessionId.assign(value); } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline DescribePlayerSessionsRequest &WithGameSessionId(const std::string &value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline DescribePlayerSessionsRequest &WithGameSessionId(std::string &&value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline DescribePlayerSessionsRequest &WithGameSessionId(const char *value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for a player.

- */ - inline const std::string &GetPlayerId() const { return m_playerId; } - - /** - *

Unique identifier for a player.

- */ - inline void SetPlayerId(const std::string &value) { m_playerId = value; } - - /** - *

Unique identifier for a player.

- */ - inline void SetPlayerId(std::string &&value) { m_playerId = value; } - - /** - *

Unique identifier for a player.

- */ - inline void SetPlayerId(const char *value) { m_playerId.assign(value); } - - /** - *

Unique identifier for a player.

- */ - inline DescribePlayerSessionsRequest &WithPlayerId(const std::string &value) { - SetPlayerId(value); - return *this; - } - - /** - *

Unique identifier for a player.

- */ - inline DescribePlayerSessionsRequest &WithPlayerId(std::string &&value) { - SetPlayerId(value); - return *this; - } - - /** - *

Unique identifier for a player.

- */ - inline DescribePlayerSessionsRequest &WithPlayerId(const char *value) { - SetPlayerId(value); - return *this; - } - - /** - *

Unique identifier for a player session.

- */ - inline const std::string &GetPlayerSessionId() const { return m_playerSessionId; } - - /** - *

Unique identifier for a player session.

- */ - inline void SetPlayerSessionId(const std::string &value) { m_playerSessionId = value; } - - /** - *

Unique identifier for a player session.

- */ - inline void SetPlayerSessionId(std::string &&value) { m_playerSessionId = value; } - - /** - *

Unique identifier for a player session.

- */ - inline void SetPlayerSessionId(const char *value) { m_playerSessionId.assign(value); } - - /** - *

Unique identifier for a player session.

- */ - inline DescribePlayerSessionsRequest &WithPlayerSessionId(const std::string &value) { - SetPlayerSessionId(value); - return *this; - } - - /** - *

Unique identifier for a player session.

- */ - inline DescribePlayerSessionsRequest &WithPlayerSessionId(std::string &&value) { - SetPlayerSessionId(value); - return *this; - } - - /** - *

Unique identifier for a player session.

- */ - inline DescribePlayerSessionsRequest &WithPlayerSessionId(const char *value) { - SetPlayerSessionId(value); - return *this; - } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline const std::string &GetPlayerSessionStatusFilter() const { return m_playerSessionStatusFilter; } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline void SetPlayerSessionStatusFilter(const std::string &value) { m_playerSessionStatusFilter = value; } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline void SetPlayerSessionStatusFilter(std::string &&value) { m_playerSessionStatusFilter = value; } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline void SetPlayerSessionStatusFilter(const char *value) { m_playerSessionStatusFilter.assign(value); } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline DescribePlayerSessionsRequest &WithPlayerSessionStatusFilter(const std::string &value) { - SetPlayerSessionStatusFilter(value); - return *this; - } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline DescribePlayerSessionsRequest &WithPlayerSessionStatusFilter(std::string &&value) { - SetPlayerSessionStatusFilter(value); - return *this; - } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline DescribePlayerSessionsRequest &WithPlayerSessionStatusFilter(const char *value) { - SetPlayerSessionStatusFilter(value); - return *this; - } - - /** - *

Maximum number of results to return. Use this parameter with - * NextToken to get results as a set of sequential pages. If a player - * session ID is specified, this parameter is ignored.

- */ - inline int GetLimit() const { return m_limit; } - - /** - *

Maximum number of results to return. Use this parameter with - * NextToken to get results as a set of sequential pages. If a player - * session ID is specified, this parameter is ignored.

- */ - inline void SetLimit(int value) { m_limit = value; } - - /** - *

Maximum number of results to return. Use this parameter with - * NextToken to get results as a set of sequential pages. If a player - * session ID is specified, this parameter is ignored.

- */ - inline DescribePlayerSessionsRequest &WithLimit(int value) { - SetLimit(value); - return *this; - } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline const std::string &GetNextToken() const { return m_nextToken; } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline void SetNextToken(const std::string &value) { m_nextToken = value; } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline void SetNextToken(std::string &&value) { m_nextToken = value; } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline void SetNextToken(const char *value) { m_nextToken.assign(value); } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline DescribePlayerSessionsRequest &WithNextToken(const std::string &value) { - SetNextToken(value); - return *this; - } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline DescribePlayerSessionsRequest &WithNextToken(std::string &&value) { - SetNextToken(value); - return *this; - } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline DescribePlayerSessionsRequest &WithNextToken(const char *value) { - SetNextToken(value); - return *this; - } - -private: - std::string m_gameSessionId; - std::string m_playerId; - std::string m_playerSessionId; - std::string m_playerSessionStatusFilter; - int m_limit; - std::string m_nextToken; -#else -public: - DescribePlayerSessionsRequest() : m_limit(0) { - memset(m_gameSessionId, 0, sizeof(m_gameSessionId)); - memset(m_playerId, 0, sizeof(m_playerId)); - memset(m_playerSessionId, 0, sizeof(m_playerSessionId)); - memset(m_playerSessionStatusFilter, 0, sizeof(m_playerSessionStatusFilter)); - memset(m_nextToken, 0, sizeof(m_nextToken)); - } - - /** - *

Destructor.

- */ - ~DescribePlayerSessionsRequest() {} - - /** - *

Copy Constructor.

- */ - DescribePlayerSessionsRequest(const DescribePlayerSessionsRequest &other) : m_limit(other.m_limit) { - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_playerId, other.m_playerId, sizeof(other.m_playerId)); - strncpy(m_playerSessionId, other.m_playerSessionId, sizeof(other.m_playerSessionId)); - strncpy(m_playerSessionStatusFilter, other.m_playerSessionStatusFilter, sizeof(other.m_playerSessionStatusFilter)); - strncpy(m_nextToken, other.m_nextToken, sizeof(other.m_nextToken)); - } - - /** - *

Move Constructor.

- */ - DescribePlayerSessionsRequest(DescribePlayerSessionsRequest &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - DescribePlayerSessionsRequest &operator=(const DescribePlayerSessionsRequest &other) { - m_limit = other.m_limit; - - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_playerId, other.m_playerId, sizeof(other.m_playerId)); - strncpy(m_playerSessionId, other.m_playerSessionId, sizeof(other.m_playerSessionId)); - strncpy(m_playerSessionStatusFilter, other.m_playerSessionStatusFilter, sizeof(other.m_playerSessionStatusFilter)); - strncpy(m_nextToken, other.m_nextToken, sizeof(other.m_nextToken)); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - DescribePlayerSessionsRequest &operator=(DescribePlayerSessionsRequest &&other) { - m_limit = other.m_limit; - - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_playerId, other.m_playerId, sizeof(other.m_playerId)); - strncpy(m_playerSessionId, other.m_playerSessionId, sizeof(other.m_playerSessionId)); - strncpy(m_playerSessionStatusFilter, other.m_playerSessionStatusFilter, sizeof(other.m_playerSessionStatusFilter)); - strncpy(m_nextToken, other.m_nextToken, sizeof(other.m_nextToken)); - - other.m_limit = 0; - - memset(other.m_gameSessionId, 0, sizeof(other.m_gameSessionId)); - memset(other.m_playerId, 0, sizeof(other.m_playerId)); - memset(other.m_playerSessionId, 0, sizeof(other.m_playerSessionId)); - memset(other.m_playerSessionStatusFilter, 0, sizeof(other.m_playerSessionStatusFilter)); - memset(other.m_nextToken, 0, sizeof(other.m_nextToken)); - - return *this; - } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline const char *GetGameSessionId() const { return m_gameSessionId; } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline void SetGameSessionId(const char *value) { - strncpy(m_gameSessionId, value, sizeof(m_gameSessionId)); - m_gameSessionId[sizeof(m_gameSessionId) - 1] = 0; - } - - /** - *

Unique identifier for the game session to get player sessions for.Game - * session ID format is as follows: - * "arn:aws:gamelift:<region>::gamesession/fleet-<fleet ID>/<ID - * string>". The value of <ID string> is either a custom ID string (if one - * was specified when the game session was created) an auto-generated string.

- */ - inline DescribePlayerSessionsRequest &WithGameSessionId(const char *value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for a player.

- */ - inline const char *GetPlayerId() const { return m_playerId; } - - /** - *

Unique identifier for a player.

- */ - inline void SetPlayerId(const char *value) { - strncpy(m_playerId, value, sizeof(m_playerId)); - m_playerId[sizeof(m_playerId) - 1] = 0; - } - - /** - *

Unique identifier for a player.

- */ - inline DescribePlayerSessionsRequest &WithPlayerId(const char *value) { - SetPlayerId(value); - return *this; - } - - /** - *

Unique identifier for a player session.

- */ - inline const char *GetPlayerSessionId() const { return m_playerSessionId; } - - /** - *

Unique identifier for a player session.

- */ - inline void SetPlayerSessionId(const char *value) { - strncpy(m_playerSessionId, value, sizeof(m_playerSessionId)); - m_playerSessionId[sizeof(m_playerSessionId) - 1] = 0; - } - - /** - *

Unique identifier for a player session.

- */ - inline DescribePlayerSessionsRequest &WithPlayerSessionId(const char *value) { - SetPlayerSessionId(value); - return *this; - } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline const char *GetPlayerSessionStatusFilter() const { return m_playerSessionStatusFilter; } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline void SetPlayerSessionStatusFilter(const char *value) { - strncpy(m_playerSessionStatusFilter, value, sizeof(m_playerSessionStatusFilter)); - m_playerSessionStatusFilter[sizeof(m_playerSessionStatusFilter) - 1] = 0; - } - - /** - *

Player session status to filter results on.

Possible player session - * statuses include the following:

  • RESERVED – The player - * session request has been received, but the player has not yet connected to the - * server process and/or been validated.

  • ACTIVE – The - * player has been validated by the server process and is currently connected.

    - *
  • COMPLETED – The player connection has been dropped.

    - *
  • TIMEDOUT – A player session request was received, but the - * player did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline DescribePlayerSessionsRequest &WithPlayerSessionStatusFilter(const char *value) { - SetPlayerSessionStatusFilter(value); - return *this; - } - - /** - *

Maximum number of results to return. Use this parameter with - * NextToken to get results as a set of sequential pages. If a player - * session ID is specified, this parameter is ignored.

- */ - inline int GetLimit() const { return m_limit; } - - /** - *

Maximum number of results to return. Use this parameter with - * NextToken to get results as a set of sequential pages. If a player - * session ID is specified, this parameter is ignored.

- */ - inline void SetLimit(int value) { m_limit = value; } - - /** - *

Maximum number of results to return. Use this parameter with - * NextToken to get results as a set of sequential pages. If a player - * session ID is specified, this parameter is ignored.

- */ - inline DescribePlayerSessionsRequest &WithLimit(int value) { - SetLimit(value); - return *this; - } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline const char *GetNextToken() const { return m_nextToken; } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline void SetNextToken(const char *value) { - strncpy(m_nextToken, value, sizeof(m_nextToken)); - m_nextToken[sizeof(m_nextToken) - 1] = 0; - } - - /** - *

Token indicating the start of the next sequential page of results. Use the - * token that is returned with a previous call to this action. To specify the start - * of the result set, do not specify a value. If a player session ID is specified, - * this parameter is ignored.

- */ - inline DescribePlayerSessionsRequest &WithNextToken(const char *value) { - SetNextToken(value); - return *this; - } - -private: - char m_gameSessionId[MAX_GAME_SESSION_ID_LENGTH]; - char m_playerId[MAX_PLAYER_ID_LENGTH]; - char m_playerSessionId[MAX_PLAYER_SESSION_ID_LENGTH]; - char m_playerSessionStatusFilter[MAX_PLAYER_SESSION_STATUS_FILTER_LENGTH]; - int m_limit; - char m_nextToken[MAX_NEXT_TOKEN_LENGTH]; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/DescribePlayerSessionsResult.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/DescribePlayerSessionsResult.h deleted file mode 100644 index d081328a..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/DescribePlayerSessionsResult.h +++ /dev/null @@ -1,318 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_PLAYER_SESSIONS -#define MAX_PLAYER_SESSIONS 50 -#endif -#ifndef MAX_NEXT_TOKEN_LENGTH -#define MAX_NEXT_TOKEN_LENGTH 1024 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -/** - *

Represents the returned data in response to a request action.

- */ -class AWS_GAMELIFT_API DescribePlayerSessionsResult { -#ifdef GAMELIFT_USE_STD -public: - DescribePlayerSessionsResult() {} - - /** - *

Destructor.

- */ - ~DescribePlayerSessionsResult() {} - - /** - *

Copy Constructor.

- */ - DescribePlayerSessionsResult(const DescribePlayerSessionsResult &other) : m_playerSessions(other.m_playerSessions), m_nextToken(other.m_nextToken) {} - - /** - *

Move Constructor.

- */ - DescribePlayerSessionsResult(DescribePlayerSessionsResult &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - DescribePlayerSessionsResult &operator=(const DescribePlayerSessionsResult &other) { - m_playerSessions = other.m_playerSessions; - m_nextToken = other.m_nextToken; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - DescribePlayerSessionsResult &operator=(DescribePlayerSessionsResult &&other) { - m_playerSessions = std::move(other.m_playerSessions); - m_nextToken = std::move(other.m_nextToken); - - return *this; - } - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline const std::vector &GetPlayerSessions() const { return m_playerSessions; } - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline void SetPlayerSessions(const std::vector &value) { m_playerSessions = value; } - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline void SetPlayerSessions(std::vector &&value) { m_playerSessions = value; } - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline DescribePlayerSessionsResult &WithPlayerSessions(const std::vector &value) { - SetPlayerSessions(value); - return *this; - } - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline DescribePlayerSessionsResult &WithPlayerSessions(std::vector &&value) { - SetPlayerSessions(value); - return *this; - } - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline DescribePlayerSessionsResult &AddPlayerSession(const PlayerSession &value) { - m_playerSessions.push_back(value); - return *this; - } - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline DescribePlayerSessionsResult &AddPlayerSession(PlayerSession &&value) { - m_playerSessions.push_back(value); - return *this; - } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline const std::string &GetNextToken() const { return m_nextToken; } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline void SetNextToken(const std::string &value) { m_nextToken = value; } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline void SetNextToken(std::string &&value) { m_nextToken = value; } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline void SetNextToken(const char *value) { m_nextToken.assign(value); } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline DescribePlayerSessionsResult &WithNextToken(const std::string &value) { - SetNextToken(value); - return *this; - } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline DescribePlayerSessionsResult &WithNextToken(std::string &&value) { - SetNextToken(value); - return *this; - } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline DescribePlayerSessionsResult &WithNextToken(const char *value) { - SetNextToken(value); - return *this; - } - -private: - std::vector m_playerSessions; - std::string m_nextToken; -#else -public: - DescribePlayerSessionsResult() { - memset(m_nextToken, 0, sizeof(m_nextToken)); - m_playerSessions_count = 0; - } - - /** - *

Destructor.

- */ - ~DescribePlayerSessionsResult() {} - - /** - *

Copy Constructor.

- */ - DescribePlayerSessionsResult(const DescribePlayerSessionsResult &other) : m_playerSessions_count(other.m_playerSessions_count) { - strncpy(m_nextToken, other.m_nextToken, sizeof(other.m_nextToken)); - - std::copy(std::begin(other.m_playerSessions), std::end(other.m_playerSessions), std::begin(m_playerSessions)); - } - - /** - *

Move Constructor.

- */ - DescribePlayerSessionsResult(DescribePlayerSessionsResult &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - DescribePlayerSessionsResult &operator=(const DescribePlayerSessionsResult &other) { - m_playerSessions_count = other.m_playerSessions_count; - - strncpy(m_nextToken, other.m_nextToken, sizeof(other.m_nextToken)); - - std::copy(std::begin(other.m_playerSessions), std::end(other.m_playerSessions), std::begin(m_playerSessions)); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - DescribePlayerSessionsResult &operator=(DescribePlayerSessionsResult &&other) { - m_playerSessions_count = other.m_playerSessions_count; - - strncpy(m_nextToken, other.m_nextToken, sizeof(other.m_nextToken)); - - std::copy(std::begin(other.m_playerSessions), std::end(other.m_playerSessions), std::begin(m_playerSessions)); - - other.m_playerSessions_count = 0; - - memset(other.m_nextToken, 0, sizeof(other.m_nextToken)); - memset(other.m_playerSessions, 0, sizeof(other.m_playerSessions)); - - return *this; - } - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline const PlayerSession *GetPlayerSessions(int &count) const { - count = m_playerSessions_count; - return m_playerSessions; - } - - /** - *

Set of player session for the request.

- */ - inline void AddPlayerSession(PlayerSession playerSession) { - if (m_playerSessions_count < MAX_PLAYER_SESSIONS) { - m_playerSessions[m_playerSessions_count++] = playerSession; - } - }; - - /** - *

Collection of objects containing properties for each player session that - * matches the request.

- */ - inline DescribePlayerSessionsResult &WithPlayerSessions(PlayerSession playerSession) { - AddPlayerSession(playerSession); - return *this; - } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline const char *GetNextToken() const { return m_nextToken; } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline void SetNextToken(const char *value) { - strncpy(m_nextToken, value, sizeof(m_nextToken)); - m_nextToken[sizeof(m_nextToken) - 1] = 0; - } - - /** - *

Token indicating where to resume retrieving results on the next call to this - * action. If no token is returned, these results represent the end of the - * list.

- */ - inline DescribePlayerSessionsResult &WithNextToken(const char *value) { - SetNextToken(value); - return *this; - } - -private: - PlayerSession m_playerSessions[MAX_PLAYER_SESSIONS]; - int m_playerSessions_count; - char m_nextToken[MAX_NEXT_TOKEN_LENGTH]; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameProperty.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameProperty.h deleted file mode 100644 index b804dee3..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameProperty.h +++ /dev/null @@ -1,206 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_KEY_LENGTH -#define MAX_KEY_LENGTH 256 -#endif -#ifndef MAX_VALUE_LENGTH -#define MAX_VALUE_LENGTH 256 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -/** - *

Set of key-value pairs containing information your game server requires to - * set up sessions. This object allows you to pass in any set of data needed for - * your game. For more information, see the Amazon GameLift Servers - * Developer Guide.

- */ -class AWS_GAMELIFT_API GameProperty { -#ifdef GAMELIFT_USE_STD -public: - GameProperty() {} - - /** - *

Destructor.

- */ - ~GameProperty() {} - - /** - *

Copy Constructor.

- */ - GameProperty(const GameProperty &other) : m_key(other.m_key), m_value(other.m_value) {} - - /** - *

Move Constructor.

- */ - GameProperty(GameProperty &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - GameProperty &operator=(const GameProperty &other) { - m_key = other.m_key; - m_value = other.m_value; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - GameProperty &operator=(GameProperty &&other) { - m_key = std::move(other.m_key); - m_value = std::move(other.m_value); - - return *this; - } - - inline const std::string &GetKey() const { return m_key; } - - inline void SetKey(const std::string &value) { m_key = value; } - - inline void SetKey(std::string &&value) { m_key = value; } - - inline void SetKey(const char *value) { m_key.assign(value); } - - inline GameProperty &WithKey(const std::string &value) { - SetKey(value); - return *this; - } - - inline GameProperty &WithKey(std::string &&value) { - SetKey(value); - return *this; - } - - inline GameProperty &WithKey(const char *value) { - SetKey(value); - return *this; - } - - inline const std::string &GetValue() const { return m_value; } - - inline void SetValue(const std::string &value) { m_value = value; } - - inline void SetValue(std::string &&value) { m_value = value; } - - inline void SetValue(const char *value) { m_value.assign(value); } - - inline GameProperty &WithValue(const std::string &value) { - SetValue(value); - return *this; - } - - inline GameProperty &WithValue(std::string &&value) { - SetValue(value); - return *this; - } - - inline GameProperty &WithValue(const char *value) { - SetValue(value); - return *this; - } - -private: - std::string m_key; - std::string m_value; -#else -public: - GameProperty() { - memset(m_key, 0, MAX_KEY_LENGTH); - memset(m_value, 0, MAX_VALUE_LENGTH); - } - - /** - *

Destructor.

- */ - ~GameProperty() {} - - /** - *

Copy Constructor.

- */ - GameProperty(const GameProperty &other) { - strncpy(m_key, other.m_key, sizeof(other.m_key)); - strncpy(m_value, other.m_value, sizeof(other.m_value)); - } - - /** - *

Move Constructor.

- */ - GameProperty(GameProperty &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - GameProperty &operator=(const GameProperty &other) { - strncpy(m_key, other.m_key, sizeof(other.m_key)); - strncpy(m_value, other.m_value, sizeof(other.m_value)); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - GameProperty &operator=(GameProperty &&other) { - strncpy(m_key, other.m_key, sizeof(other.m_key)); - strncpy(m_value, other.m_value, sizeof(other.m_value)); - - memset(other.m_key, 0, MAX_KEY_LENGTH); - memset(other.m_value, 0, MAX_VALUE_LENGTH); - - return *this; - } - - inline const char *GetKey() const { return m_key; } - - inline void SetKey(const char *value) { - strncpy(m_key, value, sizeof(m_key)); - m_key[sizeof(m_key) - 1] = 0; - } - - inline GameProperty &WithKey(const char *value) { - SetKey(value); - return *this; - } - - inline const char *GetValue() const { return m_value; } - - inline void SetValue(const char *value) { - strncpy(m_value, value, sizeof(m_value)); - m_value[sizeof(m_value) - 1] = 0; - } - - inline GameProperty &WithValue(const char *value) { - SetValue(value); - return *this; - } - -private: - char m_key[MAX_KEY_LENGTH]; - char m_value[MAX_VALUE_LENGTH]; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameSession.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameSession.h deleted file mode 100644 index e4c20628..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameSession.h +++ /dev/null @@ -1,967 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include -#include -#include -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_GAME_PROPERTIES -#define MAX_GAME_PROPERTIES 32 -#endif -#ifndef MAX_IP_LENGTH -#define MAX_IP_LENGTH 45 -#endif -#ifndef MAX_SESSION_ID_LENGTH -#define MAX_SESSION_ID_LENGTH 256 -#endif -#ifndef MAX_SESSION_NAME_LENGTH -#define MAX_SESSION_NAME_LENGTH 256 -#endif -#ifndef MAX_FLEET_ID_LENGTH -#define MAX_FLEET_ID_LENGTH 1024 -#endif -#ifndef MAX_GAME_SESSION_DATA_LENGTH -#define MAX_GAME_SESSION_DATA_LENGTH 4097 -#endif -#ifndef MAX_MATCHMAKER_DATA_LENGTH -#define MAX_MATCHMAKER_DATA_LENGTH 4097 -#endif -#ifndef MAX_DNS_NAME_LENGTH -#define MAX_DNS_NAME_LENGTH 64 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -/** - *

Properties describing a game session.

- */ -class AWS_GAMELIFT_API GameSession { -#ifdef GAMELIFT_USE_STD -public: - GameSession() : m_maximumPlayerSessionCount(0), m_status(), m_port(0) {} - - /** - *

Destructor.

- */ - ~GameSession() {} - - /** - *

Copy Constructor.

- */ - GameSession(const GameSession &other) - : m_gameSessionId(other.m_gameSessionId), m_name(other.m_name), m_fleetId(other.m_fleetId), - m_maximumPlayerSessionCount(other.m_maximumPlayerSessionCount), m_status(other.m_status), m_gameProperties(other.m_gameProperties), - m_ipAddress(other.m_ipAddress), m_port(other.m_port), m_gameSessionData(other.m_gameSessionData), m_matchmakerData(other.m_matchmakerData), - m_dnsName(other.m_dnsName) {} - - /** - *

Move Constructor.

- */ - GameSession(GameSession &&other) - : m_gameSessionId(std::move(other.m_gameSessionId)), m_name(std::move(other.m_name)), m_fleetId(std::move(other.m_fleetId)), - m_maximumPlayerSessionCount(other.m_maximumPlayerSessionCount), m_status(std::move(other.m_status)), - m_gameProperties(std::move(other.m_gameProperties)), m_ipAddress(std::move(other.m_ipAddress)), m_port(other.m_port), - m_gameSessionData(std::move(other.m_gameSessionData)), m_matchmakerData(std::move(other.m_matchmakerData)), m_dnsName(other.m_dnsName) {} - - /** - *

Copy assignment Constructor.

- */ - GameSession &operator=(const GameSession &other) { - m_maximumPlayerSessionCount = other.m_maximumPlayerSessionCount; - m_port = other.m_port; - m_ipAddress = other.m_ipAddress; - m_gameSessionId = other.m_gameSessionId; - m_name = other.m_name; - m_fleetId = other.m_fleetId; - m_status = other.m_status; - m_gameProperties = other.m_gameProperties; - m_gameSessionData = other.m_gameSessionData; - m_matchmakerData = other.m_matchmakerData; - m_dnsName = other.m_dnsName; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - GameSession &operator=(GameSession &&other) { - m_maximumPlayerSessionCount = other.m_maximumPlayerSessionCount; - other.m_maximumPlayerSessionCount = 0; - - m_port = other.m_port; - other.m_port = 0; - - m_ipAddress = std::move(other.m_ipAddress); - m_gameSessionId = std::move(other.m_gameSessionId); - m_name = std::move(other.m_name); - m_fleetId = std::move(other.m_fleetId); - m_status = std::move(other.m_status); - m_gameProperties = std::move(other.m_gameProperties); - m_gameSessionData = std::move(other.m_gameSessionData); - m_matchmakerData = std::move(other.m_matchmakerData); - m_dnsName = std::move(other.m_dnsName); - return *this; - } - - /** - *

Unique identifier for a game session.

- */ - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - /** - *

Unique identifier for a game session.

- */ - inline void SetGameSessionId(const std::string &value) { m_gameSessionId = value; } - - /** - *

Unique identifier for a game session.

- */ - inline void SetGameSessionId(std::string &&value) { m_gameSessionId = value; } - - /** - *

Unique identifier for a game session.

- */ - inline void SetGameSessionId(const char *value) { m_gameSessionId.assign(value); } - - /** - *

Unique identifier for a game session.

- */ - inline GameSession &WithGameSessionId(const std::string &value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for a game session.

- */ - inline GameSession &WithGameSessionId(std::string &&value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for a game session.

- */ - inline GameSession &WithGameSessionId(const char *value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline const std::string &GetName() const { return m_name; } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline void SetName(const std::string &value) { m_name = value; } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline void SetName(std::string &&value) { m_name = value; } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline void SetName(const char *value) { m_name.assign(value); } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline GameSession &WithName(const std::string &value) { - SetName(value); - return *this; - } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline GameSession &WithName(std::string &&value) { - SetName(value); - return *this; - } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline GameSession &WithName(const char *value) { - SetName(value); - return *this; - } - - /** - *

Unique identifier for a fleet.

- */ - inline const std::string &GetFleetId() const { return m_fleetId; } - - /** - *

Unique identifier for a fleet.

- */ - inline void SetFleetId(const std::string &value) { m_fleetId = value; } - - /** - *

Unique identifier for a fleet.

- */ - inline void SetFleetId(std::string &&value) { m_fleetId = value; } - - /** - *

Unique identifier for a fleet.

- */ - inline void SetFleetId(const char *value) { m_fleetId.assign(value); } - - /** - *

Unique identifier for a fleet.

- */ - inline GameSession &WithFleetId(const std::string &value) { - SetFleetId(value); - return *this; - } - - /** - *

Unique identifier for a fleet.

- */ - inline GameSession &WithFleetId(std::string &&value) { - SetFleetId(value); - return *this; - } - - /** - *

Unique identifier for a fleet.

- */ - inline GameSession &WithFleetId(const char *value) { - SetFleetId(value); - return *this; - } - - /** - *

Maximum number of players allowed in the game session.

- */ - inline int GetMaximumPlayerSessionCount() const { return m_maximumPlayerSessionCount; } - - /** - *

Maximum number of players allowed in the game session.

- */ - inline void SetMaximumPlayerSessionCount(int value) { m_maximumPlayerSessionCount = value; } - - /** - *

Maximum number of players allowed in the game session.

- */ - inline GameSession &WithMaximumPlayerSessionCount(int value) { - SetMaximumPlayerSessionCount(value); - return *this; - } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline const GameSessionStatus &GetStatus() const { return m_status; } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline void SetStatus(const GameSessionStatus &value) { m_status = value; } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline void SetStatus(GameSessionStatus &&value) { m_status = value; } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline GameSession &WithStatus(const GameSessionStatus &value) { - SetStatus(value); - return *this; - } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline GameSession &WithStatus(GameSessionStatus &&value) { - SetStatus(value); - return *this; - } - - /** - *

Set of custom properties for the game session.

- */ - inline const std::vector &GetGameProperties() const { return m_gameProperties; } - - /** - *

Set of custom properties for the game session.

- */ - inline void SetGameProperties(const std::vector &value) { m_gameProperties = value; } - - /** - *

Set of custom properties for the game session.

- */ - inline void SetGameProperties(std::vector &&value) { m_gameProperties = value; } - - /** - *

Set of custom properties for the game session.

- */ - inline GameSession &WithGameProperties(const std::vector &value) { - SetGameProperties(value); - return *this; - } - - /** - *

Set of custom properties for the game session.

- */ - inline GameSession &WithGameProperties(std::vector &&value) { - SetGameProperties(value); - return *this; - } - - /** - *

Set of custom properties for the game session.

- */ - inline GameSession &AddGameProperty(const GameProperty &value) { - m_gameProperties.push_back(value); - return *this; - } - - /** - *

Set of custom properties for the game session.

- */ - inline GameSession &AddGameProperty(GameProperty &&value) { - m_gameProperties.push_back(value); - return *this; - } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline const std::string &GetIpAddress() const { return m_ipAddress; } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline void SetIpAddress(const std::string &value) { m_ipAddress = value; } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline void SetIpAddress(std::string &&value) { m_ipAddress = value; } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline void SetIpAddress(const char *value) { m_ipAddress.assign(value); } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline GameSession &WithIpAddress(const std::string &value) { - SetIpAddress(value); - return *this; - } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline GameSession &WithIpAddress(std::string &&value) { - SetIpAddress(value); - return *this; - } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline GameSession &WithIpAddress(const char *value) { - SetIpAddress(value); - return *this; - } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline int GetPort() const { return m_port; } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline void SetPort(int value) { m_port = value; } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline GameSession &WithPort(int value) { - SetPort(value); - return *this; - } - - /** - *

Custom data for the game session.

- */ - inline const std::string &GetGameSessionData() const { return m_gameSessionData; } - - /** - *

Custom data for the game session.

- */ - inline void SetGameSessionData(const std::string &value) { m_gameSessionData = value; } - - /** - *

Custom data for the game session.

- */ - inline void SetGameSessionData(std::string &&value) { m_gameSessionData = value; } - - /** - *

Custom data for the game session.

- */ - inline void SetGameSessionData(const char *value) { m_gameSessionData.assign(value); } - - /** - *

Custom data for the game session.

- */ - inline GameSession &WithGameSessionData(const std::string &value) { - SetGameSessionData(value); - return *this; - } - - /** - *

Custom data for the game session.

- */ - inline GameSession &WithGameSessionData(std::string &&value) { - SetGameSessionData(value); - return *this; - } - - /** - *

Custom data for the game session.

- */ - inline GameSession &WithGameSessionData(const char *value) { - SetGameSessionData(value); - return *this; - } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline const std::string &GetMatchmakerData() const { return m_matchmakerData; } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline void SetMatchmakerData(const std::string &value) { m_matchmakerData = value; } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline void SetMatchmakerData(std::string &&value) { m_matchmakerData = value; } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline void SetMatchmakerData(const char *value) { m_matchmakerData.assign(value); } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline GameSession &WithMatchmakerData(const std::string &value) { - SetMatchmakerData(value); - return *this; - } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline GameSession &WithMatchmakerData(std::string &&value) { - SetMatchmakerData(value); - return *this; - } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline GameSession &WithMatchmakerData(const char *value) { - SetMatchmakerData(value); - return *this; - } - - /** - *

The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session.

- */ - inline const std::string &GetDnsName() const { return m_dnsName; } - - /** - *

The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session.

- */ - inline void SetDnsName(const std::string &value) { m_dnsName = value; } - - /** - *

The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session.

- */ - inline void SetDnsName(std::string &&value) { m_dnsName = value; } - - /** - *

The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session.

- */ - inline void SetDnsName(const char *value) { m_dnsName.assign(value); } - - /** - *

The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session.

- */ - inline GameSession &WithDnsName(const std::string &value) { - SetDnsName(value); - return *this; - } - - /** - *

The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session.

- */ - inline GameSession &WithDnsName(std::string &&value) { - SetDnsName(value); - return *this; - } - - /** - *

The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session.

- */ - inline GameSession &WithDnsName(const char *value) { - SetDnsName(value); - return *this; - } - -private: - std::string m_gameSessionId; - std::string m_name; - std::string m_fleetId; - int m_maximumPlayerSessionCount; - GameSessionStatus m_status; - std::vector m_gameProperties; - std::string m_ipAddress; - int m_port; - std::string m_gameSessionData; - std::string m_matchmakerData; - std::string m_dnsName; -#else -public: - GameSession() : m_maximumPlayerSessionCount(0), m_status(), m_gameProperties_count(0), m_port(0) { - memset(m_gameSessionId, 0, MAX_SESSION_ID_LENGTH); - memset(m_name, 0, MAX_SESSION_NAME_LENGTH); - memset(m_fleetId, 0, MAX_FLEET_ID_LENGTH); - memset(m_gameProperties, 0, MAX_GAME_PROPERTIES); - memset(m_ipAddress, 0, MAX_IP_LENGTH); - memset(m_gameSessionData, 0, MAX_GAME_SESSION_DATA_LENGTH); - memset(m_matchmakerData, 0, MAX_MATCHMAKER_DATA_LENGTH); - memset(m_dnsName, 0, MAX_DNS_NAME_LENGTH); - } - - /** - *

Destructor.

- */ - ~GameSession() {} - - /** - *

Copy Constructor.

- */ - GameSession(const GameSession &other) - : m_maximumPlayerSessionCount(other.m_maximumPlayerSessionCount), m_status(other.m_status), m_gameProperties_count(other.m_gameProperties_count), - m_port(other.m_port) { - strncpy(m_ipAddress, other.m_ipAddress, sizeof(other.m_ipAddress)); - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_name, other.m_name, sizeof(other.m_name)); - strncpy(m_fleetId, other.m_fleetId, sizeof(other.m_fleetId)); - strncpy(m_gameSessionData, other.m_gameSessionData, sizeof(other.m_gameSessionData)); - strncpy(m_matchmakerData, other.m_matchmakerData, sizeof(other.m_matchmakerData)); - strncpy(m_dnsName, other.m_dnsName, sizeof(other.m_dnsName)); - - std::copy(std::begin(other.m_gameProperties), std::end(other.m_gameProperties), std::begin(m_gameProperties)); - } - - /** - *

Move Constructor.

- */ - GameSession(GameSession &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - GameSession &operator=(const GameSession &other) { - m_maximumPlayerSessionCount = other.m_maximumPlayerSessionCount; - m_gameProperties_count = other.m_gameProperties_count; - m_port = other.m_port; - m_status = other.m_status; - - strncpy(m_ipAddress, other.m_ipAddress, sizeof(other.m_ipAddress)); - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_name, other.m_name, sizeof(other.m_name)); - strncpy(m_fleetId, other.m_fleetId, sizeof(other.m_fleetId)); - strncpy(m_gameSessionData, other.m_gameSessionData, sizeof(other.m_gameSessionData)); - strncpy(m_matchmakerData, other.m_matchmakerData, sizeof(other.m_matchmakerData)); - strncpy(m_dnsName, other.m_dnsName, sizeof(other.m_dnsName)); - - std::copy(std::begin(other.m_gameProperties), std::end(other.m_gameProperties), std::begin(m_gameProperties)); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - GameSession &operator=(GameSession &&other) { - m_maximumPlayerSessionCount = other.m_maximumPlayerSessionCount; - m_gameProperties_count = other.m_gameProperties_count; - m_port = other.m_port; - m_status = other.m_status; - - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_ipAddress, other.m_ipAddress, sizeof(other.m_ipAddress)); - strncpy(m_name, other.m_name, sizeof(other.m_name)); - strncpy(m_fleetId, other.m_fleetId, sizeof(other.m_fleetId)); - strncpy(m_gameSessionData, other.m_gameSessionData, sizeof(other.m_gameSessionData)); - strncpy(m_matchmakerData, other.m_matchmakerData, sizeof(other.m_matchmakerData)); - strncpy(m_dnsName, other.m_dnsName, sizeof(other.m_dnsName)); - - std::copy(std::begin(other.m_gameProperties), std::end(other.m_gameProperties), std::begin(m_gameProperties)); - - other.m_maximumPlayerSessionCount = 0; - other.m_gameProperties_count = 0; - other.m_port = 0; - - memset(other.m_gameSessionId, 0, MAX_SESSION_ID_LENGTH); - memset(other.m_ipAddress, 0, MAX_IP_LENGTH); - memset(other.m_name, 0, MAX_SESSION_NAME_LENGTH); - memset(other.m_fleetId, 0, MAX_FLEET_ID_LENGTH); - memset(other.m_gameProperties, 0, MAX_GAME_PROPERTIES); - memset(other.m_gameSessionData, 0, MAX_GAME_SESSION_DATA_LENGTH); - memset(other.m_matchmakerData, 0, MAX_MATCHMAKER_DATA_LENGTH); - memset(other.m_dnsName, 0, MAX_DNS_NAME_LENGTH); - - return *this; - } - - /** - *

Unique identifier for a game session.

- */ - inline const char *GetGameSessionId() const { return m_gameSessionId; } - - /** - *

Unique identifier for a game session.

- */ - inline void SetGameSessionId(const char *value) { - strncpy(m_gameSessionId, value, sizeof(m_gameSessionId)); - m_gameSessionId[sizeof(m_gameSessionId) - 1] = 0; - } - - /** - *

Unique identifier for a game session.

- */ - inline GameSession &WithGameSessionId(const char *value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline const char *GetName() const { return m_name; } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline void SetName(const char *value) { - strncpy(m_name, value, sizeof(m_name)); - m_name[sizeof(m_name) - 1] = 0; - } - - /** - *

Descriptive label associated with a game session. Session names do not need - * to be unique.

- */ - inline GameSession &WithName(const char *value) { - SetName(value); - return *this; - } - - /** - *

Unique identifier for a fleet.

- */ - inline const char *GetFleetId() const { return m_fleetId; } - - /** - *

Unique identifier for a fleet.

- */ - inline void SetFleetId(const char *value) { - strncpy(m_fleetId, value, sizeof(m_fleetId)); - m_fleetId[sizeof(m_fleetId) - 1] = 0; - } - - /** - *

Unique identifier for a fleet.

- */ - inline GameSession &WithFleetId(const char *value) { - SetFleetId(value); - return *this; - } - - /** - *

Maximum number of players allowed in the game session.

- */ - inline int GetMaximumPlayerSessionCount() const { return m_maximumPlayerSessionCount; } - - /** - *

Maximum number of players allowed in the game session.

- */ - inline void SetMaximumPlayerSessionCount(int value) { m_maximumPlayerSessionCount = value; } - - /** - *

Maximum number of players allowed in the game session.

- */ - inline GameSession &WithMaximumPlayerSessionCount(int value) { - SetMaximumPlayerSessionCount(value); - return *this; - } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline const GameSessionStatus &GetStatus() const { return m_status; } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline void SetStatus(const GameSessionStatus &value) { m_status = value; } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline void SetStatus(GameSessionStatus &&value) { m_status = value; } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline GameSession &WithStatus(const GameSessionStatus &value) { - SetStatus(value); - return *this; - } - - /** - *

Current status of the game session. A game session must be in an - * ACTIVE state to have player sessions.

- */ - inline GameSession &WithStatus(GameSessionStatus &&value) { - SetStatus(value); - return *this; - } - - /** - *

Get the custom properties for the game session.

- */ - inline const GameProperty *GetGameProperties(int &count) const { - count = m_gameProperties_count; - return m_gameProperties; - } - - /** - *

Set of custom property for the game session.

- */ - inline void AddGameProperty(GameProperty gameProperty) { - if (m_gameProperties_count < MAX_GAME_PROPERTIES) { - m_gameProperties[m_gameProperties_count++] = gameProperty; - } - }; - - /** - *

Set of custom properties for the game session.

- */ - inline GameSession &WithGameProperty(GameProperty gameProperty) { - AddGameProperty(gameProperty); - return *this; - } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline const char *GetIpAddress() const { return m_ipAddress; } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline void SetIpAddress(const char *value) { - strncpy(m_ipAddress, value, sizeof(m_ipAddress)); - m_ipAddress[sizeof(m_ipAddress) - 1] = 0; - } - - /** - *

IP address of the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline GameSession &WithIpAddress(const char *value) { - SetIpAddress(value); - return *this; - } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline int GetPort() const { return m_port; } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline void SetPort(int value) { m_port = value; } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline GameSession &WithPort(int value) { - SetPort(value); - return *this; - } - - /** - *

Custom data for the game session.

- */ - inline const char *GetGameSessionData() const { return m_gameSessionData; } - - /** - *

Custom data for the game session.

- */ - inline void SetGameSessionData(const char *value) { - strncpy(m_gameSessionData, value, sizeof(m_gameSessionData)); - m_gameSessionData[sizeof(m_gameSessionData) - 1] = 0; - } - - /** - *

Custom data for the game session.

- */ - inline GameSession &WithGameSessionData(const char *value) { - SetGameSessionData(value); - return *this; - } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline const char *GetMatchmakerData() const { return m_matchmakerData; } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline void SetMatchmakerData(const char *value) { - strncpy(m_matchmakerData, value, sizeof(m_matchmakerData)); - m_matchmakerData[sizeof(m_matchmakerData) - 1] = 0; - } - - /** - *

Data generated from Amazon GameLift Servers Matchmaking.

- */ - inline GameSession &WithMatchmakerData(const char *value) { - SetMatchmakerData(value); - return *this; - } - - /** - * The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session. - */ - inline const char *GetDnsName() const { return m_dnsName; } - - /** - * The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session. - */ - inline void SetDnsName(const char *value) { - strncpy(m_dnsName, value, sizeof(m_dnsName)); - m_dnsName[sizeof(m_dnsName) - 1] = 0; - } - - /** - * The DNS name of the host running a game server process, used for establishing a TLS - * connection for a game session. - */ - inline GameSession &WithDnsName(const char *value) { - SetDnsName(value); - return *this; - } - -private: - char m_gameSessionId[MAX_SESSION_ID_LENGTH]; - char m_name[MAX_SESSION_NAME_LENGTH]; - char m_fleetId[MAX_FLEET_ID_LENGTH]; - int m_maximumPlayerSessionCount; - GameSessionStatus m_status; - GameProperty m_gameProperties[MAX_GAME_PROPERTIES]; - int m_gameProperties_count; - char m_ipAddress[MAX_IP_LENGTH]; - int m_port; - char m_gameSessionData[MAX_GAME_SESSION_DATA_LENGTH]; - char m_matchmakerData[MAX_MATCHMAKER_DATA_LENGTH]; - char m_dnsName[MAX_DNS_NAME_LENGTH]; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameSessionStatus.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameSessionStatus.h deleted file mode 100644 index f14939eb..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GameSessionStatus.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once -#include -#include - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -enum class GameSessionStatus { NOT_SET, ACTIVE, ACTIVATING, TERMINATED, TERMINATING }; - -namespace GameSessionStatusMapper { -#ifdef GAMELIFT_USE_STD -inline AWS_GAMELIFT_API GameSessionStatus GetGameSessionStatusForName(const std::string &s_name) { - const char *name = s_name.c_str(); -#else -inline AWS_GAMELIFT_API GameSessionStatus GetGameSessionStatusForName(const char *name) { -#endif - if (strcmp(name, "ACTIVE") == 0) { - return GameSessionStatus::ACTIVE; - } - if (strcmp(name, "ACTIVATING") == 0) { - return GameSessionStatus::ACTIVATING; - } - if (strcmp(name, "TERMINATING") == 0) { - return GameSessionStatus::TERMINATING; - } - if (strcmp(name, "TERMINATED") == 0) { - return GameSessionStatus::TERMINATED; - } - return GameSessionStatus::NOT_SET; -} - -#ifdef GAMELIFT_USE_STD -inline AWS_GAMELIFT_API std::string GetNameForGameSessionStatus(GameSessionStatus value) -#else -inline AWS_GAMELIFT_API const char *GetNameForGameSessionStatus(GameSessionStatus value) -#endif -{ - switch (value) { - case GameSessionStatus::ACTIVE: - return "ACTIVE"; - case GameSessionStatus::ACTIVATING: - return "ACTIVATING"; - case GameSessionStatus::TERMINATING: - return "TERMINATING"; - case GameSessionStatus::TERMINATED: - return "TERMINATED"; - default: - return "NOT_SET"; - } -} -} // namespace GameSessionStatusMapper -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetComputeCertificateResult.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetComputeCertificateResult.h deleted file mode 100644 index 56c9e35d..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetComputeCertificateResult.h +++ /dev/null @@ -1,269 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_CERT_PATH_LENGTH -#define MAX_CERT_PATH_LENGTH 1024 -#endif -#ifndef MAX_COMPUTE_NAME_LENGTH -#define MAX_COMPUTE_NAME_LENGTH 1024 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -/** - *

Represents the returned data in response to a request action.

- */ -class AWS_GAMELIFT_API GetComputeCertificateResult { -#ifdef GAMELIFT_USE_STD -public: - GetComputeCertificateResult() {} - - /** - *

Destructor.

- */ - ~GetComputeCertificateResult() {} - - /** - *

Copy Constructor.

- */ - GetComputeCertificateResult(const GetComputeCertificateResult &other) : m_certificate_path(other.m_certificate_path), m_computeName(other.m_computeName) {} - - /** - *

Move Constructor.

- */ - GetComputeCertificateResult(GetComputeCertificateResult &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - GetComputeCertificateResult &operator=(const GetComputeCertificateResult &other) { - m_certificate_path = other.m_certificate_path; - m_computeName = other.m_computeName; - return *this; - } - - /** - *

Move assignment Constructor.

- */ - GetComputeCertificateResult &operator=(GetComputeCertificateResult &&other) { - m_certificate_path = std::move(other.m_certificate_path); - m_computeName = std::move(other.m_computeName); - return *this; - } - - /** - *

Certificate PEM file path.

- */ - inline const std::string &GetCertificatePath() const { return m_certificate_path; } - - /** - *

Certificate PEM file path.

- */ - inline void SetCertificatePath(const std::string &value) { m_certificate_path = value; } - - /** - *

Certificate PEM file path.

- */ - inline void SetCertificatePath(std::string &&value) { m_certificate_path = std::move(value); } - - /** - *

Certificate PEM file path.

- */ - inline void SetCertificatePath(const char *value) { m_certificate_path.assign(value); } - - /** - *

Certificate PEM file path.

- */ - inline GetComputeCertificateResult &WithCertificatePath(const std::string &value) { - SetCertificatePath(value); - return *this; - } - - /** - *

Certificate PEM file path.

- */ - inline GetComputeCertificateResult &WithCertificatePath(const std::string &&value) { - SetCertificatePath(value); - return *this; - } - - /** - *

Certificate PEM file path.

- */ - inline GetComputeCertificateResult &WithCertificatePath(const char *value) { - SetCertificatePath(value); - return *this; - } - - /** - *

Compute name of this instance

- */ - inline const std::string &GetComputeName() const { return m_computeName; } - - /** - *

Compute name of this instance

- */ - inline void SetComputeName(const std::string &value) { m_computeName = value; } - - /** - *

Compute name of this instance

- */ - inline void SetComputeName(std::string &&value) { m_computeName = std::move(value); } - - /** - *

Compute name of this instance

- */ - inline void SetComputeName(const char *value) { m_computeName.assign(value); } - - /** - *

Compute name of this instance

- */ - inline GetComputeCertificateResult &WithComputeName(const std::string &value) { - SetComputeName(value); - return *this; - } - - /** - *

Compute name of this instance

- */ - inline GetComputeCertificateResult &WithComputeName(const std::string &&value) { - SetComputeName(value); - return *this; - } - - /** - *

Compute name of this instance

- */ - inline GetComputeCertificateResult &WithComputeName(const char *value) { - SetComputeName(value); - return *this; - } - -private: - std::string m_certificate_path; - std::string m_computeName; -#else -public: - GetComputeCertificateResult() { - memset(m_certificate_path, 0, sizeof(m_certificate_path)); - memset(m_computeName, 0, sizeof(m_computeName)); - } - - /** - *

Destructor.

- */ - ~GetComputeCertificateResult() {} - - /** - *

Copy Constructor.

- */ - GetComputeCertificateResult(const GetComputeCertificateResult &other) { - strncpy(m_certificate_path, other.m_certificate_path, sizeof(other.m_certificate_path)); - strncpy(m_computeName, other.m_computeName, sizeof(other.m_computeName)); - } - - /** - *

Move Constructor.

- */ - GetComputeCertificateResult(GetComputeCertificateResult &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - GetComputeCertificateResult &operator=(const GetComputeCertificateResult &other) { - strncpy(m_certificate_path, other.m_certificate_path, sizeof(other.m_certificate_path)); - strncpy(m_computeName, other.m_computeName, sizeof(other.m_computeName)); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - GetComputeCertificateResult &operator=(GetComputeCertificateResult &&other) { - strncpy(m_certificate_path, other.m_certificate_path, sizeof(other.m_certificate_path)); - strncpy(m_computeName, other.m_computeName, sizeof(other.m_computeName)); - - memset(other.m_certificate_path, 0, sizeof(other.m_certificate_path)); - memset(other.m_computeName, 0, sizeof(other.m_computeName)); - - return *this; - } - - /** - *

Certificate PEM file path.

- */ - inline const char *GetCertificatePath() const { return m_certificate_path; } - - /** - *

Certificate PEM file path.

- */ - inline void SetCertificatePath(const char *value) { - strncpy(m_certificate_path, value, sizeof(m_certificate_path)); - m_certificate_path[sizeof(m_certificate_path) - 1] = '\0'; - } - - /** - *

Certificate PEM file path.

- */ - inline GetComputeCertificateResult &WithCertificatePath(const char *value) { - SetCertificatePath(value); - return *this; - } - - /** - *

Compute name of this instance.

- */ - inline const char *GetComputeName() const { return m_computeName; } - - /** - *

Compute name of this instance.

- */ - inline void SetComputeName(const char *value) { - strncpy(m_computeName, value, sizeof(m_computeName)); - m_computeName[sizeof(m_computeName) - 1] = '\0'; - } - - /** - *

Compute name of this instance.

- */ - inline GetComputeCertificateResult &WithComputeName(const char *value) { - SetComputeName(value); - return *this; - } - -private: - char m_certificate_path[MAX_CERT_PATH_LENGTH]; - char m_computeName[MAX_COMPUTE_NAME_LENGTH]; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetFleetRoleCredentialsRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetFleetRoleCredentialsRequest.h deleted file mode 100644 index 91a2a6ec..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetFleetRoleCredentialsRequest.h +++ /dev/null @@ -1,172 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#ifndef MAX_ROLE_SESSION_NAME_LENGTH -#define MAX_ROLE_SESSION_NAME_LENGTH 64 -#endif - -#ifndef GAMELIFT_USE_STD - -#ifndef MAX_ROLE_ARN_LENGTH -#define MAX_ROLE_ARN_LENGTH 2048 -#endif - -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -class AWS_GAMELIFT_API GetFleetRoleCredentialsRequest { -#ifdef GAMELIFT_USE_STD -public: - GetFleetRoleCredentialsRequest() = default; - - ~GetFleetRoleCredentialsRequest() = default; - - GetFleetRoleCredentialsRequest(const GetFleetRoleCredentialsRequest &other) { *this = other; } - - GetFleetRoleCredentialsRequest(GetFleetRoleCredentialsRequest &&other) noexcept { *this = std::move(other); } - - GetFleetRoleCredentialsRequest &operator=(const GetFleetRoleCredentialsRequest &other) = default; - - GetFleetRoleCredentialsRequest &operator=(GetFleetRoleCredentialsRequest &&other) noexcept { - m_roleArn = std::move(other.m_roleArn); - m_roleSessionName = std::move(other.m_roleSessionName); - - return *this; - } - - inline const std::string &GetRoleArn() const { return m_roleArn; } - - inline void SetRoleArn(const std::string &value) { m_roleArn = value; } - - inline void SetRoleArn(std::string &&value) { m_roleArn = std::move(value); } - - inline void SetRoleArn(const char *value) { m_roleArn.assign(value); } - - inline GetFleetRoleCredentialsRequest &WithRoleArn(const std::string &value) { - SetRoleArn(value); - return *this; - } - - inline GetFleetRoleCredentialsRequest &WithRoleArn(std::string &&value) { - SetRoleArn(std::move(value)); - return *this; - } - - inline GetFleetRoleCredentialsRequest &WithRoleArn(const char *value) { - SetRoleArn(value); - return *this; - } - - inline const std::string &GetRoleSessionName() const { return m_roleSessionName; } - - inline void SetRoleSessionName(const std::string &value) { m_roleSessionName = value; } - - inline void SetRoleSessionName(std::string &&value) { m_roleSessionName = std::move(value); } - - inline void SetRoleSessionName(const char *value) { m_roleSessionName.assign(value); } - - inline GetFleetRoleCredentialsRequest &WithRoleSessionName(const std::string &value) { - SetRoleSessionName(value); - return *this; - } - - inline GetFleetRoleCredentialsRequest &WithRoleSessionName(std::string &&value) { - SetRoleSessionName(std::move(value)); - return *this; - } - - inline GetFleetRoleCredentialsRequest &WithRoleSessionName(const char *value) { - SetRoleSessionName(value); - return *this; - } - -private: - std::string m_roleArn; - std::string m_roleSessionName; -#else -public: - GetFleetRoleCredentialsRequest() : m_roleArn{'\0'}, m_roleSessionName{'\0'} {} - - ~GetFleetRoleCredentialsRequest() = default; - - GetFleetRoleCredentialsRequest(const GetFleetRoleCredentialsRequest &other) { *this = other; } - - GetFleetRoleCredentialsRequest(GetFleetRoleCredentialsRequest &&other) noexcept { *this = std::move(other); } - - GetFleetRoleCredentialsRequest &operator=(const GetFleetRoleCredentialsRequest &other) { - strncpy(m_roleArn, other.m_roleArn, sizeof(m_roleArn)); - strncpy(m_roleSessionName, other.m_roleSessionName, sizeof(m_roleSessionName)); - - m_roleArn[sizeof(m_roleArn) - 1] = '\0'; - m_roleSessionName[sizeof(m_roleSessionName) - 1] = '\0'; - - return *this; - } - - GetFleetRoleCredentialsRequest &operator=(GetFleetRoleCredentialsRequest &&other) noexcept { - strncpy(m_roleArn, other.m_roleArn, sizeof(m_roleArn)); - strncpy(m_roleSessionName, other.m_roleSessionName, sizeof(m_roleSessionName)); - - m_roleArn[sizeof(m_roleArn) - 1] = '\0'; - m_roleSessionName[sizeof(m_roleSessionName) - 1] = '\0'; - - return *this; - } - - inline const char *GetRoleArn() const { return m_roleArn; } - - inline void SetRoleArn(const char *value) { - strncpy(m_roleArn, value, sizeof(m_roleArn)); - m_roleArn[sizeof(m_roleArn) - 1] = '\0'; - } - - inline GetFleetRoleCredentialsRequest &WithRoleArn(const char *value) { - SetRoleArn(value); - return *this; - } - - inline const char *GetRoleSessionName() const { return m_roleSessionName; } - - inline void SetRoleSessionName(const char *value) { - strncpy(m_roleSessionName, value, sizeof(m_roleSessionName)); - m_roleSessionName[sizeof(m_roleSessionName) - 1] = '\0'; - } - - inline GetFleetRoleCredentialsRequest &WithRoleSessionName(const char *value) { - SetRoleSessionName(value); - return *this; - } - -private: - char m_roleArn[MAX_ROLE_ARN_LENGTH + 1]; - char m_roleSessionName[MAX_ROLE_SESSION_NAME_LENGTH + 1]; -#endif -}; -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetFleetRoleCredentialsResult.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetFleetRoleCredentialsResult.h deleted file mode 100644 index b2896747..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/GetFleetRoleCredentialsResult.h +++ /dev/null @@ -1,357 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#include -#include -#include - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#ifndef GAMELIFT_USE_STD - -#ifndef MAX_ASSUMED_USER_ROLE_ARN_LENGTH -#define MAX_ASSUMED_USER_ROLE_ARN_LENGTH 2048 -#endif -#ifndef MAX_ASSUMED_ROLE_ID_LENGTH -#define MAX_ASSUMED_ROLE_ID_LENGTH 2048 -#endif -#ifndef MAX_ACCESS_KEY_ID_LENGTH -#define MAX_ACCESS_KEY_ID_LENGTH 128 -#endif -#ifndef MAX_SECRET_ACCESS_KEY_LENGTH -#define MAX_SECRET_ACCESS_KEY_LENGTH 128 -#endif -#ifndef MAX_SESSION_TOKEN_LENGTH -#define MAX_SESSION_TOKEN_LENGTH 4098 -#endif - -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -class AWS_GAMELIFT_API GetFleetRoleCredentialsResult { -#ifdef GAMELIFT_USE_STD -public: - GetFleetRoleCredentialsResult() : m_expiration({0}) {} - - ~GetFleetRoleCredentialsResult() = default; - - GetFleetRoleCredentialsResult(const GetFleetRoleCredentialsResult &other) { *this = other; } - - GetFleetRoleCredentialsResult(GetFleetRoleCredentialsResult &&other) noexcept { *this = std::move(other); } - - GetFleetRoleCredentialsResult &operator=(const GetFleetRoleCredentialsResult &other) = default; - - GetFleetRoleCredentialsResult &operator=(GetFleetRoleCredentialsResult &&other) noexcept { - m_assumedUserRoleArn = std::move(other.m_assumedUserRoleArn); - m_assumedRoleId = std::move(other.m_assumedRoleId); - m_accessKeyId = std::move(other.m_accessKeyId); - m_secretAccessKey = std::move(other.m_secretAccessKey); - m_sessionToken = std::move(other.m_sessionToken); - m_expiration = other.m_expiration; - - return *this; - } - - inline const std::string &GetAssumedUserRoleArn() const { return m_assumedUserRoleArn; } - - inline void SetAssumedUserRoleArn(const std::string &value) { m_assumedUserRoleArn = value; } - - inline void SetAssumedUserRoleArn(std::string &&value) { m_assumedUserRoleArn = std::move(value); } - - inline void SetAssumedUserRoleArn(const char *value) { m_assumedUserRoleArn.assign(value); } - - inline GetFleetRoleCredentialsResult &WithAssumedUserRoleArn(const std::string &value) { - SetAssumedUserRoleArn(value); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithAssumedUserRoleArn(std::string &&value) { - SetAssumedUserRoleArn(std::move(value)); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithAssumedUserRoleArn(const char *value) { - SetAssumedUserRoleArn(value); - return *this; - } - - inline const std::string &GetAssumedRoleId() const { return m_assumedRoleId; } - - inline void SetAssumedRoleId(const std::string &value) { m_assumedRoleId = value; } - - inline void SetAssumedRoleId(std::string &&value) { m_assumedRoleId = std::move(value); } - - inline void SetAssumedRoleId(const char *value) { m_assumedRoleId.assign(value); } - - inline GetFleetRoleCredentialsResult &WithAssumedRoleId(const std::string &value) { - SetAssumedRoleId(value); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithAssumedRoleId(std::string &&value) { - SetAssumedRoleId(std::move(value)); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithAssumedRoleId(const char *value) { - SetAssumedRoleId(value); - return *this; - } - - inline const std::string &GetAccessKeyId() const { return m_accessKeyId; } - - inline void SetAccessKeyId(const std::string &value) { m_accessKeyId = value; } - - inline void SetAccessKeyId(std::string &&value) { m_accessKeyId = std::move(value); } - - inline void SetAccessKeyId(const char *value) { m_accessKeyId.assign(value); } - - inline GetFleetRoleCredentialsResult &WithAccessKeyId(const std::string &value) { - SetAccessKeyId(value); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithAccessKeyId(std::string &&value) { - SetAccessKeyId(std::move(value)); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithAccessKeyId(const char *value) { - SetAccessKeyId(value); - return *this; - } - - inline const std::string &GetSecretAccessKey() const { return m_secretAccessKey; } - - inline void SetSecretAccessKey(const std::string &value) { m_secretAccessKey = value; } - - inline void SetSecretAccessKey(std::string &&value) { m_secretAccessKey = std::move(value); } - - inline void SetSecretAccessKey(const char *value) { m_secretAccessKey.assign(value); } - - inline GetFleetRoleCredentialsResult &WithSecretAccessKey(const std::string &value) { - SetSecretAccessKey(value); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithSecretAccessKey(std::string &&value) { - SetSecretAccessKey(std::move(value)); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithSecretAccessKey(const char *value) { - SetSecretAccessKey(value); - return *this; - } - - inline const std::string &GetSessionToken() const { return m_sessionToken; } - - inline void SetSessionToken(const std::string &value) { m_sessionToken = value; } - - inline void SetSessionToken(std::string &&value) { m_sessionToken = std::move(value); } - - inline void SetSessionToken(const char *value) { m_sessionToken.assign(value); } - - inline GetFleetRoleCredentialsResult &WithSessionToken(const std::string &value) { - SetSessionToken(value); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithSessionToken(std::string &&value) { - SetSessionToken(std::move(value)); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithSessionToken(const char *value) { - SetSessionToken(value); - return *this; - } - - inline const std::tm &GetExpiration() const { return m_expiration; } - - inline void SetExpiration(const std::tm &value) { m_expiration = value; } - - inline void SetExpiration(std::tm &&value) { m_expiration = value; } - - inline void SetExpiration(const time_t &epochTime) { -#ifdef WIN32 - gmtime_s(&m_expiration, &epochTime); -#else - gmtime_r(&epochTime, &m_expiration); -#endif - } - - inline GetFleetRoleCredentialsResult &WithExpiration(const std::tm &value) { - SetExpiration(value); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithExpiration(const std::tm &&value) { - SetExpiration(value); - return *this; - } - - inline GetFleetRoleCredentialsResult &WithExpiration(const time_t &epochTime) { - SetExpiration(epochTime); - return *this; - } - -private: - std::string m_assumedUserRoleArn; - std::string m_assumedRoleId; - std::string m_accessKeyId; - std::string m_secretAccessKey; - std::string m_sessionToken; - std::tm m_expiration; -#else -public: - GetFleetRoleCredentialsResult() - : m_assumedUserRoleArn{'\0'}, m_assumedRoleId{'\0'}, m_accessKeyId{'\0'}, m_secretAccessKey{'\0'}, m_sessionToken{'\0'}, m_expiration(0) {} - - ~GetFleetRoleCredentialsResult() {} - - GetFleetRoleCredentialsResult(const GetFleetRoleCredentialsResult &other) { *this = other; } - - GetFleetRoleCredentialsResult(GetFleetRoleCredentialsResult &&other) noexcept { *this = std::move(other); } - - GetFleetRoleCredentialsResult &operator=(const GetFleetRoleCredentialsResult &other) { - // Don't allow self-assignment - if (this != &other) { - strncpy(m_assumedUserRoleArn, other.m_assumedUserRoleArn, sizeof(m_assumedUserRoleArn)); - strncpy(m_assumedRoleId, other.m_assumedRoleId, sizeof(m_assumedRoleId)); - strncpy(m_accessKeyId, other.m_accessKeyId, sizeof(m_accessKeyId)); - strncpy(m_secretAccessKey, other.m_secretAccessKey, sizeof(m_secretAccessKey)); - strncpy(m_sessionToken, other.m_sessionToken, sizeof(m_sessionToken)); - - m_assumedUserRoleArn[sizeof(m_assumedUserRoleArn) - 1] = '\0'; - m_assumedRoleId[sizeof(m_assumedRoleId) - 1] = '\0'; - m_accessKeyId[sizeof(m_accessKeyId) - 1] = '\0'; - m_secretAccessKey[sizeof(m_secretAccessKey) - 1] = '\0'; - m_sessionToken[sizeof(m_sessionToken) - 1] = '\0'; - - m_expiration = other.m_expiration; - } - - return *this; - } - - GetFleetRoleCredentialsResult &operator=(GetFleetRoleCredentialsResult &&other) noexcept { - strncpy(m_assumedUserRoleArn, other.m_assumedUserRoleArn, sizeof(m_assumedUserRoleArn)); - strncpy(m_assumedRoleId, other.m_assumedRoleId, sizeof(m_assumedRoleId)); - strncpy(m_accessKeyId, other.m_accessKeyId, sizeof(m_accessKeyId)); - strncpy(m_secretAccessKey, other.m_secretAccessKey, sizeof(m_secretAccessKey)); - strncpy(m_sessionToken, other.m_sessionToken, sizeof(m_sessionToken)); - - m_assumedUserRoleArn[sizeof(m_assumedUserRoleArn) - 1] = '\0'; - m_assumedRoleId[sizeof(m_assumedRoleId) - 1] = '\0'; - m_accessKeyId[sizeof(m_accessKeyId) - 1] = '\0'; - m_secretAccessKey[sizeof(m_secretAccessKey) - 1] = '\0'; - m_sessionToken[sizeof(m_sessionToken) - 1] = '\0'; - - m_expiration = other.m_expiration; - - return *this; - } - - inline const char *GetAssumedUserRoleArn() const { return m_assumedUserRoleArn; } - - inline void SetAssumedUserRoleArn(const char *value) { - strncpy(m_assumedUserRoleArn, value, sizeof(m_assumedUserRoleArn)); - m_assumedUserRoleArn[sizeof(m_assumedUserRoleArn) - 1] = '\0'; - } - - inline GetFleetRoleCredentialsResult &WithAssumedUserRoleArn(const char *value) { - SetAssumedUserRoleArn(value); - return *this; - } - - inline const char *GetAssumedRoleId() const { return m_assumedRoleId; } - - inline void SetAssumedRoleId(const char *value) { - strncpy(m_assumedRoleId, value, sizeof(m_assumedRoleId)); - m_assumedRoleId[sizeof(m_assumedRoleId) - 1] = '\0'; - } - - inline GetFleetRoleCredentialsResult &WithAssumedRoleId(const char *value) { - SetAssumedRoleId(value); - return *this; - } - - inline const char *GetAccessKeyId() const { return m_accessKeyId; } - - inline void SetAccessKeyId(const char *value) { - strncpy(m_accessKeyId, value, sizeof(m_accessKeyId)); - m_accessKeyId[sizeof(m_accessKeyId) - 1] = '\0'; - } - - inline GetFleetRoleCredentialsResult &WithAccessKeyId(const char *value) { - SetAccessKeyId(value); - return *this; - } - - inline const char *GetSecretAccessKey() const { return m_secretAccessKey; } - - inline void SetSecretAccessKey(const char *value) { - strncpy(m_secretAccessKey, value, sizeof(m_secretAccessKey)); - m_secretAccessKey[sizeof(m_secretAccessKey) - 1] = '\0'; - } - - inline GetFleetRoleCredentialsResult &WithSecretAccessKey(const char *value) { - SetSecretAccessKey(value); - return *this; - } - - inline const char *GetSessionToken() const { return m_sessionToken; } - - inline void SetSessionToken(const char *value) { - strncpy(m_sessionToken, value, sizeof(m_sessionToken)); - m_sessionToken[sizeof(m_sessionToken) - 1] = '\0'; - } - - inline GetFleetRoleCredentialsResult &WithSessionToken(const char *value) { - SetSessionToken(value); - return *this; - } - - inline time_t GetExpiration() const { return m_expiration; } - - inline void SetExpiration(const time_t value) { m_expiration = value; } - - inline GetFleetRoleCredentialsResult &WithExpiration(const time_t value) { - SetExpiration(value); - return *this; - } - -private: - char m_assumedUserRoleArn[MAX_ASSUMED_USER_ROLE_ARN_LENGTH + 1]; - char m_assumedRoleId[MAX_ASSUMED_ROLE_ID_LENGTH + 1]; - char m_accessKeyId[MAX_ACCESS_KEY_ID_LENGTH + 1]; - char m_secretAccessKey[MAX_SECRET_ACCESS_KEY_LENGTH + 1]; - char m_sessionToken[MAX_SESSION_TOKEN_LENGTH + 1]; - time_t m_expiration; -#endif -}; -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/Player.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/Player.h deleted file mode 100644 index b88172b2..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/Player.h +++ /dev/null @@ -1,416 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_ATTR_STRING_LENGTH -#define MAX_ATTR_STRING_LENGTH 101 -#endif -#ifndef MAX_TEAM_STRING_LENGTH -#define MAX_TEAM_STRING_LENGTH 101 -#endif -#ifndef MAX_PLAYER_ID_STRING_LENGTH -#define MAX_PLAYER_ID_STRING_LENGTH 129 -#endif -#ifndef MAX_PLAYER_ATTRIBUTES_SIZE -#define MAX_PLAYER_ATTRIBUTES_SIZE 10 -#endif -#ifndef MAX_LATENCY_SIZE -#define MAX_LATENCY_SIZE 20 -#endif -#ifndef REGION_LENGTH -#define REGION_LENGTH 65 -#endif -#else -#include -#include -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -/** - *

A player object to be used when making a StartMatchBackfill request. - * For more information, see the Amazon - * GameLift Developer Guide.

- */ -class AWS_GAMELIFT_API Player { -#ifdef GAMELIFT_USE_STD -public: - /** - *

Constructor.

- */ - Player() {} - - /** - *

Destructor.

- */ - ~Player() {} - - /** - *

Copy Constructor.

- */ - Player(const Player &other) - : m_playerId(other.m_playerId), m_team(other.m_team), m_playerAttributes(other.m_playerAttributes), m_latencyInMs(other.m_latencyInMs) {} - - /** - *

Move Constructor.

- */ - Player(Player &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - Player &operator=(const Player &other) { - m_playerId = other.m_playerId; - m_team = other.m_team; - m_playerAttributes = other.m_playerAttributes; - m_latencyInMs = other.m_latencyInMs; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - Player &operator=(Player &&other) { - m_playerId = std::move(other.m_playerId); - m_team = std::move(other.m_team); - m_playerAttributes = std::move(other.m_playerAttributes); - m_latencyInMs = std::move(other.m_latencyInMs); - - return *this; - } - - inline const std::string &GetPlayerId() const { return m_playerId; } - - inline void SetPlayerId(const std::string &value) { m_playerId = value; } - - inline void SetPlayerId(std::string &&value) { m_playerId = value; } - - inline void SetPlayerId(const char *value) { m_playerId.assign(value); } - - inline Player &WithPlayerId(const std::string &value) { - SetPlayerId(value); - return *this; - } - - inline Player &WithPlayerId(std::string &&value) { - SetPlayerId(value); - return *this; - } - - inline Player &WithPlayerId(const char *value) { - SetPlayerId(value); - return *this; - } - - inline const std::string &GetTeam() const { return m_team; } - - inline void SetTeam(const std::string &value) { m_team = value; } - - inline void SetTeam(std::string &&value) { m_team = value; } - - inline void SetTeam(const char *value) { m_team.assign(value); } - - inline Player &WithTeam(const std::string &value) { - SetTeam(value); - return *this; - } - - inline Player &WithTeam(std::string &&value) { - SetTeam(value); - return *this; - } - - inline Player &WithTeam(const char *value) { - SetTeam(value); - return *this; - } - - inline const std::map &GetPlayerAttributes() const { return m_playerAttributes; } - - inline void SetPlayerAttributes(const std::map &value) { m_playerAttributes = value; } - - inline void SetPlayerAttributes(const std::map &&value) { m_playerAttributes = std::move(value); } - - inline Player &WithPlayerAttributes(const std::map &value) { - SetPlayerAttributes(value); - return *this; - } - - inline Player &WithPlayerAttributes(std::map &&value) { - SetPlayerAttributes(value); - return *this; - } - - inline Player &AddPlayerAttribute(const std::string &attrName, const AttributeValue &attrValue) { - m_playerAttributes.emplace(attrName, attrValue); - return *this; - } - - inline Player &AddPlayerAttribute(const std::string &&attrName, const AttributeValue &&attrValue) { - m_playerAttributes.emplace(std::move(attrName), std::move(attrValue)); - return *this; - } - - inline const std::map &GetLatencyInMs() const { return m_latencyInMs; } - - inline void SetLatencyInMs(const std::map &value) { m_latencyInMs = value; } - - inline void SetLatencyInMs(const std::map &&value) { m_latencyInMs = std::move(value); } - - inline Player &WithLatencyInMs(const std::map &value) { - SetLatencyInMs(value); - return *this; - } - - inline Player &WithLatencyInMs(std::map &&value) { - SetLatencyInMs(value); - return *this; - } - - inline Player &AddLatencyInMs(const std::string &attrName, const int &attrValue) { - m_latencyInMs[attrName] = attrValue; - return *this; - } - - inline Player &AddLatencyInMs(const std::string &&attrName, const int &attrValue) { - m_latencyInMs.emplace(std::move(attrName), attrValue); - return *this; - } - -private: - std::string m_playerId; - std::string m_team; - std::map m_playerAttributes; - std::map m_latencyInMs; -#else -public: - struct NamedAttribute; - struct RegionAndLatency; - typedef char AttributeStringType[MAX_ATTR_STRING_LENGTH]; - - /** - *

Constructor.

- */ - Player() : m_attributeCount(0), m_latencyCount(0) { - m_playerId[0] = 0; - m_team[0] = 0; - } - - /** - *

Destructor.

- */ - ~Player() {} - - /** - *

Copy Constructor.

- */ - Player(const Player &other) { *this = other; } - - /** - *

Move Constructor.

- */ - Player(Player &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - Player &operator=(const Player &other) { - SetPlayerId(other.m_playerId); - SetTeam(other.m_team); - - m_attributeCount = other.m_attributeCount; - m_latencyCount = other.m_latencyCount; - - for (int index = 0; index < m_attributeCount; ++index) { - m_playerAttributes[index] = other.m_playerAttributes[index]; - } - for (int index = 0; index < m_latencyCount; ++index) { - m_latencyInMs[index] = other.m_latencyInMs[index]; - } - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - Player &operator=(Player &&other) { - *this = other; - - return *this; - } - - inline const char *GetPlayerId() const { return m_playerId; } - - inline void SetPlayerId(const char *value) { - strncpy(m_playerId, value, sizeof(m_playerId)); - m_playerId[MAX_PLAYER_ID_STRING_LENGTH - 1] = '\0'; - } - - inline Player &WithPlayerId(const char *value) { - SetPlayerId(value); - return *this; - } - - inline const char *GetTeam() const { return m_team; } - - inline void SetTeam(const char *value) { - strncpy(m_team, value, sizeof(m_team)); - m_team[MAX_TEAM_STRING_LENGTH - 1] = '\0'; - } - - inline Player &WithTeam(const char *value) { - SetTeam(value); - return *this; - } - - inline const NamedAttribute *GetPlayerAttributes(int &count) const { - count = m_attributeCount; - return m_playerAttributes; - } - - inline void AddPlayerAttribute(const char *attrName, const AttributeValue &attrValue) { - if (m_attributeCount < MAX_PLAYER_ATTRIBUTES_SIZE) { - m_playerAttributes[m_attributeCount++] = NamedAttribute(attrName, attrValue); - } - } - - inline Player &WithPlayerAttribute(const char *attrName, const AttributeValue &attrValue) { - AddPlayerAttribute(attrName, attrValue); - return *this; - } - - inline const RegionAndLatency *GetLatencyMs(int &count) const { - count = m_latencyCount; - return m_latencyInMs; - } - - inline void AddLatencyMs(const char *region, int latencyMs) { - if (m_latencyCount < MAX_LATENCY_SIZE) { - m_latencyInMs[m_latencyCount++] = RegionAndLatency(region, latencyMs); - } - }; - - inline Player &WithLatencyMs(const char *region, int latencyMs) { - AddLatencyMs(region, latencyMs); - return *this; - } - - struct NamedAttribute { - NamedAttribute() { m_name[0] = 0; } - - NamedAttribute(const char *name, const AttributeValue &value) : m_value(value) { - strncpy(m_name, name, sizeof(m_name)); - m_name[sizeof(m_name) - 1] = 0; - } - - NamedAttribute(const NamedAttribute &other) : m_value(other.m_value) { - strncpy(m_name, other.m_name, sizeof(m_name)); - m_name[sizeof(m_name) - 1] = 0; - } - - NamedAttribute &operator=(const NamedAttribute &other) { - strncpy(m_name, other.m_name, sizeof(m_name)); - m_name[sizeof(m_name) - 1] = 0; - m_value = other.m_value; - - return *this; - } - - NamedAttribute(const NamedAttribute &&other) : m_value(std::move(other.m_value)) { - strncpy(m_name, other.m_name, sizeof(m_name)); - m_name[sizeof(m_name) - 1] = 0; - } - - NamedAttribute &operator=(const NamedAttribute &&other) { - *this = other; - - return *this; - } - - inline const char *GetName() const { return m_name; } - - inline AttributeValue GetValue() const { return m_value; } - - private: - AttributeStringType m_name; - AttributeValue m_value; - }; - - struct RegionAndLatency { - RegionAndLatency() : m_latencyMs(0) { m_region[0] = 0; } - - RegionAndLatency(const char *region, int latencyMs) { - strncpy(m_region, region, sizeof(m_region)); - m_region[sizeof(m_region) - 1] = 0; - m_latencyMs = latencyMs; - } - - RegionAndLatency(const RegionAndLatency &other) { *this = other; } - - RegionAndLatency &operator=(const RegionAndLatency &other) { - strncpy(m_region, other.m_region, sizeof(m_region)); - m_region[sizeof(m_region) - 1] = 0; - m_latencyMs = other.m_latencyMs; - - return *this; - } - - RegionAndLatency(const RegionAndLatency &&other) { *this = std::move(other); } - - RegionAndLatency &operator=(const RegionAndLatency &&other) { - *this = other; - - return *this; - } - - inline const char *GetRegion() const { return m_region; } - - inline int GetLatencyMs() const { return m_latencyMs; } - - private: - char m_region[REGION_LENGTH]; - int m_latencyMs; - }; - -private: - char m_playerId[MAX_PLAYER_ID_STRING_LENGTH]; - char m_team[MAX_TEAM_STRING_LENGTH]; - NamedAttribute m_playerAttributes[MAX_PLAYER_ATTRIBUTES_SIZE]; - RegionAndLatency m_latencyInMs[MAX_LATENCY_SIZE]; - int m_attributeCount; - int m_latencyCount; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSession.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSession.h deleted file mode 100644 index ecc041be..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSession.h +++ /dev/null @@ -1,991 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include -#include -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_IP_ADDRESS_LENGTH -#define MAX_IP_ADDRESS_LENGTH 45 -#endif -#ifndef MAX_GAME_SESSION_ID_LENGTH -#define MAX_GAME_SESSION_ID_LENGTH 256 -#endif -#ifndef MAX_PLAYER_SESSION_ID_LENGTH -#define MAX_PLAYER_SESSION_ID_LENGTH 256 -#endif -#ifndef MAX_PLAYER_ID_LENGTH -#define MAX_PLAYER_ID_LENGTH 1024 -#endif -#ifndef MAX_FLEET_ID_LENGTH -#define MAX_FLEET_ID_LENGTH 1024 -#endif -#ifndef MAX_PLAYER_DATA_LENGTH -#define MAX_PLAYER_DATA_LENGTH 2049 -#endif -#ifndef MAX_DNS_NAME_LENGTH -#define MAX_DNS_NAME_LENGTH 64 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -/** - *

Properties describing a player session.

- */ -class AWS_GAMELIFT_API PlayerSession { -#ifdef GAMELIFT_USE_STD -public: - PlayerSession() : m_creationTime(0), m_terminationTime(0), m_status(), m_port(0) {} - - /** - *

Destructor.

- */ - ~PlayerSession() {} - - /** - *

Copy Constructor.

- */ - PlayerSession(const PlayerSession &other) - : m_playerSessionId(other.m_playerSessionId), m_playerId(other.m_playerId), m_gameSessionId(other.m_gameSessionId), m_fleetId(other.m_fleetId), - m_creationTime(other.m_creationTime), m_terminationTime(other.m_terminationTime), m_status(other.m_status), m_ipAddress(other.m_ipAddress), - m_port(other.m_port), m_playerData(other.m_playerData), m_dnsName(other.m_dnsName) {} - - /** - *

Move Constructor.

- */ - PlayerSession(PlayerSession &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - PlayerSession &operator=(const PlayerSession &other) { - m_playerSessionId = other.m_playerSessionId; - m_playerId = other.m_playerId; - m_gameSessionId = other.m_gameSessionId; - m_fleetId = other.m_fleetId; - m_creationTime = other.m_creationTime; - m_terminationTime = other.m_terminationTime; - m_status = other.m_status; - m_ipAddress = other.m_ipAddress; - m_port = other.m_port; - m_playerData = other.m_playerData; - m_dnsName = other.m_dnsName; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - PlayerSession &operator=(PlayerSession &&other) { - m_playerSessionId = std::move(other.m_playerSessionId); - m_playerId = std::move(other.m_playerId); - m_gameSessionId = std::move(other.m_gameSessionId); - m_fleetId = std::move(other.m_fleetId); - m_creationTime = std::move(other.m_creationTime); - m_terminationTime = std::move(other.m_terminationTime); - m_status = std::move(other.m_status); - m_ipAddress = std::move(other.m_ipAddress); - m_port = std::move(other.m_port); - m_playerData = std::move(other.m_playerData); - m_dnsName = std::move(other.m_dnsName); - - return *this; - } - - /** - *

Unique identifier for a player session.

- */ - inline const std::string &GetPlayerSessionId() const { return m_playerSessionId; } - - /** - *

Unique identifier for a player session.

- */ - inline void SetPlayerSessionId(const std::string &value) { m_playerSessionId = value; } - - /** - *

Unique identifier for a player session.

- */ - inline void SetPlayerSessionId(std::string &&value) { m_playerSessionId = value; } - - /** - *

Unique identifier for a player session.

- */ - inline void SetPlayerSessionId(const char *value) { m_playerSessionId.assign(value); } - - /** - *

Unique identifier for a player session.

- */ - inline PlayerSession &WithPlayerSessionId(const std::string &value) { - SetPlayerSessionId(value); - return *this; - } - - /** - *

Unique identifier for a player session.

- */ - inline PlayerSession &WithPlayerSessionId(std::string &&value) { - SetPlayerSessionId(value); - return *this; - } - - /** - *

Unique identifier for a player session.

- */ - inline PlayerSession &WithPlayerSessionId(const char *value) { - SetPlayerSessionId(value); - return *this; - } - - /** - *

Unique identifier for a player.

- */ - inline const std::string &GetPlayerId() const { return m_playerId; } - - /** - *

Unique identifier for a player.

- */ - inline void SetPlayerId(const std::string &value) { m_playerId = value; } - - /** - *

Unique identifier for a player.

- */ - inline void SetPlayerId(std::string &&value) { m_playerId = value; } - - /** - *

Unique identifier for a player.

- */ - inline void SetPlayerId(const char *value) { m_playerId.assign(value); } - - /** - *

Unique identifier for a player.

- */ - inline PlayerSession &WithPlayerId(const std::string &value) { - SetPlayerId(value); - return *this; - } - - /** - *

Unique identifier for a player.

- */ - inline PlayerSession &WithPlayerId(std::string &&value) { - SetPlayerId(value); - return *this; - } - - /** - *

Unique identifier for a player.

- */ - inline PlayerSession &WithPlayerId(const char *value) { - SetPlayerId(value); - return *this; - } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline const std::string &GetGameSessionId() const { return m_gameSessionId; } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline void SetGameSessionId(const std::string &value) { m_gameSessionId = value; } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline void SetGameSessionId(std::string &&value) { m_gameSessionId = value; } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline void SetGameSessionId(const char *value) { m_gameSessionId.assign(value); } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline PlayerSession &WithGameSessionId(const std::string &value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline PlayerSession &WithGameSessionId(std::string &&value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline PlayerSession &WithGameSessionId(const char *value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for a fleet.

- */ - inline const std::string &GetFleetId() const { return m_fleetId; } - - /** - *

Unique identifier for a fleet.

- */ - inline void SetFleetId(const std::string &value) { m_fleetId = value; } - - /** - *

Unique identifier for a fleet.

- */ - inline void SetFleetId(std::string &&value) { m_fleetId = value; } - - /** - *

Unique identifier for a fleet.

- */ - inline void SetFleetId(const char *value) { m_fleetId.assign(value); } - - /** - *

Unique identifier for a fleet.

- */ - inline PlayerSession &WithFleetId(const std::string &value) { - SetFleetId(value); - return *this; - } - - /** - *

Unique identifier for a fleet.

- */ - inline PlayerSession &WithFleetId(std::string &&value) { - SetFleetId(value); - return *this; - } - - /** - *

Unique identifier for a fleet.

- */ - inline PlayerSession &WithFleetId(const char *value) { - SetFleetId(value); - return *this; - } - - /** - *

Time stamp indicating when this data object was created. Format is a number - * expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline long GetCreationTime() const { return m_creationTime; } - - /** - *

Time stamp indicating when this data object was created. Format is a number - * expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline void SetCreationTime(long value) { m_creationTime = value; } - - /** - *

Time stamp indicating when this data object was created. Format is a number - * expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline PlayerSession &WithCreationTime(long value) { - SetCreationTime(value); - return *this; - } - - /** - *

Time stamp indicating when this data object was terminated. Format is a - * number expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline long GetTerminationTime() const { return m_terminationTime; } - - /** - *

Time stamp indicating when this data object was terminated. Format is a - * number expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline void SetTerminationTime(long value) { m_terminationTime = value; } - - /** - *

Time stamp indicating when this data object was terminated. Format is a - * number expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline PlayerSession &WithTerminationTime(long value) { - SetTerminationTime(value); - return *this; - } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline const PlayerSessionStatus &GetStatus() const { return m_status; } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline void SetStatus(const PlayerSessionStatus &value) { m_status = value; } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline void SetStatus(PlayerSessionStatus &&value) { m_status = value; } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline PlayerSession &WithStatus(const PlayerSessionStatus &value) { - SetStatus(value); - return *this; - } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline PlayerSession &WithStatus(PlayerSessionStatus &&value) { - SetStatus(value); - return *this; - } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline const std::string &GetIpAddress() const { return m_ipAddress; } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline void SetIpAddress(const std::string &value) { m_ipAddress = value; } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline void SetIpAddress(std::string &&value) { m_ipAddress = value; } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline void SetIpAddress(const char *value) { m_ipAddress.assign(value); } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline PlayerSession &WithIpAddress(const std::string &value) { - SetIpAddress(value); - return *this; - } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline PlayerSession &WithIpAddress(std::string &&value) { - SetIpAddress(value); - return *this; - } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline PlayerSession &WithIpAddress(const char *value) { - SetIpAddress(value); - return *this; - } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline int GetPort() const { return m_port; } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline void SetPort(int value) { m_port = value; } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline PlayerSession &WithPort(int value) { - SetPort(value); - return *this; - } - - /** - *

Custom player data.

- */ - inline const std::string &GetPlayerData() const { return m_playerData; } - - /** - *

Custom player data.

- */ - inline void SetPlayerData(const std::string &value) { m_playerData = value; } - - /** - *

Custom player data.

- */ - inline void SetPlayerData(std::string &&value) { m_playerData = value; } - - /** - *

Custom player data.

- */ - inline void SetPlayerData(const char *value) { m_playerData.assign(value); } - - /** - *

Custom player data.

- */ - inline PlayerSession &WithPlayerData(const std::string &value) { - SetPlayerData(value); - return *this; - } - - /** - *

Custom player data.

- */ - inline PlayerSession &WithPlayerData(std::string &&value) { - SetPlayerData(value); - return *this; - } - - /** - *

Custom player data.

- */ - inline PlayerSession &WithPlayerData(const char *value) { - SetPlayerData(value); - return *this; - } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline const std::string &GetDnsName() const { return m_dnsName; } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline void SetDnsName(const std::string &value) { m_dnsName = value; } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline void SetDnsName(std::string &&value) { m_dnsName = value; } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline void SetDnsName(const char *value) { m_dnsName.assign(value); } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline PlayerSession &WithDnsName(const std::string &value) { - SetDnsName(value); - return *this; - } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline PlayerSession &WithDnsName(std::string &&value) { - SetDnsName(value); - return *this; - } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline PlayerSession &WithDnsName(const char *value) { - SetDnsName(value); - return *this; - } - -private: - std::string m_playerSessionId; - std::string m_playerId; - std::string m_gameSessionId; - std::string m_fleetId; - long m_creationTime; - long m_terminationTime; - PlayerSessionStatus m_status; - std::string m_ipAddress; - int m_port; - std::string m_playerData; - std::string m_dnsName; -#else -public: - PlayerSession() : m_creationTime(0), m_terminationTime(0), m_status(), m_port(0) { - memset(m_playerSessionId, 0, sizeof(m_playerSessionId)); - memset(m_playerId, 0, sizeof(m_playerId)); - memset(m_gameSessionId, 0, sizeof(m_gameSessionId)); - memset(m_fleetId, 0, sizeof(m_fleetId)); - memset(m_ipAddress, 0, sizeof(m_ipAddress)); - memset(m_playerData, 0, sizeof(m_playerData)); - memset(m_dnsName, 0, sizeof(m_dnsName)); - } - - /** - *

Destructor.

- */ - ~PlayerSession() {} - - /** - *

Copy Constructor.

- */ - PlayerSession(const PlayerSession &other) - : m_creationTime(other.m_creationTime), m_terminationTime(other.m_terminationTime), m_status(other.m_status), m_port(other.m_port) { - strncpy(m_playerSessionId, other.m_playerSessionId, sizeof(other.m_playerSessionId)); - strncpy(m_playerId, other.m_playerId, sizeof(other.m_playerId)); - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_fleetId, other.m_fleetId, sizeof(other.m_fleetId)); - strncpy(m_ipAddress, other.m_ipAddress, sizeof(other.m_ipAddress)); - strncpy(m_playerData, other.m_playerData, sizeof(other.m_playerData)); - strncpy(m_dnsName, other.m_dnsName, sizeof(other.m_dnsName)); - } - - /** - *

Move Constructor.

- */ - PlayerSession(PlayerSession &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - PlayerSession &operator=(const PlayerSession &other) { - m_creationTime = other.m_creationTime; - m_terminationTime = other.m_terminationTime; - m_status = other.m_status; - m_port = other.m_port; - - strncpy(m_playerSessionId, other.m_playerSessionId, sizeof(other.m_playerSessionId)); - strncpy(m_playerId, other.m_playerId, sizeof(other.m_playerId)); - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_fleetId, other.m_fleetId, sizeof(other.m_fleetId)); - strncpy(m_ipAddress, other.m_ipAddress, sizeof(other.m_ipAddress)); - strncpy(m_playerData, other.m_playerData, sizeof(other.m_playerData)); - strncpy(m_dnsName, other.m_dnsName, sizeof(other.m_dnsName)); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - PlayerSession &operator=(PlayerSession &&other) { - m_creationTime = other.m_creationTime; - m_terminationTime = other.m_terminationTime; - m_status = other.m_status; - m_port = other.m_port; - - strncpy(m_playerSessionId, other.m_playerSessionId, sizeof(other.m_playerSessionId)); - strncpy(m_playerId, other.m_playerId, sizeof(other.m_playerId)); - strncpy(m_gameSessionId, other.m_gameSessionId, sizeof(other.m_gameSessionId)); - strncpy(m_fleetId, other.m_fleetId, sizeof(other.m_fleetId)); - strncpy(m_ipAddress, other.m_ipAddress, sizeof(other.m_ipAddress)); - strncpy(m_playerData, other.m_playerData, sizeof(other.m_playerData)); - strncpy(m_dnsName, other.m_dnsName, sizeof(other.m_dnsName)); - - other.m_creationTime = 0; - other.m_terminationTime = 0; - other.m_port = 0; - - memset(other.m_playerSessionId, 0, sizeof(other.m_playerSessionId)); - memset(other.m_playerId, 0, sizeof(other.m_playerId)); - memset(other.m_gameSessionId, 0, sizeof(other.m_gameSessionId)); - memset(other.m_fleetId, 0, sizeof(other.m_fleetId)); - memset(other.m_ipAddress, 0, sizeof(other.m_ipAddress)); - memset(other.m_playerData, 0, sizeof(other.m_playerData)); - memset(other.m_dnsName, 0, sizeof(other.m_dnsName)); - - return *this; - } - - /** - *

Unique identifier for a player session.

- */ - inline const char *GetPlayerSessionId() const { return m_playerSessionId; } - - /** - *

Unique identifier for a player session.

- */ - inline void SetPlayerSessionId(const char *value) { - strncpy(m_playerSessionId, value, sizeof(m_playerSessionId)); - m_playerSessionId[sizeof(m_playerSessionId) - 1] = 0; - } - - /** - *

Unique identifier for a player session.

- */ - inline PlayerSession &WithPlayerSessionId(const char *value) { - SetPlayerSessionId(value); - return *this; - } - - /** - *

Unique identifier for a player.

- */ - inline const char *GetPlayerId() const { return m_playerId; } - - /** - *

Unique identifier for a player.

- */ - inline void SetPlayerId(const char *value) { - strncpy(m_playerId, value, sizeof(m_playerId)); - m_playerId[sizeof(m_playerId) - 1] = 0; - } - - /** - *

Unique identifier for a player.

- */ - inline PlayerSession &WithPlayerId(const char *value) { - SetPlayerId(value); - return *this; - } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline const char *GetGameSessionId() const { return m_gameSessionId; } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline void SetGameSessionId(const char *value) { - strncpy(m_gameSessionId, value, sizeof(m_gameSessionId)); - m_gameSessionId[sizeof(m_gameSessionId) - 1] = 0; - } - - /** - *

Unique identifier for the game session that the player session is connected - * to.

- */ - inline PlayerSession &WithGameSessionId(const char *value) { - SetGameSessionId(value); - return *this; - } - - /** - *

Unique identifier for a fleet.

- */ - inline const char *GetFleetId() const { return m_fleetId; } - - /** - *

Unique identifier for a fleet.

- */ - inline void SetFleetId(const char *value) { - strncpy(m_fleetId, value, sizeof(m_fleetId)); - m_fleetId[sizeof(m_fleetId) - 1] = 0; - } - - /** - *

Unique identifier for a fleet.

- */ - inline PlayerSession &WithFleetId(const char *value) { - SetFleetId(value); - return *this; - } - - /** - *

Time stamp indicating when this data object was created. Format is a number - * expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline long GetCreationTime() const { return m_creationTime; } - - /** - *

Time stamp indicating when this data object was created. Format is a number - * expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline void SetCreationTime(long value) { m_creationTime = value; } - - /** - *

Time stamp indicating when this data object was created. Format is a number - * expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline PlayerSession &WithCreationTime(long value) { - SetCreationTime(value); - return *this; - } - - /** - *

Time stamp indicating when this data object was terminated. Format is a - * number expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline long GetTerminationTime() const { return m_terminationTime; } - - /** - *

Time stamp indicating when this data object was terminated. Format is a - * number expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline void SetTerminationTime(long value) { m_terminationTime = value; } - - /** - *

Time stamp indicating when this data object was terminated. Format is a - * number expressed in Unix time as milliseconds (ex: "1469498468.057".

- */ - inline PlayerSession &WithTerminationTime(long value) { - SetTerminationTime(value); - return *this; - } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline const PlayerSessionStatus &GetStatus() const { return m_status; } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline void SetStatus(const PlayerSessionStatus &value) { m_status = value; } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline void SetStatus(PlayerSessionStatus &&value) { m_status = value; } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline PlayerSession &WithStatus(const PlayerSessionStatus &value) { - SetStatus(value); - return *this; - } - - /** - *

Current status of the player session.

Possible player session statuses - * include the following:

  • RESERVED – The player session - * request has been received, but the player has not yet connected to the server - * process and/or been validated.

  • ACTIVE – The player - * has been validated by the server process and is currently connected.

  • - *
  • COMPLETED – The player connection has been dropped.

  • - *
  • TIMEDOUT – A player session request was received, but the player - * did not connect and/or was not validated within the time-out limit (60 - * seconds).

- */ - inline PlayerSession &WithStatus(PlayerSessionStatus &&value) { - SetStatus(value); - return *this; - } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline const char *GetIpAddress() const { return m_ipAddress; } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline void SetIpAddress(const char *value) { - strncpy(m_ipAddress, value, sizeof(m_ipAddress)); - m_ipAddress[sizeof(m_ipAddress) - 1] = 0; - } - - /** - *

Game session IP address. All player sessions reference the game session - * location.

- */ - inline PlayerSession &WithIpAddress(const char *value) { - SetIpAddress(value); - return *this; - } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline int GetPort() const { return m_port; } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline void SetPort(int value) { m_port = value; } - - /** - *

Port number for the game session. To connect to a game server process, an - * app needs both the IP address and port number.

- */ - inline PlayerSession &WithPort(int value) { - SetPort(value); - return *this; - } - - /** - *

Custom player data.

- */ - inline const char *GetPlayerData() const { return m_playerData; } - - /** - *

Custom player data.

- */ - inline void SetPlayerData(const char *value) { - strncpy(m_playerData, value, sizeof(m_playerData)); - m_playerData[sizeof(m_playerData) - 1] = 0; - } - - /** - *

Custom player data.

- */ - inline PlayerSession &WithPlayerData(const char *value) { - SetPlayerData(value); - return *this; - } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline const char *GetDnsName() const { return m_dnsName; } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline void SetDnsName(const char *value) { - strncpy(m_dnsName, value, sizeof(m_dnsName)); - m_dnsName[sizeof(m_dnsName) - 1] = 0; - } - - /** - *

Game session DNS name. All player sessions reference the game session - * location.

- */ - inline PlayerSession &WithDnsName(const char *value) { - SetDnsName(value); - return *this; - } - -private: - char m_playerSessionId[MAX_PLAYER_SESSION_ID_LENGTH]; - char m_playerId[MAX_PLAYER_ID_LENGTH]; - char m_gameSessionId[MAX_GAME_SESSION_ID_LENGTH]; - char m_fleetId[MAX_FLEET_ID_LENGTH]; - long m_creationTime; - long m_terminationTime; - PlayerSessionStatus m_status; - char m_ipAddress[MAX_IP_ADDRESS_LENGTH]; - int m_port; - char m_playerData[MAX_PLAYER_DATA_LENGTH]; - char m_dnsName[MAX_DNS_NAME_LENGTH]; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSessionCreationPolicy.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSessionCreationPolicy.h deleted file mode 100644 index 5291892f..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSessionCreationPolicy.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once -#include - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -enum class PlayerSessionCreationPolicy { NOT_SET, ACCEPT_ALL, DENY_ALL }; - -namespace PlayerSessionCreationPolicyMapper { -#ifdef GAMELIFT_USE_STD -inline AWS_GAMELIFT_API PlayerSessionCreationPolicy GetPlayerSessionCreationPolicyForName(const std::string &name) { - if (name == "ACCEPT_ALL") { - return PlayerSessionCreationPolicy::ACCEPT_ALL; - } - if (name == "DENY_ALL") { - return PlayerSessionCreationPolicy::DENY_ALL; - } - return PlayerSessionCreationPolicy::NOT_SET; -} - -inline AWS_GAMELIFT_API std::string GetNameForPlayerSessionCreationPolicy(PlayerSessionCreationPolicy value) { - switch (value) { - case PlayerSessionCreationPolicy::ACCEPT_ALL: - return "ACCEPT_ALL"; - case PlayerSessionCreationPolicy::DENY_ALL: - return "DENY_ALL"; - default: - return "NOT_SET"; - } -} -#else -inline AWS_GAMELIFT_API PlayerSessionCreationPolicy GetPlayerSessionCreationPolicyForName(const char *name) { - if (strcmp(name, "ACCEPT_ALL") == 0) { - return PlayerSessionCreationPolicy::ACCEPT_ALL; - } - if (strcmp(name, "DENY_ALL") == 0) { - return PlayerSessionCreationPolicy::DENY_ALL; - } - return PlayerSessionCreationPolicy::NOT_SET; -} - -inline AWS_GAMELIFT_API const char *GetNameForPlayerSessionCreationPolicy(PlayerSessionCreationPolicy value) { - switch (value) { - case PlayerSessionCreationPolicy::ACCEPT_ALL: - return "ACCEPT_ALL"; - case PlayerSessionCreationPolicy::DENY_ALL: - return "DENY_ALL"; - default: - return "NOT_SET"; - } -} -#endif -} // namespace PlayerSessionCreationPolicyMapper -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSessionStatus.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSessionStatus.h deleted file mode 100644 index 2851fcbd..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/PlayerSessionStatus.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once -#include -#include - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -enum class PlayerSessionStatus { NOT_SET, RESERVED, ACTIVE, COMPLETED, TIMEDOUT }; - -namespace PlayerSessionStatusMapper { -#ifdef GAMELIFT_USE_STD -inline AWS_GAMELIFT_API PlayerSessionStatus GetPlayerSessionStatusForName(const std::string &name) { - if (name == "RESERVED") { - return PlayerSessionStatus::RESERVED; - } - if (name == "ACTIVE") { - return PlayerSessionStatus::ACTIVE; - } - if (name == "COMPLETED") { - return PlayerSessionStatus::COMPLETED; - } - if (name == "TIMEDOUT") { - return PlayerSessionStatus::TIMEDOUT; - } - return PlayerSessionStatus::NOT_SET; -} -inline AWS_GAMELIFT_API std::string GetNameForPlayerSessionStatus(PlayerSessionStatus value) { - switch (value) { - case PlayerSessionStatus::RESERVED: - return "RESERVED"; - case PlayerSessionStatus::ACTIVE: - return "ACTIVE"; - case PlayerSessionStatus::COMPLETED: - return "COMPLETED"; - case PlayerSessionStatus::TIMEDOUT: - return "TIMEDOUT"; - default: - return "NOT_SET"; - } -} -#else -inline AWS_GAMELIFT_API PlayerSessionStatus GetPlayerSessionStatusForName(const char *name) { - if (strcmp(name, "RESERVED") == 0) { - return PlayerSessionStatus::RESERVED; - } - if (strcmp(name, "ACTIVE") == 0) { - return PlayerSessionStatus::ACTIVE; - } - if (strcmp(name, "COMPLETED") == 0) { - return PlayerSessionStatus::COMPLETED; - } - if (strcmp(name, "TIMEDOUT") == 0) { - return PlayerSessionStatus::TIMEDOUT; - } - return PlayerSessionStatus::NOT_SET; -} -inline AWS_GAMELIFT_API const char *GetNameForPlayerSessionStatus(PlayerSessionStatus value) { - switch (value) { - case PlayerSessionStatus::RESERVED: - return "RESERVED"; - case PlayerSessionStatus::ACTIVE: - return "ACTIVE"; - case PlayerSessionStatus::COMPLETED: - return "COMPLETED"; - case PlayerSessionStatus::TIMEDOUT: - return "TIMEDOUT"; - default: - return "NOT_SET"; - } -} -#endif -} // namespace PlayerSessionStatusMapper -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/ServerParameters.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/ServerParameters.h deleted file mode 100644 index 01eb3b3e..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/ServerParameters.h +++ /dev/null @@ -1,426 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_WEBSOCKET_URL_LENGTH -#define MAX_WEBSOCKET_URL_LENGTH 1024 -#endif -#ifndef MAX_FLEET_ID_LENGTH -#define MAX_FLEET_ID_LENGTH 1024 -#endif -#ifndef MAX_HOST_ID_LENGTH -#define MAX_HOST_ID_LENGTH 1024 -#endif -#ifndef MAX_PROCESS_ID_LENGTH -#define MAX_PROCESS_ID_LENGTH 1024 -#endif -#ifndef MAX_AUTH_TOKEN_LENGTH -#define MAX_AUTH_TOKEN_LENGTH 1024 -#endif -#ifndef MAX_AWS_REGION_LENGTH -#define MAX_AWS_REGION_LENGTH 64 -#endif -#ifndef MAX_ACCESS_KEY_LENGTH -#define MAX_ACCESS_KEY_LENGTH 128 -#endif -#ifndef MAX_SECRET_KEY_LENGTH -#define MAX_SECRET_KEY_LENGTH 256 -#endif -#ifndef MAX_SESSION_TOKEN_LENGTH -#define MAX_SESSION_TOKEN_LENGTH 4098 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -class AWS_GAMELIFT_API ServerParameters { -#ifdef GAMELIFT_USE_STD -public: - ServerParameters() = default; - ServerParameters(const ServerParameters &) = default; - ServerParameters(ServerParameters &&) = default; - ServerParameters &operator=(const ServerParameters &) = default; - ServerParameters &operator=(ServerParameters &&) = default; - - ServerParameters(const std::string &websocketUrl, const std::string &authToken, const std::string &fleetId, const std::string &hostId, - const std::string &processId) - : m_webSocketUrl(websocketUrl), m_authToken(authToken), m_fleetId(fleetId), m_hostId(hostId), m_processId(processId) {} - - ServerParameters(const std::string &websocketUrl, const std::string &fleetId, const std::string &hostId, - const std::string &processId, const std::string &awsRegion, const std::string &accessKey, const std::string &secretKey, - const std::string &sessionToken) - : m_webSocketUrl(websocketUrl), - m_fleetId(fleetId), - m_hostId(hostId), - m_processId(processId), - m_awsRegion(awsRegion), - m_accessKey(accessKey), - m_secretKey(secretKey), - m_sessionToken(sessionToken) {} - - inline const std::string &GetWebSocketUrl() const { return m_webSocketUrl; } - - inline const std::string &GetAuthToken() const { return m_authToken; } - - inline const std::string &GetFleetId() const { return m_fleetId; } - - inline const std::string &GetProcessId() const { return m_processId; } - - inline const std::string &GetHostId() const { return m_hostId; } - - inline const std::string &GetAwsRegion() const { return m_awsRegion; } - - inline const std::string &GetAccessKey() const { return m_accessKey; } - - inline const std::string &GetSecretKey() const { return m_secretKey; } - - inline const std::string &GetSessionToken() const { return m_sessionToken; } - - inline void SetWebSocketUrl(const std::string &webSocketUrl) { m_webSocketUrl = webSocketUrl; } - - inline void SetAuthToken(const std::string &authToken) { m_authToken = authToken; } - - inline void SetFleetId(const std::string &fleetId) { m_fleetId = fleetId; } - - inline void SetProcessId(const std::string &processId) { m_processId = processId; } - - inline void SetHostId(const std::string &hostId) { m_hostId = hostId; } - - inline void SetAwsRegion(const std::string &awsRegion) { m_awsRegion = awsRegion; } - - inline void SetAccessKey(const std::string &accessKey) { m_accessKey = accessKey; } - - inline void SetSecretKey(const std::string &secretKey) { m_secretKey = secretKey; } - - inline void SetSessionToken(const std::string &sessionToken) { m_sessionToken = sessionToken; } - - inline void SetWebSocketUrl(const char *webSocketUrl) { m_webSocketUrl.assign(webSocketUrl); } - - inline void SetAuthToken(const char *authToken) { m_authToken.assign(authToken); } - - inline void SetFleetId(const char *fleetId) { m_fleetId.assign(fleetId); } - - inline void SetProcessId(const char *processId) { m_processId.assign(processId); } - - inline void SetHostId(const char *hostId) { m_hostId.assign(hostId); } - - inline void SetAwsRegion(const char *awsRegion) { m_awsRegion.assign(awsRegion); } - - inline void SetAccessKey(const char *accessKey) { m_accessKey.assign(accessKey); } - - inline void SetSecretKey(const char *secretKey) { m_secretKey.assign(secretKey); } - - inline void SetSessionToken(const char *sessionToken) { m_sessionToken.assign(sessionToken); } - - inline ServerParameters &WithWebSocketUrl(const std::string &webSocketUrl) { - SetWebSocketUrl(webSocketUrl); - return *this; - } - - inline ServerParameters &WithAuthToken(const std::string &authToken) { - SetAuthToken(authToken); - return *this; - } - - inline ServerParameters &WithFleetId(const std::string &fleetId) { - SetFleetId(fleetId); - return *this; - } - - inline ServerParameters &WithProcessId(const std::string &processId) { - SetProcessId(processId); - return *this; - } - - inline ServerParameters &WithHostId(const std::string &hostId) { - SetHostId(hostId); - return *this; - } - - inline ServerParameters &WithAwsRegion(const std::string &awsRegion) { - SetAwsRegion(awsRegion); - return *this; - } - - inline ServerParameters &WithAccessKey(const std::string &accessKey) { - SetAccessKey(accessKey); - return *this; - } - - inline ServerParameters &WithSecretKey(const std::string &secretKey) { - SetSecretKey(secretKey); - return *this; - } - - inline ServerParameters &WithSessionToken(const std::string &sessionToken) { - SetSessionToken(sessionToken); - return *this; - } - - inline ServerParameters &WithWebSocketUrl(const char *webSocketUrl) { - SetWebSocketUrl(webSocketUrl); - return *this; - } - - inline ServerParameters &WithAuthToken(const char *authToken) { - SetAuthToken(authToken); - return *this; - } - - inline ServerParameters &WithFleetId(const char *fleetId) { - SetFleetId(fleetId); - return *this; - } - - inline ServerParameters &WithProcessId(const char *processId) { - SetProcessId(processId); - return *this; - } - - inline ServerParameters &WithHostId(const char *hostId) { - SetHostId(hostId); - return *this; - } - - inline ServerParameters &WithAwsRegion(const char *awsRegion) { - SetAwsRegion(awsRegion); - return *this; - } - - inline ServerParameters &WithAccessKey(const char *accessKey) { - SetAccessKey(accessKey); - return *this; - } - - inline ServerParameters &WithSecretKey(const char *secretKey) { - SetSecretKey(secretKey); - return *this; - } - - inline ServerParameters &WithSessionToken(const char *sessionToken) { - SetSessionToken(sessionToken); - return *this; - } - -private: - std::string m_webSocketUrl; - std::string m_fleetId; - std::string m_processId; - std::string m_hostId; - std::string m_authToken; - std::string m_awsRegion; - std::string m_accessKey; - std::string m_secretKey; - std::string m_sessionToken; -#else -public: - ServerParameters() { - memset(m_webSocketUrl, 0, sizeof(m_webSocketUrl)); - memset(m_authToken, 0, sizeof(m_authToken)); - memset(m_processId, 0, sizeof(m_processId)); - memset(m_hostId, 0, sizeof(m_hostId)); - memset(m_fleetId, 0, sizeof(m_fleetId)); - memset(m_awsRegion, 0, sizeof(m_awsRegion)); - memset(m_accessKey, 0, sizeof(m_accessKey)); - memset(m_secretKey, 0, sizeof(m_secretKey)); - memset(m_sessionToken, 0, sizeof(m_sessionToken)); - } - - ServerParameters(const char *webSocketUrl, const char *authToken, const char *fleetId, const char *hostId, const char *processId) { - strncpy(m_webSocketUrl, webSocketUrl, sizeof(m_webSocketUrl)); - m_webSocketUrl[sizeof(m_webSocketUrl) - 1] = '\0'; - strncpy(m_authToken, authToken, sizeof(m_authToken)); - m_authToken[sizeof(m_authToken) - 1] = '\0'; - strncpy(m_fleetId, fleetId, sizeof(m_fleetId)); - m_fleetId[sizeof(m_fleetId) - 1] = '\0'; - strncpy(m_processId, processId, sizeof(m_processId)); - m_processId[sizeof(m_processId) - 1] = '\0'; - strncpy(m_hostId, hostId, sizeof(m_hostId)); - m_hostId[sizeof(m_hostId) - 1] = '\0'; - memset(m_awsRegion, 0, sizeof(m_awsRegion)); - memset(m_accessKey, 0, sizeof(m_accessKey)); - memset(m_secretKey, 0, sizeof(m_secretKey)); - memset(m_sessionToken, 0, sizeof(m_sessionToken)); - } - - ServerParameters(const char *webSocketUrl, - const char *fleetId, - const char *hostId, - const char *processId, - const char *awsRegion, - const char *accessKey, - const char *secretKey, - const char *sessionToken) { - strncpy(m_webSocketUrl, webSocketUrl, sizeof(m_webSocketUrl)); - m_webSocketUrl[sizeof(m_webSocketUrl) - 1] = '\0'; - strncpy(m_fleetId, fleetId, sizeof(m_fleetId)); - m_fleetId[sizeof(m_fleetId) - 1] = '\0'; - strncpy(m_processId, processId, sizeof(m_processId)); - m_processId[sizeof(m_processId) - 1] = '\0'; - strncpy(m_hostId, hostId, sizeof(m_hostId)); - m_hostId[sizeof(m_hostId) - 1] = '\0'; - strncpy(m_awsRegion, awsRegion, sizeof(m_awsRegion)); - m_awsRegion[sizeof(m_awsRegion) - 1] = '\0'; - strncpy(m_accessKey, accessKey, sizeof(m_accessKey)); - m_accessKey[sizeof(m_accessKey) - 1] = '\0'; - strncpy(m_secretKey, secretKey, sizeof(m_secretKey)); - m_secretKey[sizeof(m_secretKey) - 1] = '\0'; - strncpy(m_sessionToken, sessionToken, sizeof(m_sessionToken)); - m_sessionToken[sizeof(m_sessionToken) - 1] = '\0'; - memset(m_authToken, 0, MAX_AUTH_TOKEN_LENGTH); - } - - ServerParameters(const ServerParameters &) = default; - ServerParameters(ServerParameters &&) = default; - ServerParameters &operator=(const ServerParameters &) = default; - ServerParameters &operator=(ServerParameters &&) = default; - - inline const char *GetWebSocketUrl() const { return m_webSocketUrl; } - - inline const char *GetAuthToken() const { return m_authToken; } - - inline const char *GetFleetId() const { return m_fleetId; } - - inline const char *GetProcessId() const { return m_processId; } - - inline const char *GetHostId() const { return m_hostId; } - - inline const char *GetAwsRegion() const { return m_awsRegion; } - - inline const char *GetAccessKey() const { return m_accessKey; } - - inline const char *GetSecretKey() const { return m_secretKey; } - - inline const char *GetSessionToken() const { return m_sessionToken; } - - inline void SetWebSocketUrl(const char *webSocketUrl) { - strncpy(m_webSocketUrl, webSocketUrl, sizeof(m_webSocketUrl)); - m_webSocketUrl[sizeof(m_webSocketUrl) - 1] = '\0'; - } - - inline void SetAuthToken(const char *authToken) { - strncpy(m_authToken, authToken, sizeof(m_authToken)); - m_authToken[sizeof(m_authToken) - 1] = '\0'; - } - - inline void SetFleetId(const char *fleetId) { - strncpy(m_fleetId, fleetId, sizeof(m_fleetId)); - m_fleetId[sizeof(m_fleetId) - 1] = '\0'; - } - - inline void SetProcessId(const char *processId) { - strncpy(m_processId, processId, sizeof(m_processId)); - m_processId[sizeof(m_processId) - 1] = '\0'; - } - - inline void SetHostId(const char *hostId) { - strncpy(m_hostId, hostId, sizeof(m_hostId)); - m_hostId[sizeof(m_hostId) - 1] = '\0'; - } - - inline void SetAwsRegion(const char *awsRegion) { - strncpy(m_awsRegion, awsRegion, sizeof(m_awsRegion)); - m_awsRegion[sizeof(m_awsRegion) - 1] = '\0'; - } - - inline void SetAccessKey(const char *accessKey) { - strncpy(m_accessKey, accessKey, sizeof(m_accessKey)); - m_accessKey[sizeof(m_accessKey) - 1] = '\0'; - } - - inline void SetSecretKey(const char *secretKey) { - strncpy(m_secretKey, secretKey, sizeof(m_secretKey)); - m_secretKey[sizeof(m_secretKey) - 1] = '\0'; - } - - inline void SetSessionToken(const char *sessionToken) { - strncpy(m_sessionToken, sessionToken, sizeof(m_sessionToken)); - m_authToken[sizeof(m_authToken) - 1] = '\0'; - } - - inline ServerParameters &WithWebSocketUrl(const char *webSocketUrl) { - SetWebSocketUrl(webSocketUrl); - return *this; - } - - inline ServerParameters &WithAuthToken(const char *authToken) { - SetAuthToken(authToken); - return *this; - } - - inline ServerParameters &WithFleetId(const char *fleetId) { - SetFleetId(fleetId); - return *this; - } - - inline ServerParameters &WithProcessId(const char *processId) { - SetProcessId(processId); - return *this; - } - - inline ServerParameters &WithHostId(const char *hostId) { - SetHostId(hostId); - return *this; - } - - inline ServerParameters &WithAwsRegion(const char *awsRegion) { - SetAwsRegion(awsRegion); - return *this; - } - - inline ServerParameters &WithAccessKey(const char *accessKey) { - SetAccessKey(accessKey); - return *this; - } - - inline ServerParameters &WithSecretKey(const char *secretKey) { - SetSecretKey(secretKey); - return *this; - } - - inline ServerParameters &WithSessionToken(const char *sessionToken) { - SetSessionToken(sessionToken); - return *this; - } - -private: - char m_webSocketUrl[MAX_WEBSOCKET_URL_LENGTH]; - char m_fleetId[MAX_FLEET_ID_LENGTH]; - char m_processId[MAX_PROCESS_ID_LENGTH]; - char m_hostId[MAX_HOST_ID_LENGTH]; - char m_authToken[MAX_AUTH_TOKEN_LENGTH]; - char m_awsRegion[MAX_AWS_REGION_LENGTH]; - char m_accessKey[MAX_ACCESS_KEY_LENGTH]; - char m_secretKey[MAX_SECRET_KEY_LENGTH]; - char m_sessionToken[MAX_SESSION_TOKEN_LENGTH]; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StartMatchBackfillRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StartMatchBackfillRequest.h deleted file mode 100644 index 1afb8bf2..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StartMatchBackfillRequest.h +++ /dev/null @@ -1,313 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_TICKET_LENGTH -#define MAX_TICKET_LENGTH 129 -#endif -#ifndef MAX_ARN_LENGTH -#define MAX_ARN_LENGTH 257 -#endif -#ifndef MAX_PLAYERS -#define MAX_PLAYERS 40 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -/** - *

A request to be used for making a StartMatchBackfill call. - * For more information, see the Amazon GameLift Servers - * Developer Guide.

- * - * Note: Each StartMatchBackfillRequest takes a little less than 1mb of memory. The default windows - * stack size is 1mb, so creating one StartMatchBackfillRequest variable on the stack frame gets you - * 99% of the way to a stack overflow. On MacOS and Linux the stack size is up to 8mb so the issue - * is seen less often but is still possible. Avoid creating local variables of this type. - */ -class AWS_GAMELIFT_API StartMatchBackfillRequest { -#ifdef GAMELIFT_USE_STD -public: - /** - *

Constructor.

- */ - StartMatchBackfillRequest() {} - - /** - *

Destructor.

- */ - ~StartMatchBackfillRequest() {} - - /** - *

Copy Constructor.

- */ - StartMatchBackfillRequest(const StartMatchBackfillRequest &other) - : m_ticketId(other.m_ticketId), m_matchmakingConfigurationArn(other.m_matchmakingConfigurationArn), m_gameSessionArn(other.m_gameSessionArn), - m_players(other.m_players) {} - - /** - *

Move Constructor.

- */ - StartMatchBackfillRequest(StartMatchBackfillRequest &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - StartMatchBackfillRequest &operator=(const StartMatchBackfillRequest &other) { - m_ticketId = other.m_ticketId; - m_matchmakingConfigurationArn = other.m_matchmakingConfigurationArn; - m_gameSessionArn = other.m_gameSessionArn; - m_players = other.m_players; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - StartMatchBackfillRequest &operator=(StartMatchBackfillRequest &&other) { - m_ticketId = std::move(other.m_ticketId); - m_matchmakingConfigurationArn = std::move(other.m_matchmakingConfigurationArn); - m_gameSessionArn = std::move(other.m_gameSessionArn); - m_players = std::move(other.m_players); - - return *this; - } - - inline const std::string &GetTicketId() const { return m_ticketId; } - - inline void SetTicketId(const std::string &value) { m_ticketId = value; } - - inline void SetTicketId(std::string &&value) { m_ticketId = value; } - - inline void SetTicketId(const char *value) { m_ticketId.assign(value); } - - inline StartMatchBackfillRequest &WithTicketId(const std::string &value) { - SetTicketId(value); - return *this; - } - - inline StartMatchBackfillRequest &WithTicketId(std::string &&value) { - SetTicketId(value); - return *this; - } - - inline StartMatchBackfillRequest &WithTicketId(const char *value) { - SetTicketId(value); - return *this; - } - - inline const std::string &GetMatchmakingConfigurationArn() const { return m_matchmakingConfigurationArn; } - - inline void SetMatchmakingConfigurationArn(const std::string &value) { m_matchmakingConfigurationArn = value; } - - inline void SetMatchmakingConfigurationArn(std::string &&value) { m_matchmakingConfigurationArn = value; } - - inline void SetMatchmakingConfigurationArn(const char *value) { m_matchmakingConfigurationArn.assign(value); } - - inline StartMatchBackfillRequest &WithMatchmakingConfigurationArn(const std::string &value) { - SetMatchmakingConfigurationArn(value); - return *this; - } - - inline StartMatchBackfillRequest &WithMatchmakingConfigurationArn(std::string &&value) { - SetMatchmakingConfigurationArn(value); - return *this; - } - - inline StartMatchBackfillRequest &WithMatchmakingConfigurationArn(const char *value) { - SetMatchmakingConfigurationArn(value); - return *this; - } - - inline const std::string &GetGameSessionArn() const { return m_gameSessionArn; } - - inline void SetGameSessionArn(const std::string &value) { m_gameSessionArn = value; } - - inline void SetGameSessionArn(std::string &&value) { m_gameSessionArn = value; } - - inline void SetGameSessionArn(const char *value) { m_gameSessionArn.assign(value); } - - inline StartMatchBackfillRequest &WithGameSessionArn(const std::string &value) { - SetGameSessionArn(value); - return *this; - } - - inline StartMatchBackfillRequest &WithGameSessionArn(std::string &&value) { - SetGameSessionArn(value); - return *this; - } - - inline StartMatchBackfillRequest &WithGameSessionArn(const char *value) { - SetGameSessionArn(value); - return *this; - } - - inline const std::vector &GetPlayers() const { return m_players; } - - inline void SetPlayers(const std::vector &value) { m_players = value; } - - inline void SetPlayers(std::vector &&value) { m_players = value; } - - inline StartMatchBackfillRequest &WithPlayer(const std::vector &value) { - SetPlayers(value); - return *this; - } - - inline StartMatchBackfillRequest &WithPlayer(std::vector &&value) { - SetPlayers(value); - return *this; - } - - inline StartMatchBackfillRequest &AddPlayer(const Player &value) { - m_players.push_back(value); - return *this; - } - - inline StartMatchBackfillRequest &AddPlayer(Player &&value) { - m_players.push_back(value); - return *this; - } - -private: - std::string m_ticketId; - std::string m_matchmakingConfigurationArn; - std::string m_gameSessionArn; - std::vector m_players; -#else -public: - StartMatchBackfillRequest() : m_playerCount(0) { - memset(m_ticketId, 0, sizeof(m_ticketId)); - memset(m_matchmakingConfigurationArn, 0, sizeof(m_matchmakingConfigurationArn)); - memset(m_gameSessionArn, 0, sizeof(m_gameSessionArn)); - } - - /** - *

Destructor.

- */ - ~StartMatchBackfillRequest() {} - - /** - *

Copy Constructor.

- */ - StartMatchBackfillRequest(const StartMatchBackfillRequest &other) { *this = other; } - - /** - *

Move Constructor.

- */ - StartMatchBackfillRequest(StartMatchBackfillRequest &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - StartMatchBackfillRequest &operator=(const StartMatchBackfillRequest &other) { - SetTicketId(other.m_ticketId); - SetMatchmakingConfigurationArn(other.m_matchmakingConfigurationArn); - SetGameSessionArn(other.m_gameSessionArn); - - m_playerCount = 0; - for (int index = 0; index < other.m_playerCount; ++index) { - AddPlayer(other.m_players[index]); - } - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - StartMatchBackfillRequest &operator=(StartMatchBackfillRequest &&other) { - *this = other; - - return *this; - } - - inline const char *GetTicketId() const { return m_ticketId; } - - inline void SetTicketId(const char *value) { - strncpy(m_ticketId, value, sizeof(m_ticketId)); - m_ticketId[MAX_TICKET_LENGTH - 1] = '\0'; - } - - inline StartMatchBackfillRequest &WithTicketId(const char *value) { - SetTicketId(value); - return *this; - } - - inline const char *GetMatchmakingConfigurationArn() const { return m_matchmakingConfigurationArn; } - - inline void SetMatchmakingConfigurationArn(const char *value) { - strncpy(m_matchmakingConfigurationArn, value, sizeof(m_matchmakingConfigurationArn)); - m_matchmakingConfigurationArn[MAX_ARN_LENGTH - 1] = '\0'; - } - - inline StartMatchBackfillRequest &WithMatchmakingConfigurationArn(const char *value) { - SetMatchmakingConfigurationArn(value); - return *this; - } - - inline const char *GetGameSessionArn() const { return m_gameSessionArn; } - - inline void SetGameSessionArn(const char *value) { - strncpy(m_gameSessionArn, value, sizeof(m_gameSessionArn)); - m_gameSessionArn[MAX_ARN_LENGTH - 1] = '\0'; - } - - inline StartMatchBackfillRequest &WithGameSessionArn(const char *value) { - SetGameSessionArn(value); - return *this; - } - - inline const Player *GetPlayers(int &count) const { - count = m_playerCount; - return m_players; - } - - inline StartMatchBackfillRequest &AddPlayer(const Player &player) { - if (m_playerCount < MAX_PLAYERS) { - m_players[m_playerCount++] = player; - } - return *this; - }; - - inline StartMatchBackfillRequest &WithPlayer(Player player) { return AddPlayer(player); } - -private: - char m_ticketId[MAX_TICKET_LENGTH]; - char m_matchmakingConfigurationArn[MAX_ARN_LENGTH]; - char m_gameSessionArn[MAX_ARN_LENGTH]; - Player m_players[MAX_PLAYERS]; - int m_playerCount; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StartMatchBackfillResult.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StartMatchBackfillResult.h deleted file mode 100644 index 1b4ca580..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StartMatchBackfillResult.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -#ifndef GAMELIFT_USE_STD -#ifndef MAX_TICKET_ID_LENGTH -#define MAX_TICKET_ID_LENGTH 129 -#endif -#endif - -/** - *

Represents the returned data from StartMatchBackfill (currently only the ticketId) - * in response to a request action. - * For more information, see the Amazon GameLift Servers - * Developer Guide.

- */ -class AWS_GAMELIFT_API StartMatchBackfillResult { -#ifdef GAMELIFT_USE_STD -public: - StartMatchBackfillResult() {} - - /** - *

Destructor.

- */ - ~StartMatchBackfillResult() {} - - /** - *

Copy Constructor.

- */ - StartMatchBackfillResult(const StartMatchBackfillResult &other) : m_ticketId(other.m_ticketId) {} - - /** - *

Move Constructor.

- */ - StartMatchBackfillResult(StartMatchBackfillResult &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - StartMatchBackfillResult &operator=(const StartMatchBackfillResult &other) { - m_ticketId = other.m_ticketId; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - StartMatchBackfillResult &operator=(StartMatchBackfillResult &&other) { - m_ticketId = std::move(other.m_ticketId); - - return *this; - } - - /** - *

TicketId used for the submitted match backfill request.

- */ - inline const std::string &GetTicketId() const { return m_ticketId; } - - /** - *

TicketId used for the submitted match backfill request.

- */ - inline void SetTicketId(const std::string &value) { m_ticketId = value; } - - /** - *

TicketId used for the submitted match backfill request.

- */ - inline StartMatchBackfillResult &WithTicketId(std::string value) { - SetTicketId(value); - return *this; - } - -private: - std::string m_ticketId; -#else -public: - StartMatchBackfillResult() { memset(m_ticketId, 0, sizeof(m_ticketId)); } - - /** - *

Destructor.

- */ - ~StartMatchBackfillResult() {} - - /** - *

Copy Constructor.

- */ - StartMatchBackfillResult(const StartMatchBackfillResult &other) { strncpy(m_ticketId, other.m_ticketId, sizeof(other.m_ticketId)); } - - /** - *

Move Constructor.

- */ - StartMatchBackfillResult(StartMatchBackfillResult &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - StartMatchBackfillResult &operator=(const StartMatchBackfillResult &other) { - strncpy(m_ticketId, other.m_ticketId, sizeof(other.m_ticketId)); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - StartMatchBackfillResult &operator=(StartMatchBackfillResult &&other) { - strncpy(m_ticketId, other.m_ticketId, sizeof(other.m_ticketId)); - - return *this; - } - - /** - *

TicketId used for the submitted match backfill request.

- */ - inline const char *GetTicketId() const { return m_ticketId; } - - /** - *

TicketId used for the submitted match backfill request.

- */ - inline void SetTicketId(const char *value) { - strncpy(m_ticketId, value, sizeof(m_ticketId)); - m_ticketId[sizeof(m_ticketId) - 1] = '\0'; - } - - /** - *

TicketId used for the submitted match backfill request.

- */ - inline StartMatchBackfillResult &WithTicketId(const char *value) { - SetTicketId(value); - return *this; - } - -private: - char m_ticketId[MAX_TICKET_ID_LENGTH]; -#endif -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StopMatchBackfillRequest.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StopMatchBackfillRequest.h deleted file mode 100644 index 58ced82c..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/StopMatchBackfillRequest.h +++ /dev/null @@ -1,245 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include -#include -#include - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { - -/** - *

A request to be used for making a StopMatchBackfill call. - * For more information, see the Amazon GameLift Servers - * Developer Guide.

- */ -class AWS_GAMELIFT_API StopMatchBackfillRequest { -#ifdef GAMELIFT_USE_STD -public: - /** - *

Constructor.

- */ - StopMatchBackfillRequest() {} - - /** - *

Destructor.

- */ - ~StopMatchBackfillRequest() {} - - /** - *

Copy Constructor.

- */ - StopMatchBackfillRequest(const StopMatchBackfillRequest &other) - : m_ticketId(other.m_ticketId), m_matchmakingConfigurationArn(other.m_matchmakingConfigurationArn), m_gameSessionArn(other.m_gameSessionArn) {} - - /** - *

Move Constructor.

- */ - StopMatchBackfillRequest(StopMatchBackfillRequest &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - StopMatchBackfillRequest &operator=(const StopMatchBackfillRequest &other) { - m_ticketId = other.m_ticketId; - m_matchmakingConfigurationArn = other.m_matchmakingConfigurationArn; - m_gameSessionArn = other.m_gameSessionArn; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - StopMatchBackfillRequest &operator=(StopMatchBackfillRequest &&other) { - m_ticketId = std::move(other.m_ticketId); - m_gameSessionArn = std::move(other.m_gameSessionArn); - m_matchmakingConfigurationArn = std::move(other.m_matchmakingConfigurationArn); - - return *this; - } - - inline const std::string &GetTicketId() const { return m_ticketId; } - - inline void SetTicketId(const std::string &value) { m_ticketId = value; } - - inline void SetTicketId(std::string &&value) { m_ticketId = value; } - - inline void SetTicketId(const char *value) { m_ticketId.assign(value); } - - inline StopMatchBackfillRequest &WithTicketId(const std::string &value) { - SetTicketId(value); - return *this; - } - - inline StopMatchBackfillRequest &WithTicketId(std::string &&value) { - SetTicketId(value); - return *this; - } - - inline StopMatchBackfillRequest &WithTicketId(const char *value) { - SetTicketId(value); - return *this; - } - - inline const std::string &GetMatchmakingConfigurationArn() const { return m_matchmakingConfigurationArn; } - - inline void SetMatchmakingConfigurationArn(const std::string &value) { m_matchmakingConfigurationArn = value; } - - inline void SetMatchmakingConfigurationArn(std::string &&value) { m_matchmakingConfigurationArn = value; } - - inline void SetMatchmakingConfigurationArn(const char *value) { m_matchmakingConfigurationArn.assign(value); } - - inline StopMatchBackfillRequest &WithMatchmakingConfigurationArn(const std::string &value) { - SetMatchmakingConfigurationArn(value); - return *this; - } - - inline StopMatchBackfillRequest &WithMatchmakingConfigurationArn(std::string &&value) { - SetMatchmakingConfigurationArn(value); - return *this; - } - - inline StopMatchBackfillRequest &WithMatchmakingConfigurationArn(const char *value) { - SetMatchmakingConfigurationArn(value); - return *this; - } - - inline const std::string &GetGameSessionArn() const { return m_gameSessionArn; } - - inline void SetGameSessionArn(const std::string &value) { m_gameSessionArn = value; } - - inline void SetGameSessionArn(std::string &&value) { m_gameSessionArn = value; } - - inline void SetGameSessionArn(const char *value) { m_gameSessionArn.assign(value); } - - inline StopMatchBackfillRequest &WithGameSessionArn(const std::string &value) { - SetGameSessionArn(value); - return *this; - } - - inline StopMatchBackfillRequest &WithGameSessionArn(std::string &&value) { - SetGameSessionArn(value); - return *this; - } - - inline StopMatchBackfillRequest &WithGameSessionArn(const char *value) { - SetGameSessionArn(value); - return *this; - } - -private: - std::string m_ticketId; - std::string m_matchmakingConfigurationArn; - std::string m_gameSessionArn; -#else -public: - StopMatchBackfillRequest() { - m_ticketId[0] = '\0'; - m_matchmakingConfigurationArn[0] = '\0'; - m_gameSessionArn[0] = '\0'; - } - - /** - *

Destructor.

- */ - ~StopMatchBackfillRequest() {} - - /** - *

Copy Constructor.

- */ - StopMatchBackfillRequest(const StopMatchBackfillRequest &other) { *this = other; } - - /** - *

Move Constructor.

- */ - StopMatchBackfillRequest(StopMatchBackfillRequest &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - StopMatchBackfillRequest &operator=(const StopMatchBackfillRequest &other) { - SetTicketId(other.m_ticketId); - SetGameSessionArn(other.m_gameSessionArn); - SetMatchmakingConfigurationArn(other.m_matchmakingConfigurationArn); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - StopMatchBackfillRequest &operator=(StopMatchBackfillRequest &&other) { - *this = other; - - return *this; - } - - inline const char *GetTicketId() const { return m_ticketId; } - - inline void SetTicketId(const char *value) { - strncpy(m_ticketId, value, sizeof(m_ticketId)); - m_ticketId[MAX_TICKET_LENGTH - 1] = '\0'; - } - - inline StopMatchBackfillRequest &WithTicketId(const char *value) { - SetTicketId(value); - return *this; - } - - inline const char *GetMatchmakingConfigurationArn() const { return m_matchmakingConfigurationArn; } - - inline void SetMatchmakingConfigurationArn(const char *value) { - strncpy(m_matchmakingConfigurationArn, value, sizeof(m_matchmakingConfigurationArn)); - m_matchmakingConfigurationArn[MAX_ARN_LENGTH - 1] = '\0'; - } - - inline StopMatchBackfillRequest &WithMatchmakingConfigurationArn(const char *value) { - SetMatchmakingConfigurationArn(value); - return *this; - } - - inline const char *GetGameSessionArn() const { return m_gameSessionArn; } - - inline void SetGameSessionArn(const char *value) { - strncpy(m_gameSessionArn, value, sizeof(m_gameSessionArn)); - m_gameSessionArn[MAX_ARN_LENGTH - 1] = '\0'; - } - - inline StopMatchBackfillRequest &WithGameSessionArn(const char *value) { - SetGameSessionArn(value); - return *this; - } - -private: - char m_ticketId[MAX_TICKET_LENGTH]; - char m_matchmakingConfigurationArn[MAX_ARN_LENGTH]; - char m_gameSessionArn[MAX_ARN_LENGTH]; -#endif -}; -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/UpdateGameSession.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/UpdateGameSession.h deleted file mode 100644 index a863affc..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/UpdateGameSession.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(push) // Save warning settings. -#pragma warning(disable : 4996) // Disable deprecated warning for strncpy -#endif - -#include - -#include -#include - -#ifndef GAMELIFT_USE_STD -#ifndef MAX_BACKFILL_TICKET_ID_LENGTH -#define MAX_BACKFILL_TICKET_ID_LENGTH 129 -#endif -#endif - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -/** - *

Represents the data provided to the OnUpdateGameSession callback. - * For more information, see the Amazon GameLift Servers - * Developer Guide.

- */ -class AWS_GAMELIFT_API UpdateGameSession { -#ifdef GAMELIFT_USE_STD -public: - UpdateGameSession(const GameSession &gameSession, UpdateReason updateReason, std::string backfillTicketId) - : m_backfillTicketId(backfillTicketId), m_gameSession(gameSession), m_updateReason(updateReason) {} - - /** - *

Destructor.

- */ - ~UpdateGameSession() {} - - /** - *

Copy Constructor.

- */ - UpdateGameSession(const UpdateGameSession &other) - : m_backfillTicketId(other.m_backfillTicketId), m_gameSession(other.m_gameSession), m_updateReason(other.m_updateReason) {} - - /** - *

Move Constructor.

- */ - UpdateGameSession(UpdateGameSession &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - UpdateGameSession &operator=(const UpdateGameSession &other) { - m_backfillTicketId = other.m_backfillTicketId; - m_gameSession = other.m_gameSession; - m_updateReason = other.m_updateReason; - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - UpdateGameSession &operator=(UpdateGameSession &&other) { - m_backfillTicketId = std::move(other.m_backfillTicketId); - m_gameSession = std::move(other.m_gameSession); - m_updateReason = std::move(other.m_updateReason); - - return *this; - } - - /** - *

The ticketId used for the submitted match backfill request that this update is in - * response to. Empty if this update was not in response to a backfill.

- */ - inline std::string GetBackfillTicketId() const { return m_backfillTicketId; } - -private: - std::string m_backfillTicketId; -#else -public: - UpdateGameSession(const GameSession &gameSession, UpdateReason updateReason, const char *backfillTicketId) - : m_gameSession(gameSession), m_updateReason(updateReason) { - strncpy(m_backfillTicketId, backfillTicketId, MAX_BACKFILL_TICKET_ID_LENGTH - 1); - m_backfillTicketId[MAX_BACKFILL_TICKET_ID_LENGTH - 1] = '\0'; - } - - /** - *

Destructor.

- */ - ~UpdateGameSession() {} - - /** - *

Copy Constructor.

- */ - UpdateGameSession(const UpdateGameSession &other) : m_gameSession(other.m_gameSession), m_updateReason(other.m_updateReason) { - strncpy(m_backfillTicketId, other.m_backfillTicketId, sizeof(m_backfillTicketId)); - } - - /** - *

Move Constructor.

- */ - UpdateGameSession(UpdateGameSession &&other) { *this = std::move(other); } - - /** - *

Copy assignment Constructor.

- */ - UpdateGameSession &operator=(const UpdateGameSession &other) { - m_gameSession = other.m_gameSession; - m_updateReason = other.m_updateReason; - strncpy(m_backfillTicketId, other.m_backfillTicketId, sizeof(other.m_backfillTicketId)); - - return *this; - } - - /** - *

Move assignment Constructor.

- */ - UpdateGameSession &operator=(UpdateGameSession &&other) { - m_gameSession = std::move(other.m_gameSession); - m_updateReason = std::move(other.m_updateReason); - strncpy(m_backfillTicketId, other.m_backfillTicketId, sizeof(other.m_backfillTicketId)); - - return *this; - } - - /** - *

The ticketId used for the submitted match backfill request that this update is in - * response to. Empty if this update was not in response to a backfill.

- */ - inline const char *GetBackfillTicketId() const { return m_backfillTicketId; } - -private: - char m_backfillTicketId[MAX_BACKFILL_TICKET_ID_LENGTH]; -#endif -public: - /** - *

The current state of the GameSession.

- */ - inline GameSession GetGameSession() const { return m_gameSession; } - - /** - *

The reason that this update is being posted to the game server.

- */ - inline UpdateReason GetUpdateReason() const { return m_updateReason; } - -private: - GameSession m_gameSession; - UpdateReason m_updateReason; -}; - -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws - -#if defined(_MSC_VER) && !defined(GAMELIFT_USE_STD) -#pragma warning(pop) // Restore warnings to previous state. -#endif \ No newline at end of file diff --git a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/UpdateReason.h b/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/UpdateReason.h deleted file mode 100644 index e1b5ddcb..00000000 --- a/Plugins/GameLiftServerSDK/Source/GameLiftServerSDK/Public/aws/gamelift/server/model/UpdateReason.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or - * its licensors. - * - * For complete copyright and license terms please see the LICENSE at the root of this - * distribution (the "License"). All use of this software is governed by the License, - * or, if provided, by the license below or the license accompanying this file. Do not - * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - */ -#pragma once -#include - -namespace Aws { -namespace GameLift { -namespace Server { -namespace Model { -enum class UpdateReason { UNKNOWN, MATCHMAKING_DATA_UPDATED, BACKFILL_FAILED, BACKFILL_TIMED_OUT, BACKFILL_CANCELLED }; - -namespace UpdateReasonMapper { -#ifdef GAMELIFT_USE_STD -inline AWS_GAMELIFT_API UpdateReason GetUpdateReasonForName(const std::string &s_name) { - const char *name = s_name.c_str(); -#else -inline AWS_GAMELIFT_API UpdateReason GetUpdateReasonForName(const char *name) { -#endif - if (strcmp(name, "MATCHMAKING_DATA_UPDATED") == 0) { - return UpdateReason::MATCHMAKING_DATA_UPDATED; - } - if (strcmp(name, "BACKFILL_FAILED") == 0) { - return UpdateReason::BACKFILL_FAILED; - } - if (strcmp(name, "BACKFILL_TIMED_OUT") == 0) { - return UpdateReason::BACKFILL_TIMED_OUT; - } - if (strcmp(name, "BACKFILL_CANCELLED") == 0) { - return UpdateReason::BACKFILL_CANCELLED; - } - - return UpdateReason::UNKNOWN; -} -#ifdef GAMELIFT_USE_STD -inline AWS_GAMELIFT_API std::string GetNameForUpdateReason(UpdateReason value) -#else -inline AWS_GAMELIFT_API const char *GetNameForUpdateReason(UpdateReason value) -#endif -{ - switch (value) { - case UpdateReason::MATCHMAKING_DATA_UPDATED: - return "MATCHMAKING_DATA_UPDATED"; - case UpdateReason::BACKFILL_FAILED: - return "BACKFILL_FAILED"; - case UpdateReason::BACKFILL_TIMED_OUT: - return "BACKFILL_TIMED_OUT"; - case UpdateReason::BACKFILL_CANCELLED: - return "BACKFILL_CANCELLED"; - default: - return "UNKNOWN"; - } -} -} // namespace UpdateReasonMapper -} // namespace Model -} // namespace Server -} // namespace GameLift -} // namespace Aws diff --git a/Plugins/GameLiftServerSDK/ThirdParty/.gitkeep b/Plugins/GameLiftServerSDK/ThirdParty/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/COPYING b/Plugins/GameLiftServerSDK/ThirdParty/asio/COPYING deleted file mode 100644 index 532cec6c..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/COPYING +++ /dev/null @@ -1,4 +0,0 @@ -Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) - -Distributed under the Boost Software License, Version 1.0. (See accompanying -file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/INSTALL b/Plugins/GameLiftServerSDK/ThirdParty/asio/INSTALL deleted file mode 100644 index 1dd78db1..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/INSTALL +++ /dev/null @@ -1,5 +0,0 @@ -See doc/index.html for information on: - - External dependencies - - Using, building, and configuring Asio - - Supported platforms - - How to build the tests and examples diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/LICENSE_1_0.txt b/Plugins/GameLiftServerSDK/ThirdParty/asio/LICENSE_1_0.txt deleted file mode 100644 index 36b7cd93..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/LICENSE_1_0.txt +++ /dev/null @@ -1,23 +0,0 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/Makefile.am b/Plugins/GameLiftServerSDK/ThirdParty/asio/Makefile.am deleted file mode 100644 index 0acdc02d..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -AUTOMAKE_OPTIONS = foreign dist-bzip2 dist-zip - -SUBDIRS = include src - -MAINTAINERCLEANFILES = \ - $(srcdir)/aclocal.m4 \ - $(srcdir)/configure \ - $(srcdir)/config.guess \ - $(srcdir)/config.sub \ - $(srcdir)/depcomp \ - $(srcdir)/install-sh \ - $(srcdir)/missing \ - $(srcdir)/mkinstalldirs \ - $(srcdir)/Makefile.in \ - asio-*.tar.gz - -EXTRA_DIST = \ - LICENSE_1_0.txt \ - doc diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/README b/Plugins/GameLiftServerSDK/ThirdParty/asio/README deleted file mode 100644 index a5aa5cb4..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/README +++ /dev/null @@ -1,4 +0,0 @@ -asio version 1.20.0 -Released Saturday, 16 October 2021. - -See doc/index.html for API documentation and a tutorial. diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/asio.manifest b/Plugins/GameLiftServerSDK/ThirdParty/asio/asio.manifest deleted file mode 100644 index dbdd58a8..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/asio.manifest +++ /dev/null @@ -1,6067 +0,0 @@ -/ -/aclocal.m4 -/compile -/config.guess -/config.sub -/configure -/configure.ac -/COPYING -/depcomp -/doc/ -/doc/asio/ -/doc/asio/examples/ -/doc/asio/examples/cpp03_examples.html -/doc/asio/examples/cpp11_examples.html -/doc/asio/examples/cpp14_examples.html -/doc/asio/examples/cpp17_examples.html -/doc/asio/examples.html -/doc/asio/history.html -/doc/asio/index.html -/doc/asio/net_ts.html -/doc/asio/overview/ -/doc/asio/overview/core/ -/doc/asio/overview/core/allocation.html -/doc/asio/overview/core/async.html -/doc/asio/overview/core/basics.html -/doc/asio/overview/core/buffers.html -/doc/asio/overview/core/cancellation.html -/doc/asio/overview/core/concurrency_hint.html -/doc/asio/overview/core/coroutine.html -/doc/asio/overview/core/cpp20_coroutines.html -/doc/asio/overview/core/handler_tracking.html -/doc/asio/overview/core.html -/doc/asio/overview/core/line_based.html -/doc/asio/overview/core/reactor.html -/doc/asio/overview/core/spawn.html -/doc/asio/overview/core/strands.html -/doc/asio/overview/core/streams.html -/doc/asio/overview/core/threads.html -/doc/asio/overview/cpp2011/ -/doc/asio/overview/cpp2011/array.html -/doc/asio/overview/cpp2011/atomic.html -/doc/asio/overview/cpp2011/chrono.html -/doc/asio/overview/cpp2011/futures.html -/doc/asio/overview/cpp2011.html -/doc/asio/overview/cpp2011/move_handlers.html -/doc/asio/overview/cpp2011/move_objects.html -/doc/asio/overview/cpp2011/shared_ptr.html -/doc/asio/overview/cpp2011/system_error.html -/doc/asio/overview/cpp2011/variadic.html -/doc/asio/overview.html -/doc/asio/overview/implementation.html -/doc/asio/overview/networking/ -/doc/asio/overview/networking/bsd_sockets.html -/doc/asio/overview/networking.html -/doc/asio/overview/networking/iostreams.html -/doc/asio/overview/networking/other_protocols.html -/doc/asio/overview/networking/protocols.html -/doc/asio/overview/posix/ -/doc/asio/overview/posix/fork.html -/doc/asio/overview/posix.html -/doc/asio/overview/posix/local.html -/doc/asio/overview/posix/stream_descriptor.html -/doc/asio/overview/rationale.html -/doc/asio/overview/serial_ports.html -/doc/asio/overview/signals.html -/doc/asio/overview/ssl.html -/doc/asio/overview/timers.html -/doc/asio/overview/windows/ -/doc/asio/overview/windows.html -/doc/asio/overview/windows/object_handle.html -/doc/asio/overview/windows/random_access_handle.html -/doc/asio/overview/windows/stream_handle.html -/doc/asio.png -/doc/asio/reference/ -/doc/asio/reference/AcceptableProtocol.html -/doc/asio/reference/AcceptHandler.html -/doc/asio/reference/any_io_executor/ -/doc/asio/reference/any_io_executor/any_io_executor/ -/doc/asio/reference/any_io_executor/_any_io_executor.html -/doc/asio/reference/any_io_executor/any_io_executor.html -/doc/asio/reference/any_io_executor/any_io_executor/overload1.html -/doc/asio/reference/any_io_executor/any_io_executor/overload2.html -/doc/asio/reference/any_io_executor/any_io_executor/overload3.html -/doc/asio/reference/any_io_executor/any_io_executor/overload4.html -/doc/asio/reference/any_io_executor/any_io_executor/overload5.html -/doc/asio/reference/any_io_executor/any_io_executor/overload6.html -/doc/asio/reference/any_io_executor/context.html -/doc/asio/reference/any_io_executor/execute.html -/doc/asio/reference/any_io_executor.html -/doc/asio/reference/any_io_executor/operator_bool.html -/doc/asio/reference/any_io_executor/operator_eq_/ -/doc/asio/reference/any_io_executor/operator_eq__eq_/ -/doc/asio/reference/any_io_executor/operator_eq__eq_.html -/doc/asio/reference/any_io_executor/operator_eq__eq_/overload1.html -/doc/asio/reference/any_io_executor/operator_eq__eq_/overload2.html -/doc/asio/reference/any_io_executor/operator_eq__eq_/overload3.html -/doc/asio/reference/any_io_executor/operator_eq_.html -/doc/asio/reference/any_io_executor/operator_eq_/overload1.html -/doc/asio/reference/any_io_executor/operator_eq_/overload2.html -/doc/asio/reference/any_io_executor/operator_eq_/overload3.html -/doc/asio/reference/any_io_executor/operator_not__eq_/ -/doc/asio/reference/any_io_executor/operator_not__eq_.html -/doc/asio/reference/any_io_executor/operator_not__eq_/overload1.html -/doc/asio/reference/any_io_executor/operator_not__eq_/overload2.html -/doc/asio/reference/any_io_executor/operator_not__eq_/overload3.html -/doc/asio/reference/any_io_executor/prefer/ -/doc/asio/reference/any_io_executor/prefer.html -/doc/asio/reference/any_io_executor/prefer/overload1.html -/doc/asio/reference/any_io_executor/prefer/overload2.html -/doc/asio/reference/any_io_executor/query.html -/doc/asio/reference/any_io_executor/require/ -/doc/asio/reference/any_io_executor/require.html -/doc/asio/reference/any_io_executor/require/overload1.html -/doc/asio/reference/any_io_executor/require/overload2.html -/doc/asio/reference/any_io_executor/swap/ -/doc/asio/reference/any_io_executor/swap.html -/doc/asio/reference/any_io_executor/swap/overload1.html -/doc/asio/reference/any_io_executor/swap/overload2.html -/doc/asio/reference/any_io_executor/target/ -/doc/asio/reference/any_io_executor/target.html -/doc/asio/reference/any_io_executor/target/overload1.html -/doc/asio/reference/any_io_executor/target/overload2.html -/doc/asio/reference/any_io_executor/target_type.html -/doc/asio/reference/asio_handler_allocate.html -/doc/asio/reference/asio_handler_deallocate.html -/doc/asio/reference/asio_handler_invoke/ -/doc/asio/reference/asio_handler_invoke.html -/doc/asio/reference/asio_handler_invoke/overload1.html -/doc/asio/reference/asio_handler_invoke/overload2.html -/doc/asio/reference/asio_handler_is_continuation.html -/doc/asio/reference/associated_allocator/ -/doc/asio/reference/associated_allocator/get.html -/doc/asio/reference/associated_allocator.html -/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/ -/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get.html -/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_.html -/doc/asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/type.html -/doc/asio/reference/associated_allocator/type.html -/doc/asio/reference/associated_cancellation_slot/ -/doc/asio/reference/associated_cancellation_slot/get.html -/doc/asio/reference/associated_cancellation_slot.html -/doc/asio/reference/associated_cancellation_slot/type.html -/doc/asio/reference/associated_executor/ -/doc/asio/reference/associated_executor/get.html -/doc/asio/reference/associated_executor.html -/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ -/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html -/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html -/doc/asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html -/doc/asio/reference/associated_executor/type.html -/doc/asio/reference/associator.html -/doc/asio/reference/async_completion/ -/doc/asio/reference/async_completion/async_completion.html -/doc/asio/reference/async_completion/completion_handler.html -/doc/asio/reference/async_completion/completion_handler_type.html -/doc/asio/reference/async_completion.html -/doc/asio/reference/async_completion/result.html -/doc/asio/reference/async_compose.html -/doc/asio/reference/async_connect/ -/doc/asio/reference/async_connect.html -/doc/asio/reference/async_connect/overload1.html -/doc/asio/reference/async_connect/overload2.html -/doc/asio/reference/async_connect/overload3.html -/doc/asio/reference/async_connect/overload4.html -/doc/asio/reference/async_connect/overload5.html -/doc/asio/reference/async_connect/overload6.html -/doc/asio/reference/asynchronous_operations.html -/doc/asio/reference/asynchronous_socket_operations.html -/doc/asio/reference/async_initiate.html -/doc/asio/reference/AsyncRandomAccessReadDevice.html -/doc/asio/reference/AsyncRandomAccessWriteDevice.html -/doc/asio/reference/async_read/ -/doc/asio/reference/async_read_at/ -/doc/asio/reference/async_read_at.html -/doc/asio/reference/async_read_at/overload1.html -/doc/asio/reference/async_read_at/overload2.html -/doc/asio/reference/async_read_at/overload3.html -/doc/asio/reference/async_read_at/overload4.html -/doc/asio/reference/async_read.html -/doc/asio/reference/async_read/overload1.html -/doc/asio/reference/async_read/overload2.html -/doc/asio/reference/async_read/overload3.html -/doc/asio/reference/async_read/overload4.html -/doc/asio/reference/async_read/overload5.html -/doc/asio/reference/async_read/overload6.html -/doc/asio/reference/async_read/overload7.html -/doc/asio/reference/async_read/overload8.html -/doc/asio/reference/AsyncReadStream.html -/doc/asio/reference/async_read_until/ -/doc/asio/reference/async_read_until.html -/doc/asio/reference/async_read_until/overload10.html -/doc/asio/reference/async_read_until/overload11.html -/doc/asio/reference/async_read_until/overload12.html -/doc/asio/reference/async_read_until/overload1.html -/doc/asio/reference/async_read_until/overload2.html -/doc/asio/reference/async_read_until/overload3.html -/doc/asio/reference/async_read_until/overload4.html -/doc/asio/reference/async_read_until/overload5.html -/doc/asio/reference/async_read_until/overload6.html -/doc/asio/reference/async_read_until/overload7.html -/doc/asio/reference/async_read_until/overload8.html -/doc/asio/reference/async_read_until/overload9.html -/doc/asio/reference/async_result/ -/doc/asio/reference/async_result/async_result.html -/doc/asio/reference/async_result/completion_handler_type.html -/doc/asio/reference/async_result/get.html -/doc/asio/reference/async_result.html -/doc/asio/reference/async_result/initiate.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/ -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/async_result.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/completion_handler_type.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/get.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_.html -/doc/asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/return_type.html -/doc/asio/reference/async_result/return_type.html -/doc/asio/reference/async_write/ -/doc/asio/reference/async_write_at/ -/doc/asio/reference/async_write_at.html -/doc/asio/reference/async_write_at/overload1.html -/doc/asio/reference/async_write_at/overload2.html -/doc/asio/reference/async_write_at/overload3.html -/doc/asio/reference/async_write_at/overload4.html -/doc/asio/reference/async_write.html -/doc/asio/reference/async_write/overload1.html -/doc/asio/reference/async_write/overload2.html -/doc/asio/reference/async_write/overload3.html -/doc/asio/reference/async_write/overload4.html -/doc/asio/reference/async_write/overload5.html -/doc/asio/reference/async_write/overload6.html -/doc/asio/reference/async_write/overload7.html -/doc/asio/reference/async_write/overload8.html -/doc/asio/reference/AsyncWriteStream.html -/doc/asio/reference/awaitable/ -/doc/asio/reference/awaitable/awaitable/ -/doc/asio/reference/awaitable/_awaitable.html -/doc/asio/reference/awaitable/awaitable.html -/doc/asio/reference/awaitable/awaitable/overload1.html -/doc/asio/reference/awaitable/awaitable/overload2.html -/doc/asio/reference/awaitable/executor_type.html -/doc/asio/reference/awaitable.html -/doc/asio/reference/awaitable/valid.html -/doc/asio/reference/awaitable/value_type.html -/doc/asio/reference/bad_executor/ -/doc/asio/reference/bad_executor/bad_executor.html -/doc/asio/reference/bad_executor.html -/doc/asio/reference/bad_executor/what.html -/doc/asio/reference/basic_datagram_socket/ -/doc/asio/reference/basic_datagram_socket/assign/ -/doc/asio/reference/basic_datagram_socket/assign.html -/doc/asio/reference/basic_datagram_socket/assign/overload1.html -/doc/asio/reference/basic_datagram_socket/assign/overload2.html -/doc/asio/reference/basic_datagram_socket/async_connect.html -/doc/asio/reference/basic_datagram_socket/async_receive/ -/doc/asio/reference/basic_datagram_socket/async_receive_from/ -/doc/asio/reference/basic_datagram_socket/async_receive_from.html -/doc/asio/reference/basic_datagram_socket/async_receive_from/overload1.html -/doc/asio/reference/basic_datagram_socket/async_receive_from/overload2.html -/doc/asio/reference/basic_datagram_socket/async_receive.html -/doc/asio/reference/basic_datagram_socket/async_receive/overload1.html -/doc/asio/reference/basic_datagram_socket/async_receive/overload2.html -/doc/asio/reference/basic_datagram_socket/async_send/ -/doc/asio/reference/basic_datagram_socket/async_send.html -/doc/asio/reference/basic_datagram_socket/async_send/overload1.html -/doc/asio/reference/basic_datagram_socket/async_send/overload2.html -/doc/asio/reference/basic_datagram_socket/async_send_to/ -/doc/asio/reference/basic_datagram_socket/async_send_to.html -/doc/asio/reference/basic_datagram_socket/async_send_to/overload1.html -/doc/asio/reference/basic_datagram_socket/async_send_to/overload2.html -/doc/asio/reference/basic_datagram_socket/async_wait.html -/doc/asio/reference/basic_datagram_socket/at_mark/ -/doc/asio/reference/basic_datagram_socket/at_mark.html -/doc/asio/reference/basic_datagram_socket/at_mark/overload1.html -/doc/asio/reference/basic_datagram_socket/at_mark/overload2.html -/doc/asio/reference/basic_datagram_socket/available/ -/doc/asio/reference/basic_datagram_socket/available.html -/doc/asio/reference/basic_datagram_socket/available/overload1.html -/doc/asio/reference/basic_datagram_socket/available/overload2.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/ -/doc/asio/reference/basic_datagram_socket/_basic_datagram_socket.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload10.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload1.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload2.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload3.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload4.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload5.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload6.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload7.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload8.html -/doc/asio/reference/basic_datagram_socket/basic_datagram_socket/overload9.html -/doc/asio/reference/basic_datagram_socket/bind/ -/doc/asio/reference/basic_datagram_socket/bind.html -/doc/asio/reference/basic_datagram_socket/bind/overload1.html -/doc/asio/reference/basic_datagram_socket/bind/overload2.html -/doc/asio/reference/basic_datagram_socket/broadcast.html -/doc/asio/reference/basic_datagram_socket/bytes_readable.html -/doc/asio/reference/basic_datagram_socket/cancel/ -/doc/asio/reference/basic_datagram_socket/cancel.html -/doc/asio/reference/basic_datagram_socket/cancel/overload1.html -/doc/asio/reference/basic_datagram_socket/cancel/overload2.html -/doc/asio/reference/basic_datagram_socket/close/ -/doc/asio/reference/basic_datagram_socket/close.html -/doc/asio/reference/basic_datagram_socket/close/overload1.html -/doc/asio/reference/basic_datagram_socket/close/overload2.html -/doc/asio/reference/basic_datagram_socket/connect/ -/doc/asio/reference/basic_datagram_socket/connect.html -/doc/asio/reference/basic_datagram_socket/connect/overload1.html -/doc/asio/reference/basic_datagram_socket/connect/overload2.html -/doc/asio/reference/basic_datagram_socket/debug.html -/doc/asio/reference/basic_datagram_socket/do_not_route.html -/doc/asio/reference/basic_datagram_socket/enable_connection_aborted.html -/doc/asio/reference/basic_datagram_socket/endpoint_type.html -/doc/asio/reference/basic_datagram_socket/executor_type.html -/doc/asio/reference/basic_datagram_socket/get_executor.html -/doc/asio/reference/basic_datagram_socket/get_option/ -/doc/asio/reference/basic_datagram_socket/get_option.html -/doc/asio/reference/basic_datagram_socket/get_option/overload1.html -/doc/asio/reference/basic_datagram_socket/get_option/overload2.html -/doc/asio/reference/basic_datagram_socket.html -/doc/asio/reference/basic_datagram_socket/io_control/ -/doc/asio/reference/basic_datagram_socket/io_control.html -/doc/asio/reference/basic_datagram_socket/io_control/overload1.html -/doc/asio/reference/basic_datagram_socket/io_control/overload2.html -/doc/asio/reference/basic_datagram_socket/is_open.html -/doc/asio/reference/basic_datagram_socket/keep_alive.html -/doc/asio/reference/basic_datagram_socket/linger.html -/doc/asio/reference/basic_datagram_socket/local_endpoint/ -/doc/asio/reference/basic_datagram_socket/local_endpoint.html -/doc/asio/reference/basic_datagram_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_datagram_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_datagram_socket/lowest_layer/ -/doc/asio/reference/basic_datagram_socket/lowest_layer.html -/doc/asio/reference/basic_datagram_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_datagram_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_datagram_socket/lowest_layer_type.html -/doc/asio/reference/basic_datagram_socket/max_connections.html -/doc/asio/reference/basic_datagram_socket/max_listen_connections.html -/doc/asio/reference/basic_datagram_socket/message_do_not_route.html -/doc/asio/reference/basic_datagram_socket/message_end_of_record.html -/doc/asio/reference/basic_datagram_socket/message_flags.html -/doc/asio/reference/basic_datagram_socket/message_out_of_band.html -/doc/asio/reference/basic_datagram_socket/message_peek.html -/doc/asio/reference/basic_datagram_socket/native_handle.html -/doc/asio/reference/basic_datagram_socket/native_handle_type.html -/doc/asio/reference/basic_datagram_socket/native_non_blocking/ -/doc/asio/reference/basic_datagram_socket/native_non_blocking.html -/doc/asio/reference/basic_datagram_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_datagram_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_datagram_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_datagram_socket/non_blocking/ -/doc/asio/reference/basic_datagram_socket/non_blocking.html -/doc/asio/reference/basic_datagram_socket/non_blocking/overload1.html -/doc/asio/reference/basic_datagram_socket/non_blocking/overload2.html -/doc/asio/reference/basic_datagram_socket/non_blocking/overload3.html -/doc/asio/reference/basic_datagram_socket/open/ -/doc/asio/reference/basic_datagram_socket/open.html -/doc/asio/reference/basic_datagram_socket/open/overload1.html -/doc/asio/reference/basic_datagram_socket/open/overload2.html -/doc/asio/reference/basic_datagram_socket/operator_eq_/ -/doc/asio/reference/basic_datagram_socket/operator_eq_.html -/doc/asio/reference/basic_datagram_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_datagram_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_datagram_socket/out_of_band_inline.html -/doc/asio/reference/basic_datagram_socket/protocol_type.html -/doc/asio/reference/basic_datagram_socket__rebind_executor/ -/doc/asio/reference/basic_datagram_socket__rebind_executor.html -/doc/asio/reference/basic_datagram_socket__rebind_executor/other.html -/doc/asio/reference/basic_datagram_socket/receive/ -/doc/asio/reference/basic_datagram_socket/receive_buffer_size.html -/doc/asio/reference/basic_datagram_socket/receive_from/ -/doc/asio/reference/basic_datagram_socket/receive_from.html -/doc/asio/reference/basic_datagram_socket/receive_from/overload1.html -/doc/asio/reference/basic_datagram_socket/receive_from/overload2.html -/doc/asio/reference/basic_datagram_socket/receive_from/overload3.html -/doc/asio/reference/basic_datagram_socket/receive.html -/doc/asio/reference/basic_datagram_socket/receive_low_watermark.html -/doc/asio/reference/basic_datagram_socket/receive/overload1.html -/doc/asio/reference/basic_datagram_socket/receive/overload2.html -/doc/asio/reference/basic_datagram_socket/receive/overload3.html -/doc/asio/reference/basic_datagram_socket/release/ -/doc/asio/reference/basic_datagram_socket/release.html -/doc/asio/reference/basic_datagram_socket/release/overload1.html -/doc/asio/reference/basic_datagram_socket/release/overload2.html -/doc/asio/reference/basic_datagram_socket/remote_endpoint/ -/doc/asio/reference/basic_datagram_socket/remote_endpoint.html -/doc/asio/reference/basic_datagram_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_datagram_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_datagram_socket/reuse_address.html -/doc/asio/reference/basic_datagram_socket/send/ -/doc/asio/reference/basic_datagram_socket/send_buffer_size.html -/doc/asio/reference/basic_datagram_socket/send.html -/doc/asio/reference/basic_datagram_socket/send_low_watermark.html -/doc/asio/reference/basic_datagram_socket/send/overload1.html -/doc/asio/reference/basic_datagram_socket/send/overload2.html -/doc/asio/reference/basic_datagram_socket/send/overload3.html -/doc/asio/reference/basic_datagram_socket/send_to/ -/doc/asio/reference/basic_datagram_socket/send_to.html -/doc/asio/reference/basic_datagram_socket/send_to/overload1.html -/doc/asio/reference/basic_datagram_socket/send_to/overload2.html -/doc/asio/reference/basic_datagram_socket/send_to/overload3.html -/doc/asio/reference/basic_datagram_socket/set_option/ -/doc/asio/reference/basic_datagram_socket/set_option.html -/doc/asio/reference/basic_datagram_socket/set_option/overload1.html -/doc/asio/reference/basic_datagram_socket/set_option/overload2.html -/doc/asio/reference/basic_datagram_socket/shutdown/ -/doc/asio/reference/basic_datagram_socket/shutdown.html -/doc/asio/reference/basic_datagram_socket/shutdown/overload1.html -/doc/asio/reference/basic_datagram_socket/shutdown/overload2.html -/doc/asio/reference/basic_datagram_socket/shutdown_type.html -/doc/asio/reference/basic_datagram_socket/wait/ -/doc/asio/reference/basic_datagram_socket/wait.html -/doc/asio/reference/basic_datagram_socket/wait/overload1.html -/doc/asio/reference/basic_datagram_socket/wait/overload2.html -/doc/asio/reference/basic_datagram_socket/wait_type.html -/doc/asio/reference/basic_deadline_timer/ -/doc/asio/reference/basic_deadline_timer/async_wait.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/ -/doc/asio/reference/basic_deadline_timer/_basic_deadline_timer.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload1.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload2.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload3.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload4.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload5.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload6.html -/doc/asio/reference/basic_deadline_timer/basic_deadline_timer/overload7.html -/doc/asio/reference/basic_deadline_timer/cancel/ -/doc/asio/reference/basic_deadline_timer/cancel.html -/doc/asio/reference/basic_deadline_timer/cancel_one/ -/doc/asio/reference/basic_deadline_timer/cancel_one.html -/doc/asio/reference/basic_deadline_timer/cancel_one/overload1.html -/doc/asio/reference/basic_deadline_timer/cancel_one/overload2.html -/doc/asio/reference/basic_deadline_timer/cancel/overload1.html -/doc/asio/reference/basic_deadline_timer/cancel/overload2.html -/doc/asio/reference/basic_deadline_timer/duration_type.html -/doc/asio/reference/basic_deadline_timer/executor_type.html -/doc/asio/reference/basic_deadline_timer/expires_at/ -/doc/asio/reference/basic_deadline_timer/expires_at.html -/doc/asio/reference/basic_deadline_timer/expires_at/overload1.html -/doc/asio/reference/basic_deadline_timer/expires_at/overload2.html -/doc/asio/reference/basic_deadline_timer/expires_at/overload3.html -/doc/asio/reference/basic_deadline_timer/expires_from_now/ -/doc/asio/reference/basic_deadline_timer/expires_from_now.html -/doc/asio/reference/basic_deadline_timer/expires_from_now/overload1.html -/doc/asio/reference/basic_deadline_timer/expires_from_now/overload2.html -/doc/asio/reference/basic_deadline_timer/expires_from_now/overload3.html -/doc/asio/reference/basic_deadline_timer/get_executor.html -/doc/asio/reference/basic_deadline_timer.html -/doc/asio/reference/basic_deadline_timer/operator_eq_.html -/doc/asio/reference/basic_deadline_timer__rebind_executor/ -/doc/asio/reference/basic_deadline_timer__rebind_executor.html -/doc/asio/reference/basic_deadline_timer__rebind_executor/other.html -/doc/asio/reference/basic_deadline_timer/time_type.html -/doc/asio/reference/basic_deadline_timer/traits_type.html -/doc/asio/reference/basic_deadline_timer/wait/ -/doc/asio/reference/basic_deadline_timer/wait.html -/doc/asio/reference/basic_deadline_timer/wait/overload1.html -/doc/asio/reference/basic_deadline_timer/wait/overload2.html -/doc/asio/reference/basic_io_object/ -/doc/asio/reference/basic_io_object/basic_io_object/ -/doc/asio/reference/basic_io_object/_basic_io_object.html -/doc/asio/reference/basic_io_object/basic_io_object.html -/doc/asio/reference/basic_io_object/basic_io_object/overload1.html -/doc/asio/reference/basic_io_object/basic_io_object/overload2.html -/doc/asio/reference/basic_io_object/basic_io_object/overload3.html -/doc/asio/reference/basic_io_object/executor_type.html -/doc/asio/reference/basic_io_object/get_executor.html -/doc/asio/reference/basic_io_object/get_implementation/ -/doc/asio/reference/basic_io_object/get_implementation.html -/doc/asio/reference/basic_io_object/get_implementation/overload1.html -/doc/asio/reference/basic_io_object/get_implementation/overload2.html -/doc/asio/reference/basic_io_object/get_io_context.html -/doc/asio/reference/basic_io_object/get_io_service.html -/doc/asio/reference/basic_io_object/get_service/ -/doc/asio/reference/basic_io_object/get_service.html -/doc/asio/reference/basic_io_object/get_service/overload1.html -/doc/asio/reference/basic_io_object/get_service/overload2.html -/doc/asio/reference/basic_io_object.html -/doc/asio/reference/basic_io_object/implementation_type.html -/doc/asio/reference/basic_io_object/operator_eq_.html -/doc/asio/reference/basic_io_object/service_type.html -/doc/asio/reference/basic_raw_socket/ -/doc/asio/reference/basic_raw_socket/assign/ -/doc/asio/reference/basic_raw_socket/assign.html -/doc/asio/reference/basic_raw_socket/assign/overload1.html -/doc/asio/reference/basic_raw_socket/assign/overload2.html -/doc/asio/reference/basic_raw_socket/async_connect.html -/doc/asio/reference/basic_raw_socket/async_receive/ -/doc/asio/reference/basic_raw_socket/async_receive_from/ -/doc/asio/reference/basic_raw_socket/async_receive_from.html -/doc/asio/reference/basic_raw_socket/async_receive_from/overload1.html -/doc/asio/reference/basic_raw_socket/async_receive_from/overload2.html -/doc/asio/reference/basic_raw_socket/async_receive.html -/doc/asio/reference/basic_raw_socket/async_receive/overload1.html -/doc/asio/reference/basic_raw_socket/async_receive/overload2.html -/doc/asio/reference/basic_raw_socket/async_send/ -/doc/asio/reference/basic_raw_socket/async_send.html -/doc/asio/reference/basic_raw_socket/async_send/overload1.html -/doc/asio/reference/basic_raw_socket/async_send/overload2.html -/doc/asio/reference/basic_raw_socket/async_send_to/ -/doc/asio/reference/basic_raw_socket/async_send_to.html -/doc/asio/reference/basic_raw_socket/async_send_to/overload1.html -/doc/asio/reference/basic_raw_socket/async_send_to/overload2.html -/doc/asio/reference/basic_raw_socket/async_wait.html -/doc/asio/reference/basic_raw_socket/at_mark/ -/doc/asio/reference/basic_raw_socket/at_mark.html -/doc/asio/reference/basic_raw_socket/at_mark/overload1.html -/doc/asio/reference/basic_raw_socket/at_mark/overload2.html -/doc/asio/reference/basic_raw_socket/available/ -/doc/asio/reference/basic_raw_socket/available.html -/doc/asio/reference/basic_raw_socket/available/overload1.html -/doc/asio/reference/basic_raw_socket/available/overload2.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/ -/doc/asio/reference/basic_raw_socket/_basic_raw_socket.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload10.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload1.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload2.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload3.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload4.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload5.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload6.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload7.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload8.html -/doc/asio/reference/basic_raw_socket/basic_raw_socket/overload9.html -/doc/asio/reference/basic_raw_socket/bind/ -/doc/asio/reference/basic_raw_socket/bind.html -/doc/asio/reference/basic_raw_socket/bind/overload1.html -/doc/asio/reference/basic_raw_socket/bind/overload2.html -/doc/asio/reference/basic_raw_socket/broadcast.html -/doc/asio/reference/basic_raw_socket/bytes_readable.html -/doc/asio/reference/basic_raw_socket/cancel/ -/doc/asio/reference/basic_raw_socket/cancel.html -/doc/asio/reference/basic_raw_socket/cancel/overload1.html -/doc/asio/reference/basic_raw_socket/cancel/overload2.html -/doc/asio/reference/basic_raw_socket/close/ -/doc/asio/reference/basic_raw_socket/close.html -/doc/asio/reference/basic_raw_socket/close/overload1.html -/doc/asio/reference/basic_raw_socket/close/overload2.html -/doc/asio/reference/basic_raw_socket/connect/ -/doc/asio/reference/basic_raw_socket/connect.html -/doc/asio/reference/basic_raw_socket/connect/overload1.html -/doc/asio/reference/basic_raw_socket/connect/overload2.html -/doc/asio/reference/basic_raw_socket/debug.html -/doc/asio/reference/basic_raw_socket/do_not_route.html -/doc/asio/reference/basic_raw_socket/enable_connection_aborted.html -/doc/asio/reference/basic_raw_socket/endpoint_type.html -/doc/asio/reference/basic_raw_socket/executor_type.html -/doc/asio/reference/basic_raw_socket/get_executor.html -/doc/asio/reference/basic_raw_socket/get_option/ -/doc/asio/reference/basic_raw_socket/get_option.html -/doc/asio/reference/basic_raw_socket/get_option/overload1.html -/doc/asio/reference/basic_raw_socket/get_option/overload2.html -/doc/asio/reference/basic_raw_socket.html -/doc/asio/reference/basic_raw_socket/io_control/ -/doc/asio/reference/basic_raw_socket/io_control.html -/doc/asio/reference/basic_raw_socket/io_control/overload1.html -/doc/asio/reference/basic_raw_socket/io_control/overload2.html -/doc/asio/reference/basic_raw_socket/is_open.html -/doc/asio/reference/basic_raw_socket/keep_alive.html -/doc/asio/reference/basic_raw_socket/linger.html -/doc/asio/reference/basic_raw_socket/local_endpoint/ -/doc/asio/reference/basic_raw_socket/local_endpoint.html -/doc/asio/reference/basic_raw_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_raw_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_raw_socket/lowest_layer/ -/doc/asio/reference/basic_raw_socket/lowest_layer.html -/doc/asio/reference/basic_raw_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_raw_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_raw_socket/lowest_layer_type.html -/doc/asio/reference/basic_raw_socket/max_connections.html -/doc/asio/reference/basic_raw_socket/max_listen_connections.html -/doc/asio/reference/basic_raw_socket/message_do_not_route.html -/doc/asio/reference/basic_raw_socket/message_end_of_record.html -/doc/asio/reference/basic_raw_socket/message_flags.html -/doc/asio/reference/basic_raw_socket/message_out_of_band.html -/doc/asio/reference/basic_raw_socket/message_peek.html -/doc/asio/reference/basic_raw_socket/native_handle.html -/doc/asio/reference/basic_raw_socket/native_handle_type.html -/doc/asio/reference/basic_raw_socket/native_non_blocking/ -/doc/asio/reference/basic_raw_socket/native_non_blocking.html -/doc/asio/reference/basic_raw_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_raw_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_raw_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_raw_socket/non_blocking/ -/doc/asio/reference/basic_raw_socket/non_blocking.html -/doc/asio/reference/basic_raw_socket/non_blocking/overload1.html -/doc/asio/reference/basic_raw_socket/non_blocking/overload2.html -/doc/asio/reference/basic_raw_socket/non_blocking/overload3.html -/doc/asio/reference/basic_raw_socket/open/ -/doc/asio/reference/basic_raw_socket/open.html -/doc/asio/reference/basic_raw_socket/open/overload1.html -/doc/asio/reference/basic_raw_socket/open/overload2.html -/doc/asio/reference/basic_raw_socket/operator_eq_/ -/doc/asio/reference/basic_raw_socket/operator_eq_.html -/doc/asio/reference/basic_raw_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_raw_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_raw_socket/out_of_band_inline.html -/doc/asio/reference/basic_raw_socket/protocol_type.html -/doc/asio/reference/basic_raw_socket__rebind_executor/ -/doc/asio/reference/basic_raw_socket__rebind_executor.html -/doc/asio/reference/basic_raw_socket__rebind_executor/other.html -/doc/asio/reference/basic_raw_socket/receive/ -/doc/asio/reference/basic_raw_socket/receive_buffer_size.html -/doc/asio/reference/basic_raw_socket/receive_from/ -/doc/asio/reference/basic_raw_socket/receive_from.html -/doc/asio/reference/basic_raw_socket/receive_from/overload1.html -/doc/asio/reference/basic_raw_socket/receive_from/overload2.html -/doc/asio/reference/basic_raw_socket/receive_from/overload3.html -/doc/asio/reference/basic_raw_socket/receive.html -/doc/asio/reference/basic_raw_socket/receive_low_watermark.html -/doc/asio/reference/basic_raw_socket/receive/overload1.html -/doc/asio/reference/basic_raw_socket/receive/overload2.html -/doc/asio/reference/basic_raw_socket/receive/overload3.html -/doc/asio/reference/basic_raw_socket/release/ -/doc/asio/reference/basic_raw_socket/release.html -/doc/asio/reference/basic_raw_socket/release/overload1.html -/doc/asio/reference/basic_raw_socket/release/overload2.html -/doc/asio/reference/basic_raw_socket/remote_endpoint/ -/doc/asio/reference/basic_raw_socket/remote_endpoint.html -/doc/asio/reference/basic_raw_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_raw_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_raw_socket/reuse_address.html -/doc/asio/reference/basic_raw_socket/send/ -/doc/asio/reference/basic_raw_socket/send_buffer_size.html -/doc/asio/reference/basic_raw_socket/send.html -/doc/asio/reference/basic_raw_socket/send_low_watermark.html -/doc/asio/reference/basic_raw_socket/send/overload1.html -/doc/asio/reference/basic_raw_socket/send/overload2.html -/doc/asio/reference/basic_raw_socket/send/overload3.html -/doc/asio/reference/basic_raw_socket/send_to/ -/doc/asio/reference/basic_raw_socket/send_to.html -/doc/asio/reference/basic_raw_socket/send_to/overload1.html -/doc/asio/reference/basic_raw_socket/send_to/overload2.html -/doc/asio/reference/basic_raw_socket/send_to/overload3.html -/doc/asio/reference/basic_raw_socket/set_option/ -/doc/asio/reference/basic_raw_socket/set_option.html -/doc/asio/reference/basic_raw_socket/set_option/overload1.html -/doc/asio/reference/basic_raw_socket/set_option/overload2.html -/doc/asio/reference/basic_raw_socket/shutdown/ -/doc/asio/reference/basic_raw_socket/shutdown.html -/doc/asio/reference/basic_raw_socket/shutdown/overload1.html -/doc/asio/reference/basic_raw_socket/shutdown/overload2.html -/doc/asio/reference/basic_raw_socket/shutdown_type.html -/doc/asio/reference/basic_raw_socket/wait/ -/doc/asio/reference/basic_raw_socket/wait.html -/doc/asio/reference/basic_raw_socket/wait/overload1.html -/doc/asio/reference/basic_raw_socket/wait/overload2.html -/doc/asio/reference/basic_raw_socket/wait_type.html -/doc/asio/reference/basic_seq_packet_socket/ -/doc/asio/reference/basic_seq_packet_socket/assign/ -/doc/asio/reference/basic_seq_packet_socket/assign.html -/doc/asio/reference/basic_seq_packet_socket/assign/overload1.html -/doc/asio/reference/basic_seq_packet_socket/assign/overload2.html -/doc/asio/reference/basic_seq_packet_socket/async_connect.html -/doc/asio/reference/basic_seq_packet_socket/async_receive/ -/doc/asio/reference/basic_seq_packet_socket/async_receive.html -/doc/asio/reference/basic_seq_packet_socket/async_receive/overload1.html -/doc/asio/reference/basic_seq_packet_socket/async_receive/overload2.html -/doc/asio/reference/basic_seq_packet_socket/async_send.html -/doc/asio/reference/basic_seq_packet_socket/async_wait.html -/doc/asio/reference/basic_seq_packet_socket/at_mark/ -/doc/asio/reference/basic_seq_packet_socket/at_mark.html -/doc/asio/reference/basic_seq_packet_socket/at_mark/overload1.html -/doc/asio/reference/basic_seq_packet_socket/at_mark/overload2.html -/doc/asio/reference/basic_seq_packet_socket/available/ -/doc/asio/reference/basic_seq_packet_socket/available.html -/doc/asio/reference/basic_seq_packet_socket/available/overload1.html -/doc/asio/reference/basic_seq_packet_socket/available/overload2.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/ -/doc/asio/reference/basic_seq_packet_socket/_basic_seq_packet_socket.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload10.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload1.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload2.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload3.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload4.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload5.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload6.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload7.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload8.html -/doc/asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload9.html -/doc/asio/reference/basic_seq_packet_socket/bind/ -/doc/asio/reference/basic_seq_packet_socket/bind.html -/doc/asio/reference/basic_seq_packet_socket/bind/overload1.html -/doc/asio/reference/basic_seq_packet_socket/bind/overload2.html -/doc/asio/reference/basic_seq_packet_socket/broadcast.html -/doc/asio/reference/basic_seq_packet_socket/bytes_readable.html -/doc/asio/reference/basic_seq_packet_socket/cancel/ -/doc/asio/reference/basic_seq_packet_socket/cancel.html -/doc/asio/reference/basic_seq_packet_socket/cancel/overload1.html -/doc/asio/reference/basic_seq_packet_socket/cancel/overload2.html -/doc/asio/reference/basic_seq_packet_socket/close/ -/doc/asio/reference/basic_seq_packet_socket/close.html -/doc/asio/reference/basic_seq_packet_socket/close/overload1.html -/doc/asio/reference/basic_seq_packet_socket/close/overload2.html -/doc/asio/reference/basic_seq_packet_socket/connect/ -/doc/asio/reference/basic_seq_packet_socket/connect.html -/doc/asio/reference/basic_seq_packet_socket/connect/overload1.html -/doc/asio/reference/basic_seq_packet_socket/connect/overload2.html -/doc/asio/reference/basic_seq_packet_socket/debug.html -/doc/asio/reference/basic_seq_packet_socket/do_not_route.html -/doc/asio/reference/basic_seq_packet_socket/enable_connection_aborted.html -/doc/asio/reference/basic_seq_packet_socket/endpoint_type.html -/doc/asio/reference/basic_seq_packet_socket/executor_type.html -/doc/asio/reference/basic_seq_packet_socket/get_executor.html -/doc/asio/reference/basic_seq_packet_socket/get_option/ -/doc/asio/reference/basic_seq_packet_socket/get_option.html -/doc/asio/reference/basic_seq_packet_socket/get_option/overload1.html -/doc/asio/reference/basic_seq_packet_socket/get_option/overload2.html -/doc/asio/reference/basic_seq_packet_socket.html -/doc/asio/reference/basic_seq_packet_socket/io_control/ -/doc/asio/reference/basic_seq_packet_socket/io_control.html -/doc/asio/reference/basic_seq_packet_socket/io_control/overload1.html -/doc/asio/reference/basic_seq_packet_socket/io_control/overload2.html -/doc/asio/reference/basic_seq_packet_socket/is_open.html -/doc/asio/reference/basic_seq_packet_socket/keep_alive.html -/doc/asio/reference/basic_seq_packet_socket/linger.html -/doc/asio/reference/basic_seq_packet_socket/local_endpoint/ -/doc/asio/reference/basic_seq_packet_socket/local_endpoint.html -/doc/asio/reference/basic_seq_packet_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_seq_packet_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_seq_packet_socket/lowest_layer/ -/doc/asio/reference/basic_seq_packet_socket/lowest_layer.html -/doc/asio/reference/basic_seq_packet_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_seq_packet_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_seq_packet_socket/lowest_layer_type.html -/doc/asio/reference/basic_seq_packet_socket/max_connections.html -/doc/asio/reference/basic_seq_packet_socket/max_listen_connections.html -/doc/asio/reference/basic_seq_packet_socket/message_do_not_route.html -/doc/asio/reference/basic_seq_packet_socket/message_end_of_record.html -/doc/asio/reference/basic_seq_packet_socket/message_flags.html -/doc/asio/reference/basic_seq_packet_socket/message_out_of_band.html -/doc/asio/reference/basic_seq_packet_socket/message_peek.html -/doc/asio/reference/basic_seq_packet_socket/native_handle.html -/doc/asio/reference/basic_seq_packet_socket/native_handle_type.html -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking/ -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking.html -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_seq_packet_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_seq_packet_socket/non_blocking/ -/doc/asio/reference/basic_seq_packet_socket/non_blocking.html -/doc/asio/reference/basic_seq_packet_socket/non_blocking/overload1.html -/doc/asio/reference/basic_seq_packet_socket/non_blocking/overload2.html -/doc/asio/reference/basic_seq_packet_socket/non_blocking/overload3.html -/doc/asio/reference/basic_seq_packet_socket/open/ -/doc/asio/reference/basic_seq_packet_socket/open.html -/doc/asio/reference/basic_seq_packet_socket/open/overload1.html -/doc/asio/reference/basic_seq_packet_socket/open/overload2.html -/doc/asio/reference/basic_seq_packet_socket/operator_eq_/ -/doc/asio/reference/basic_seq_packet_socket/operator_eq_.html -/doc/asio/reference/basic_seq_packet_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_seq_packet_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_seq_packet_socket/out_of_band_inline.html -/doc/asio/reference/basic_seq_packet_socket/protocol_type.html -/doc/asio/reference/basic_seq_packet_socket__rebind_executor/ -/doc/asio/reference/basic_seq_packet_socket__rebind_executor.html -/doc/asio/reference/basic_seq_packet_socket__rebind_executor/other.html -/doc/asio/reference/basic_seq_packet_socket/receive/ -/doc/asio/reference/basic_seq_packet_socket/receive_buffer_size.html -/doc/asio/reference/basic_seq_packet_socket/receive.html -/doc/asio/reference/basic_seq_packet_socket/receive_low_watermark.html -/doc/asio/reference/basic_seq_packet_socket/receive/overload1.html -/doc/asio/reference/basic_seq_packet_socket/receive/overload2.html -/doc/asio/reference/basic_seq_packet_socket/receive/overload3.html -/doc/asio/reference/basic_seq_packet_socket/release/ -/doc/asio/reference/basic_seq_packet_socket/release.html -/doc/asio/reference/basic_seq_packet_socket/release/overload1.html -/doc/asio/reference/basic_seq_packet_socket/release/overload2.html -/doc/asio/reference/basic_seq_packet_socket/remote_endpoint/ -/doc/asio/reference/basic_seq_packet_socket/remote_endpoint.html -/doc/asio/reference/basic_seq_packet_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_seq_packet_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_seq_packet_socket/reuse_address.html -/doc/asio/reference/basic_seq_packet_socket/send/ -/doc/asio/reference/basic_seq_packet_socket/send_buffer_size.html -/doc/asio/reference/basic_seq_packet_socket/send.html -/doc/asio/reference/basic_seq_packet_socket/send_low_watermark.html -/doc/asio/reference/basic_seq_packet_socket/send/overload1.html -/doc/asio/reference/basic_seq_packet_socket/send/overload2.html -/doc/asio/reference/basic_seq_packet_socket/set_option/ -/doc/asio/reference/basic_seq_packet_socket/set_option.html -/doc/asio/reference/basic_seq_packet_socket/set_option/overload1.html -/doc/asio/reference/basic_seq_packet_socket/set_option/overload2.html -/doc/asio/reference/basic_seq_packet_socket/shutdown/ -/doc/asio/reference/basic_seq_packet_socket/shutdown.html -/doc/asio/reference/basic_seq_packet_socket/shutdown/overload1.html -/doc/asio/reference/basic_seq_packet_socket/shutdown/overload2.html -/doc/asio/reference/basic_seq_packet_socket/shutdown_type.html -/doc/asio/reference/basic_seq_packet_socket/wait/ -/doc/asio/reference/basic_seq_packet_socket/wait.html -/doc/asio/reference/basic_seq_packet_socket/wait/overload1.html -/doc/asio/reference/basic_seq_packet_socket/wait/overload2.html -/doc/asio/reference/basic_seq_packet_socket/wait_type.html -/doc/asio/reference/basic_serial_port/ -/doc/asio/reference/basic_serial_port/assign/ -/doc/asio/reference/basic_serial_port/assign.html -/doc/asio/reference/basic_serial_port/assign/overload1.html -/doc/asio/reference/basic_serial_port/assign/overload2.html -/doc/asio/reference/basic_serial_port/async_read_some.html -/doc/asio/reference/basic_serial_port/async_write_some.html -/doc/asio/reference/basic_serial_port/basic_serial_port/ -/doc/asio/reference/basic_serial_port/_basic_serial_port.html -/doc/asio/reference/basic_serial_port/basic_serial_port.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload1.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload2.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload3.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload4.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload5.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload6.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload7.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload8.html -/doc/asio/reference/basic_serial_port/basic_serial_port/overload9.html -/doc/asio/reference/basic_serial_port/cancel/ -/doc/asio/reference/basic_serial_port/cancel.html -/doc/asio/reference/basic_serial_port/cancel/overload1.html -/doc/asio/reference/basic_serial_port/cancel/overload2.html -/doc/asio/reference/basic_serial_port/close/ -/doc/asio/reference/basic_serial_port/close.html -/doc/asio/reference/basic_serial_port/close/overload1.html -/doc/asio/reference/basic_serial_port/close/overload2.html -/doc/asio/reference/basic_serial_port/executor_type.html -/doc/asio/reference/basic_serial_port/get_executor.html -/doc/asio/reference/basic_serial_port/get_option/ -/doc/asio/reference/basic_serial_port/get_option.html -/doc/asio/reference/basic_serial_port/get_option/overload1.html -/doc/asio/reference/basic_serial_port/get_option/overload2.html -/doc/asio/reference/basic_serial_port.html -/doc/asio/reference/basic_serial_port/is_open.html -/doc/asio/reference/basic_serial_port/lowest_layer/ -/doc/asio/reference/basic_serial_port/lowest_layer.html -/doc/asio/reference/basic_serial_port/lowest_layer/overload1.html -/doc/asio/reference/basic_serial_port/lowest_layer/overload2.html -/doc/asio/reference/basic_serial_port/lowest_layer_type.html -/doc/asio/reference/basic_serial_port/native_handle.html -/doc/asio/reference/basic_serial_port/native_handle_type.html -/doc/asio/reference/basic_serial_port/open/ -/doc/asio/reference/basic_serial_port/open.html -/doc/asio/reference/basic_serial_port/open/overload1.html -/doc/asio/reference/basic_serial_port/open/overload2.html -/doc/asio/reference/basic_serial_port/operator_eq_.html -/doc/asio/reference/basic_serial_port/read_some/ -/doc/asio/reference/basic_serial_port/read_some.html -/doc/asio/reference/basic_serial_port/read_some/overload1.html -/doc/asio/reference/basic_serial_port/read_some/overload2.html -/doc/asio/reference/basic_serial_port__rebind_executor/ -/doc/asio/reference/basic_serial_port__rebind_executor.html -/doc/asio/reference/basic_serial_port__rebind_executor/other.html -/doc/asio/reference/basic_serial_port/send_break/ -/doc/asio/reference/basic_serial_port/send_break.html -/doc/asio/reference/basic_serial_port/send_break/overload1.html -/doc/asio/reference/basic_serial_port/send_break/overload2.html -/doc/asio/reference/basic_serial_port/set_option/ -/doc/asio/reference/basic_serial_port/set_option.html -/doc/asio/reference/basic_serial_port/set_option/overload1.html -/doc/asio/reference/basic_serial_port/set_option/overload2.html -/doc/asio/reference/basic_serial_port/write_some/ -/doc/asio/reference/basic_serial_port/write_some.html -/doc/asio/reference/basic_serial_port/write_some/overload1.html -/doc/asio/reference/basic_serial_port/write_some/overload2.html -/doc/asio/reference/basic_signal_set/ -/doc/asio/reference/basic_signal_set/add/ -/doc/asio/reference/basic_signal_set/add.html -/doc/asio/reference/basic_signal_set/add/overload1.html -/doc/asio/reference/basic_signal_set/add/overload2.html -/doc/asio/reference/basic_signal_set/async_wait.html -/doc/asio/reference/basic_signal_set/basic_signal_set/ -/doc/asio/reference/basic_signal_set/_basic_signal_set.html -/doc/asio/reference/basic_signal_set/basic_signal_set.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload1.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload2.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload3.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload4.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload5.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload6.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload7.html -/doc/asio/reference/basic_signal_set/basic_signal_set/overload8.html -/doc/asio/reference/basic_signal_set/cancel/ -/doc/asio/reference/basic_signal_set/cancel.html -/doc/asio/reference/basic_signal_set/cancel/overload1.html -/doc/asio/reference/basic_signal_set/cancel/overload2.html -/doc/asio/reference/basic_signal_set/clear/ -/doc/asio/reference/basic_signal_set/clear.html -/doc/asio/reference/basic_signal_set/clear/overload1.html -/doc/asio/reference/basic_signal_set/clear/overload2.html -/doc/asio/reference/basic_signal_set/executor_type.html -/doc/asio/reference/basic_signal_set/get_executor.html -/doc/asio/reference/basic_signal_set.html -/doc/asio/reference/basic_signal_set__rebind_executor/ -/doc/asio/reference/basic_signal_set__rebind_executor.html -/doc/asio/reference/basic_signal_set__rebind_executor/other.html -/doc/asio/reference/basic_signal_set/remove/ -/doc/asio/reference/basic_signal_set/remove.html -/doc/asio/reference/basic_signal_set/remove/overload1.html -/doc/asio/reference/basic_signal_set/remove/overload2.html -/doc/asio/reference/basic_socket/ -/doc/asio/reference/basic_socket_acceptor/ -/doc/asio/reference/basic_socket_acceptor/accept/ -/doc/asio/reference/basic_socket_acceptor/accept.html -/doc/asio/reference/basic_socket_acceptor/accept/overload10.html -/doc/asio/reference/basic_socket_acceptor/accept/overload11.html -/doc/asio/reference/basic_socket_acceptor/accept/overload12.html -/doc/asio/reference/basic_socket_acceptor/accept/overload13.html -/doc/asio/reference/basic_socket_acceptor/accept/overload14.html -/doc/asio/reference/basic_socket_acceptor/accept/overload15.html -/doc/asio/reference/basic_socket_acceptor/accept/overload16.html -/doc/asio/reference/basic_socket_acceptor/accept/overload1.html -/doc/asio/reference/basic_socket_acceptor/accept/overload2.html -/doc/asio/reference/basic_socket_acceptor/accept/overload3.html -/doc/asio/reference/basic_socket_acceptor/accept/overload4.html -/doc/asio/reference/basic_socket_acceptor/accept/overload5.html -/doc/asio/reference/basic_socket_acceptor/accept/overload6.html -/doc/asio/reference/basic_socket_acceptor/accept/overload7.html -/doc/asio/reference/basic_socket_acceptor/accept/overload8.html -/doc/asio/reference/basic_socket_acceptor/accept/overload9.html -/doc/asio/reference/basic_socket_acceptor/assign/ -/doc/asio/reference/basic_socket_acceptor/assign.html -/doc/asio/reference/basic_socket_acceptor/assign/overload1.html -/doc/asio/reference/basic_socket_acceptor/assign/overload2.html -/doc/asio/reference/basic_socket_acceptor/async_accept/ -/doc/asio/reference/basic_socket_acceptor/async_accept.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload1.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload2.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload3.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload4.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload5.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload6.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload7.html -/doc/asio/reference/basic_socket_acceptor/async_accept/overload8.html -/doc/asio/reference/basic_socket_acceptor/async_wait.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/ -/doc/asio/reference/basic_socket_acceptor/_basic_socket_acceptor.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload10.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload1.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload2.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload3.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload4.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload5.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload6.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload7.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload8.html -/doc/asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload9.html -/doc/asio/reference/basic_socket_acceptor/bind/ -/doc/asio/reference/basic_socket_acceptor/bind.html -/doc/asio/reference/basic_socket_acceptor/bind/overload1.html -/doc/asio/reference/basic_socket_acceptor/bind/overload2.html -/doc/asio/reference/basic_socket_acceptor/broadcast.html -/doc/asio/reference/basic_socket_acceptor/bytes_readable.html -/doc/asio/reference/basic_socket_acceptor/cancel/ -/doc/asio/reference/basic_socket_acceptor/cancel.html -/doc/asio/reference/basic_socket_acceptor/cancel/overload1.html -/doc/asio/reference/basic_socket_acceptor/cancel/overload2.html -/doc/asio/reference/basic_socket_acceptor/close/ -/doc/asio/reference/basic_socket_acceptor/close.html -/doc/asio/reference/basic_socket_acceptor/close/overload1.html -/doc/asio/reference/basic_socket_acceptor/close/overload2.html -/doc/asio/reference/basic_socket_acceptor/debug.html -/doc/asio/reference/basic_socket_acceptor/do_not_route.html -/doc/asio/reference/basic_socket_acceptor/enable_connection_aborted.html -/doc/asio/reference/basic_socket_acceptor/endpoint_type.html -/doc/asio/reference/basic_socket_acceptor/executor_type.html -/doc/asio/reference/basic_socket_acceptor/get_executor.html -/doc/asio/reference/basic_socket_acceptor/get_option/ -/doc/asio/reference/basic_socket_acceptor/get_option.html -/doc/asio/reference/basic_socket_acceptor/get_option/overload1.html -/doc/asio/reference/basic_socket_acceptor/get_option/overload2.html -/doc/asio/reference/basic_socket_acceptor.html -/doc/asio/reference/basic_socket_acceptor/io_control/ -/doc/asio/reference/basic_socket_acceptor/io_control.html -/doc/asio/reference/basic_socket_acceptor/io_control/overload1.html -/doc/asio/reference/basic_socket_acceptor/io_control/overload2.html -/doc/asio/reference/basic_socket_acceptor/is_open.html -/doc/asio/reference/basic_socket_acceptor/keep_alive.html -/doc/asio/reference/basic_socket_acceptor/linger.html -/doc/asio/reference/basic_socket_acceptor/listen/ -/doc/asio/reference/basic_socket_acceptor/listen.html -/doc/asio/reference/basic_socket_acceptor/listen/overload1.html -/doc/asio/reference/basic_socket_acceptor/listen/overload2.html -/doc/asio/reference/basic_socket_acceptor/local_endpoint/ -/doc/asio/reference/basic_socket_acceptor/local_endpoint.html -/doc/asio/reference/basic_socket_acceptor/local_endpoint/overload1.html -/doc/asio/reference/basic_socket_acceptor/local_endpoint/overload2.html -/doc/asio/reference/basic_socket_acceptor/max_connections.html -/doc/asio/reference/basic_socket_acceptor/max_listen_connections.html -/doc/asio/reference/basic_socket_acceptor/message_do_not_route.html -/doc/asio/reference/basic_socket_acceptor/message_end_of_record.html -/doc/asio/reference/basic_socket_acceptor/message_flags.html -/doc/asio/reference/basic_socket_acceptor/message_out_of_band.html -/doc/asio/reference/basic_socket_acceptor/message_peek.html -/doc/asio/reference/basic_socket_acceptor/native_handle.html -/doc/asio/reference/basic_socket_acceptor/native_handle_type.html -/doc/asio/reference/basic_socket_acceptor/native_non_blocking/ -/doc/asio/reference/basic_socket_acceptor/native_non_blocking.html -/doc/asio/reference/basic_socket_acceptor/native_non_blocking/overload1.html -/doc/asio/reference/basic_socket_acceptor/native_non_blocking/overload2.html -/doc/asio/reference/basic_socket_acceptor/native_non_blocking/overload3.html -/doc/asio/reference/basic_socket_acceptor/non_blocking/ -/doc/asio/reference/basic_socket_acceptor/non_blocking.html -/doc/asio/reference/basic_socket_acceptor/non_blocking/overload1.html -/doc/asio/reference/basic_socket_acceptor/non_blocking/overload2.html -/doc/asio/reference/basic_socket_acceptor/non_blocking/overload3.html -/doc/asio/reference/basic_socket_acceptor/open/ -/doc/asio/reference/basic_socket_acceptor/open.html -/doc/asio/reference/basic_socket_acceptor/open/overload1.html -/doc/asio/reference/basic_socket_acceptor/open/overload2.html -/doc/asio/reference/basic_socket_acceptor/operator_eq_/ -/doc/asio/reference/basic_socket_acceptor/operator_eq_.html -/doc/asio/reference/basic_socket_acceptor/operator_eq_/overload1.html -/doc/asio/reference/basic_socket_acceptor/operator_eq_/overload2.html -/doc/asio/reference/basic_socket_acceptor/out_of_band_inline.html -/doc/asio/reference/basic_socket_acceptor/protocol_type.html -/doc/asio/reference/basic_socket_acceptor__rebind_executor/ -/doc/asio/reference/basic_socket_acceptor__rebind_executor.html -/doc/asio/reference/basic_socket_acceptor__rebind_executor/other.html -/doc/asio/reference/basic_socket_acceptor/receive_buffer_size.html -/doc/asio/reference/basic_socket_acceptor/receive_low_watermark.html -/doc/asio/reference/basic_socket_acceptor/release/ -/doc/asio/reference/basic_socket_acceptor/release.html -/doc/asio/reference/basic_socket_acceptor/release/overload1.html -/doc/asio/reference/basic_socket_acceptor/release/overload2.html -/doc/asio/reference/basic_socket_acceptor/reuse_address.html -/doc/asio/reference/basic_socket_acceptor/send_buffer_size.html -/doc/asio/reference/basic_socket_acceptor/send_low_watermark.html -/doc/asio/reference/basic_socket_acceptor/set_option/ -/doc/asio/reference/basic_socket_acceptor/set_option.html -/doc/asio/reference/basic_socket_acceptor/set_option/overload1.html -/doc/asio/reference/basic_socket_acceptor/set_option/overload2.html -/doc/asio/reference/basic_socket_acceptor/shutdown_type.html -/doc/asio/reference/basic_socket_acceptor/wait/ -/doc/asio/reference/basic_socket_acceptor/wait.html -/doc/asio/reference/basic_socket_acceptor/wait/overload1.html -/doc/asio/reference/basic_socket_acceptor/wait/overload2.html -/doc/asio/reference/basic_socket_acceptor/wait_type.html -/doc/asio/reference/basic_socket/assign/ -/doc/asio/reference/basic_socket/assign.html -/doc/asio/reference/basic_socket/assign/overload1.html -/doc/asio/reference/basic_socket/assign/overload2.html -/doc/asio/reference/basic_socket/async_connect.html -/doc/asio/reference/basic_socket/async_wait.html -/doc/asio/reference/basic_socket/at_mark/ -/doc/asio/reference/basic_socket/at_mark.html -/doc/asio/reference/basic_socket/at_mark/overload1.html -/doc/asio/reference/basic_socket/at_mark/overload2.html -/doc/asio/reference/basic_socket/available/ -/doc/asio/reference/basic_socket/available.html -/doc/asio/reference/basic_socket/available/overload1.html -/doc/asio/reference/basic_socket/available/overload2.html -/doc/asio/reference/basic_socket/basic_socket/ -/doc/asio/reference/basic_socket/_basic_socket.html -/doc/asio/reference/basic_socket/basic_socket.html -/doc/asio/reference/basic_socket/basic_socket/overload10.html -/doc/asio/reference/basic_socket/basic_socket/overload1.html -/doc/asio/reference/basic_socket/basic_socket/overload2.html -/doc/asio/reference/basic_socket/basic_socket/overload3.html -/doc/asio/reference/basic_socket/basic_socket/overload4.html -/doc/asio/reference/basic_socket/basic_socket/overload5.html -/doc/asio/reference/basic_socket/basic_socket/overload6.html -/doc/asio/reference/basic_socket/basic_socket/overload7.html -/doc/asio/reference/basic_socket/basic_socket/overload8.html -/doc/asio/reference/basic_socket/basic_socket/overload9.html -/doc/asio/reference/basic_socket/bind/ -/doc/asio/reference/basic_socket/bind.html -/doc/asio/reference/basic_socket/bind/overload1.html -/doc/asio/reference/basic_socket/bind/overload2.html -/doc/asio/reference/basic_socket/broadcast.html -/doc/asio/reference/basic_socket/bytes_readable.html -/doc/asio/reference/basic_socket/cancel/ -/doc/asio/reference/basic_socket/cancel.html -/doc/asio/reference/basic_socket/cancel/overload1.html -/doc/asio/reference/basic_socket/cancel/overload2.html -/doc/asio/reference/basic_socket/close/ -/doc/asio/reference/basic_socket/close.html -/doc/asio/reference/basic_socket/close/overload1.html -/doc/asio/reference/basic_socket/close/overload2.html -/doc/asio/reference/basic_socket/connect/ -/doc/asio/reference/basic_socket/connect.html -/doc/asio/reference/basic_socket/connect/overload1.html -/doc/asio/reference/basic_socket/connect/overload2.html -/doc/asio/reference/basic_socket/debug.html -/doc/asio/reference/basic_socket/do_not_route.html -/doc/asio/reference/basic_socket/enable_connection_aborted.html -/doc/asio/reference/basic_socket/endpoint_type.html -/doc/asio/reference/basic_socket/executor_type.html -/doc/asio/reference/basic_socket/get_executor.html -/doc/asio/reference/basic_socket/get_option/ -/doc/asio/reference/basic_socket/get_option.html -/doc/asio/reference/basic_socket/get_option/overload1.html -/doc/asio/reference/basic_socket/get_option/overload2.html -/doc/asio/reference/basic_socket.html -/doc/asio/reference/basic_socket/io_control/ -/doc/asio/reference/basic_socket/io_control.html -/doc/asio/reference/basic_socket/io_control/overload1.html -/doc/asio/reference/basic_socket/io_control/overload2.html -/doc/asio/reference/basic_socket_iostream/ -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/ -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream.html -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/overload1.html -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/overload2.html -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/overload3.html -/doc/asio/reference/basic_socket_iostream/basic_socket_iostream/overload4.html -/doc/asio/reference/basic_socket_iostream/clock_type.html -/doc/asio/reference/basic_socket_iostream/close.html -/doc/asio/reference/basic_socket_iostream/connect.html -/doc/asio/reference/basic_socket_iostream/duration.html -/doc/asio/reference/basic_socket_iostream/duration_type.html -/doc/asio/reference/basic_socket_iostream/endpoint_type.html -/doc/asio/reference/basic_socket_iostream/error.html -/doc/asio/reference/basic_socket_iostream/expires_after.html -/doc/asio/reference/basic_socket_iostream/expires_at/ -/doc/asio/reference/basic_socket_iostream/expires_at.html -/doc/asio/reference/basic_socket_iostream/expires_at/overload1.html -/doc/asio/reference/basic_socket_iostream/expires_at/overload2.html -/doc/asio/reference/basic_socket_iostream/expires_from_now/ -/doc/asio/reference/basic_socket_iostream/expires_from_now.html -/doc/asio/reference/basic_socket_iostream/expires_from_now/overload1.html -/doc/asio/reference/basic_socket_iostream/expires_from_now/overload2.html -/doc/asio/reference/basic_socket_iostream/expiry.html -/doc/asio/reference/basic_socket_iostream.html -/doc/asio/reference/basic_socket_iostream/operator_eq_.html -/doc/asio/reference/basic_socket_iostream/protocol_type.html -/doc/asio/reference/basic_socket_iostream/rdbuf.html -/doc/asio/reference/basic_socket_iostream/socket.html -/doc/asio/reference/basic_socket_iostream/time_point.html -/doc/asio/reference/basic_socket_iostream/time_type.html -/doc/asio/reference/basic_socket/is_open.html -/doc/asio/reference/basic_socket/keep_alive.html -/doc/asio/reference/basic_socket/linger.html -/doc/asio/reference/basic_socket/local_endpoint/ -/doc/asio/reference/basic_socket/local_endpoint.html -/doc/asio/reference/basic_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_socket/lowest_layer/ -/doc/asio/reference/basic_socket/lowest_layer.html -/doc/asio/reference/basic_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_socket/lowest_layer_type.html -/doc/asio/reference/basic_socket/max_connections.html -/doc/asio/reference/basic_socket/max_listen_connections.html -/doc/asio/reference/basic_socket/message_do_not_route.html -/doc/asio/reference/basic_socket/message_end_of_record.html -/doc/asio/reference/basic_socket/message_flags.html -/doc/asio/reference/basic_socket/message_out_of_band.html -/doc/asio/reference/basic_socket/message_peek.html -/doc/asio/reference/basic_socket/native_handle.html -/doc/asio/reference/basic_socket/native_handle_type.html -/doc/asio/reference/basic_socket/native_non_blocking/ -/doc/asio/reference/basic_socket/native_non_blocking.html -/doc/asio/reference/basic_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_socket/non_blocking/ -/doc/asio/reference/basic_socket/non_blocking.html -/doc/asio/reference/basic_socket/non_blocking/overload1.html -/doc/asio/reference/basic_socket/non_blocking/overload2.html -/doc/asio/reference/basic_socket/non_blocking/overload3.html -/doc/asio/reference/basic_socket/open/ -/doc/asio/reference/basic_socket/open.html -/doc/asio/reference/basic_socket/open/overload1.html -/doc/asio/reference/basic_socket/open/overload2.html -/doc/asio/reference/basic_socket/operator_eq_/ -/doc/asio/reference/basic_socket/operator_eq_.html -/doc/asio/reference/basic_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_socket/out_of_band_inline.html -/doc/asio/reference/basic_socket/protocol_type.html -/doc/asio/reference/basic_socket__rebind_executor/ -/doc/asio/reference/basic_socket__rebind_executor.html -/doc/asio/reference/basic_socket__rebind_executor/other.html -/doc/asio/reference/basic_socket/receive_buffer_size.html -/doc/asio/reference/basic_socket/receive_low_watermark.html -/doc/asio/reference/basic_socket/release/ -/doc/asio/reference/basic_socket/release.html -/doc/asio/reference/basic_socket/release/overload1.html -/doc/asio/reference/basic_socket/release/overload2.html -/doc/asio/reference/basic_socket/remote_endpoint/ -/doc/asio/reference/basic_socket/remote_endpoint.html -/doc/asio/reference/basic_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_socket/reuse_address.html -/doc/asio/reference/basic_socket/send_buffer_size.html -/doc/asio/reference/basic_socket/send_low_watermark.html -/doc/asio/reference/basic_socket/set_option/ -/doc/asio/reference/basic_socket/set_option.html -/doc/asio/reference/basic_socket/set_option/overload1.html -/doc/asio/reference/basic_socket/set_option/overload2.html -/doc/asio/reference/basic_socket/shutdown/ -/doc/asio/reference/basic_socket/shutdown.html -/doc/asio/reference/basic_socket/shutdown/overload1.html -/doc/asio/reference/basic_socket/shutdown/overload2.html -/doc/asio/reference/basic_socket/shutdown_type.html -/doc/asio/reference/basic_socket_streambuf/ -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf/ -/doc/asio/reference/basic_socket_streambuf/_basic_socket_streambuf.html -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf.html -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload1.html -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload2.html -/doc/asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload3.html -/doc/asio/reference/basic_socket_streambuf/clock_type.html -/doc/asio/reference/basic_socket_streambuf/close.html -/doc/asio/reference/basic_socket_streambuf/connect/ -/doc/asio/reference/basic_socket_streambuf/connect.html -/doc/asio/reference/basic_socket_streambuf/connect/overload1.html -/doc/asio/reference/basic_socket_streambuf/connect/overload2.html -/doc/asio/reference/basic_socket_streambuf/duration.html -/doc/asio/reference/basic_socket_streambuf/duration_type.html -/doc/asio/reference/basic_socket_streambuf/endpoint_type.html -/doc/asio/reference/basic_socket_streambuf/error.html -/doc/asio/reference/basic_socket_streambuf/expires_after.html -/doc/asio/reference/basic_socket_streambuf/expires_at/ -/doc/asio/reference/basic_socket_streambuf/expires_at.html -/doc/asio/reference/basic_socket_streambuf/expires_at/overload1.html -/doc/asio/reference/basic_socket_streambuf/expires_at/overload2.html -/doc/asio/reference/basic_socket_streambuf/expires_from_now/ -/doc/asio/reference/basic_socket_streambuf/expires_from_now.html -/doc/asio/reference/basic_socket_streambuf/expires_from_now/overload1.html -/doc/asio/reference/basic_socket_streambuf/expires_from_now/overload2.html -/doc/asio/reference/basic_socket_streambuf/expiry.html -/doc/asio/reference/basic_socket_streambuf.html -/doc/asio/reference/basic_socket_streambuf/operator_eq_.html -/doc/asio/reference/basic_socket_streambuf/overflow.html -/doc/asio/reference/basic_socket_streambuf/protocol_type.html -/doc/asio/reference/basic_socket_streambuf/puberror.html -/doc/asio/reference/basic_socket_streambuf/setbuf.html -/doc/asio/reference/basic_socket_streambuf/socket.html -/doc/asio/reference/basic_socket_streambuf/sync.html -/doc/asio/reference/basic_socket_streambuf/time_point.html -/doc/asio/reference/basic_socket_streambuf/time_type.html -/doc/asio/reference/basic_socket_streambuf/underflow.html -/doc/asio/reference/basic_socket/wait/ -/doc/asio/reference/basic_socket/wait.html -/doc/asio/reference/basic_socket/wait/overload1.html -/doc/asio/reference/basic_socket/wait/overload2.html -/doc/asio/reference/basic_socket/wait_type.html -/doc/asio/reference/basic_streambuf/ -/doc/asio/reference/basic_streambuf/basic_streambuf.html -/doc/asio/reference/basic_streambuf/capacity.html -/doc/asio/reference/basic_streambuf/commit.html -/doc/asio/reference/basic_streambuf/const_buffers_type.html -/doc/asio/reference/basic_streambuf/consume.html -/doc/asio/reference/basic_streambuf/data.html -/doc/asio/reference/basic_streambuf.html -/doc/asio/reference/basic_streambuf/max_size.html -/doc/asio/reference/basic_streambuf/mutable_buffers_type.html -/doc/asio/reference/basic_streambuf/overflow.html -/doc/asio/reference/basic_streambuf/prepare.html -/doc/asio/reference/basic_streambuf_ref/ -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref/ -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref.html -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload1.html -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload2.html -/doc/asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload3.html -/doc/asio/reference/basic_streambuf_ref/capacity.html -/doc/asio/reference/basic_streambuf_ref/commit.html -/doc/asio/reference/basic_streambuf_ref/const_buffers_type.html -/doc/asio/reference/basic_streambuf_ref/consume.html -/doc/asio/reference/basic_streambuf_ref/data.html -/doc/asio/reference/basic_streambuf_ref.html -/doc/asio/reference/basic_streambuf_ref/max_size.html -/doc/asio/reference/basic_streambuf_ref/mutable_buffers_type.html -/doc/asio/reference/basic_streambuf_ref/prepare.html -/doc/asio/reference/basic_streambuf_ref/size.html -/doc/asio/reference/basic_streambuf/reserve.html -/doc/asio/reference/basic_streambuf/size.html -/doc/asio/reference/basic_streambuf/underflow.html -/doc/asio/reference/basic_stream_socket/ -/doc/asio/reference/basic_stream_socket/assign/ -/doc/asio/reference/basic_stream_socket/assign.html -/doc/asio/reference/basic_stream_socket/assign/overload1.html -/doc/asio/reference/basic_stream_socket/assign/overload2.html -/doc/asio/reference/basic_stream_socket/async_connect.html -/doc/asio/reference/basic_stream_socket/async_read_some.html -/doc/asio/reference/basic_stream_socket/async_receive/ -/doc/asio/reference/basic_stream_socket/async_receive.html -/doc/asio/reference/basic_stream_socket/async_receive/overload1.html -/doc/asio/reference/basic_stream_socket/async_receive/overload2.html -/doc/asio/reference/basic_stream_socket/async_send/ -/doc/asio/reference/basic_stream_socket/async_send.html -/doc/asio/reference/basic_stream_socket/async_send/overload1.html -/doc/asio/reference/basic_stream_socket/async_send/overload2.html -/doc/asio/reference/basic_stream_socket/async_wait.html -/doc/asio/reference/basic_stream_socket/async_write_some.html -/doc/asio/reference/basic_stream_socket/at_mark/ -/doc/asio/reference/basic_stream_socket/at_mark.html -/doc/asio/reference/basic_stream_socket/at_mark/overload1.html -/doc/asio/reference/basic_stream_socket/at_mark/overload2.html -/doc/asio/reference/basic_stream_socket/available/ -/doc/asio/reference/basic_stream_socket/available.html -/doc/asio/reference/basic_stream_socket/available/overload1.html -/doc/asio/reference/basic_stream_socket/available/overload2.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/ -/doc/asio/reference/basic_stream_socket/_basic_stream_socket.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload10.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload1.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload2.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload3.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload4.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload5.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload6.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload7.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload8.html -/doc/asio/reference/basic_stream_socket/basic_stream_socket/overload9.html -/doc/asio/reference/basic_stream_socket/bind/ -/doc/asio/reference/basic_stream_socket/bind.html -/doc/asio/reference/basic_stream_socket/bind/overload1.html -/doc/asio/reference/basic_stream_socket/bind/overload2.html -/doc/asio/reference/basic_stream_socket/broadcast.html -/doc/asio/reference/basic_stream_socket/bytes_readable.html -/doc/asio/reference/basic_stream_socket/cancel/ -/doc/asio/reference/basic_stream_socket/cancel.html -/doc/asio/reference/basic_stream_socket/cancel/overload1.html -/doc/asio/reference/basic_stream_socket/cancel/overload2.html -/doc/asio/reference/basic_stream_socket/close/ -/doc/asio/reference/basic_stream_socket/close.html -/doc/asio/reference/basic_stream_socket/close/overload1.html -/doc/asio/reference/basic_stream_socket/close/overload2.html -/doc/asio/reference/basic_stream_socket/connect/ -/doc/asio/reference/basic_stream_socket/connect.html -/doc/asio/reference/basic_stream_socket/connect/overload1.html -/doc/asio/reference/basic_stream_socket/connect/overload2.html -/doc/asio/reference/basic_stream_socket/debug.html -/doc/asio/reference/basic_stream_socket/do_not_route.html -/doc/asio/reference/basic_stream_socket/enable_connection_aborted.html -/doc/asio/reference/basic_stream_socket/endpoint_type.html -/doc/asio/reference/basic_stream_socket/executor_type.html -/doc/asio/reference/basic_stream_socket/get_executor.html -/doc/asio/reference/basic_stream_socket/get_option/ -/doc/asio/reference/basic_stream_socket/get_option.html -/doc/asio/reference/basic_stream_socket/get_option/overload1.html -/doc/asio/reference/basic_stream_socket/get_option/overload2.html -/doc/asio/reference/basic_stream_socket.html -/doc/asio/reference/basic_stream_socket/io_control/ -/doc/asio/reference/basic_stream_socket/io_control.html -/doc/asio/reference/basic_stream_socket/io_control/overload1.html -/doc/asio/reference/basic_stream_socket/io_control/overload2.html -/doc/asio/reference/basic_stream_socket/is_open.html -/doc/asio/reference/basic_stream_socket/keep_alive.html -/doc/asio/reference/basic_stream_socket/linger.html -/doc/asio/reference/basic_stream_socket/local_endpoint/ -/doc/asio/reference/basic_stream_socket/local_endpoint.html -/doc/asio/reference/basic_stream_socket/local_endpoint/overload1.html -/doc/asio/reference/basic_stream_socket/local_endpoint/overload2.html -/doc/asio/reference/basic_stream_socket/lowest_layer/ -/doc/asio/reference/basic_stream_socket/lowest_layer.html -/doc/asio/reference/basic_stream_socket/lowest_layer/overload1.html -/doc/asio/reference/basic_stream_socket/lowest_layer/overload2.html -/doc/asio/reference/basic_stream_socket/lowest_layer_type.html -/doc/asio/reference/basic_stream_socket/max_connections.html -/doc/asio/reference/basic_stream_socket/max_listen_connections.html -/doc/asio/reference/basic_stream_socket/message_do_not_route.html -/doc/asio/reference/basic_stream_socket/message_end_of_record.html -/doc/asio/reference/basic_stream_socket/message_flags.html -/doc/asio/reference/basic_stream_socket/message_out_of_band.html -/doc/asio/reference/basic_stream_socket/message_peek.html -/doc/asio/reference/basic_stream_socket/native_handle.html -/doc/asio/reference/basic_stream_socket/native_handle_type.html -/doc/asio/reference/basic_stream_socket/native_non_blocking/ -/doc/asio/reference/basic_stream_socket/native_non_blocking.html -/doc/asio/reference/basic_stream_socket/native_non_blocking/overload1.html -/doc/asio/reference/basic_stream_socket/native_non_blocking/overload2.html -/doc/asio/reference/basic_stream_socket/native_non_blocking/overload3.html -/doc/asio/reference/basic_stream_socket/non_blocking/ -/doc/asio/reference/basic_stream_socket/non_blocking.html -/doc/asio/reference/basic_stream_socket/non_blocking/overload1.html -/doc/asio/reference/basic_stream_socket/non_blocking/overload2.html -/doc/asio/reference/basic_stream_socket/non_blocking/overload3.html -/doc/asio/reference/basic_stream_socket/open/ -/doc/asio/reference/basic_stream_socket/open.html -/doc/asio/reference/basic_stream_socket/open/overload1.html -/doc/asio/reference/basic_stream_socket/open/overload2.html -/doc/asio/reference/basic_stream_socket/operator_eq_/ -/doc/asio/reference/basic_stream_socket/operator_eq_.html -/doc/asio/reference/basic_stream_socket/operator_eq_/overload1.html -/doc/asio/reference/basic_stream_socket/operator_eq_/overload2.html -/doc/asio/reference/basic_stream_socket/out_of_band_inline.html -/doc/asio/reference/basic_stream_socket/protocol_type.html -/doc/asio/reference/basic_stream_socket/read_some/ -/doc/asio/reference/basic_stream_socket/read_some.html -/doc/asio/reference/basic_stream_socket/read_some/overload1.html -/doc/asio/reference/basic_stream_socket/read_some/overload2.html -/doc/asio/reference/basic_stream_socket__rebind_executor/ -/doc/asio/reference/basic_stream_socket__rebind_executor.html -/doc/asio/reference/basic_stream_socket__rebind_executor/other.html -/doc/asio/reference/basic_stream_socket/receive/ -/doc/asio/reference/basic_stream_socket/receive_buffer_size.html -/doc/asio/reference/basic_stream_socket/receive.html -/doc/asio/reference/basic_stream_socket/receive_low_watermark.html -/doc/asio/reference/basic_stream_socket/receive/overload1.html -/doc/asio/reference/basic_stream_socket/receive/overload2.html -/doc/asio/reference/basic_stream_socket/receive/overload3.html -/doc/asio/reference/basic_stream_socket/release/ -/doc/asio/reference/basic_stream_socket/release.html -/doc/asio/reference/basic_stream_socket/release/overload1.html -/doc/asio/reference/basic_stream_socket/release/overload2.html -/doc/asio/reference/basic_stream_socket/remote_endpoint/ -/doc/asio/reference/basic_stream_socket/remote_endpoint.html -/doc/asio/reference/basic_stream_socket/remote_endpoint/overload1.html -/doc/asio/reference/basic_stream_socket/remote_endpoint/overload2.html -/doc/asio/reference/basic_stream_socket/reuse_address.html -/doc/asio/reference/basic_stream_socket/send/ -/doc/asio/reference/basic_stream_socket/send_buffer_size.html -/doc/asio/reference/basic_stream_socket/send.html -/doc/asio/reference/basic_stream_socket/send_low_watermark.html -/doc/asio/reference/basic_stream_socket/send/overload1.html -/doc/asio/reference/basic_stream_socket/send/overload2.html -/doc/asio/reference/basic_stream_socket/send/overload3.html -/doc/asio/reference/basic_stream_socket/set_option/ -/doc/asio/reference/basic_stream_socket/set_option.html -/doc/asio/reference/basic_stream_socket/set_option/overload1.html -/doc/asio/reference/basic_stream_socket/set_option/overload2.html -/doc/asio/reference/basic_stream_socket/shutdown/ -/doc/asio/reference/basic_stream_socket/shutdown.html -/doc/asio/reference/basic_stream_socket/shutdown/overload1.html -/doc/asio/reference/basic_stream_socket/shutdown/overload2.html -/doc/asio/reference/basic_stream_socket/shutdown_type.html -/doc/asio/reference/basic_stream_socket/wait/ -/doc/asio/reference/basic_stream_socket/wait.html -/doc/asio/reference/basic_stream_socket/wait/overload1.html -/doc/asio/reference/basic_stream_socket/wait/overload2.html -/doc/asio/reference/basic_stream_socket/wait_type.html -/doc/asio/reference/basic_stream_socket/write_some/ -/doc/asio/reference/basic_stream_socket/write_some.html -/doc/asio/reference/basic_stream_socket/write_some/overload1.html -/doc/asio/reference/basic_stream_socket/write_some/overload2.html -/doc/asio/reference/basic_system_executor/ -/doc/asio/reference/basic_system_executor/basic_system_executor.html -/doc/asio/reference/basic_system_executor/context.html -/doc/asio/reference/basic_system_executor/defer.html -/doc/asio/reference/basic_system_executor/dispatch.html -/doc/asio/reference/basic_system_executor/execute.html -/doc/asio/reference/basic_system_executor.html -/doc/asio/reference/basic_system_executor/on_work_finished.html -/doc/asio/reference/basic_system_executor/on_work_started.html -/doc/asio/reference/basic_system_executor/operator_eq__eq_.html -/doc/asio/reference/basic_system_executor/operator_not__eq_.html -/doc/asio/reference/basic_system_executor/post.html -/doc/asio/reference/basic_system_executor/query/ -/doc/asio/reference/basic_system_executor/query.html -/doc/asio/reference/basic_system_executor/query/overload1.html -/doc/asio/reference/basic_system_executor/query/overload2.html -/doc/asio/reference/basic_system_executor/query/overload3.html -/doc/asio/reference/basic_system_executor/query__static/ -/doc/asio/reference/basic_system_executor/query__static.html -/doc/asio/reference/basic_system_executor/query__static/overload1.html -/doc/asio/reference/basic_system_executor/query__static/overload2.html -/doc/asio/reference/basic_system_executor/query__static/overload3.html -/doc/asio/reference/basic_system_executor/query__static/overload4.html -/doc/asio/reference/basic_system_executor/require/ -/doc/asio/reference/basic_system_executor/require.html -/doc/asio/reference/basic_system_executor/require/overload1.html -/doc/asio/reference/basic_system_executor/require/overload2.html -/doc/asio/reference/basic_system_executor/require/overload3.html -/doc/asio/reference/basic_system_executor/require/overload4.html -/doc/asio/reference/basic_system_executor/require/overload5.html -/doc/asio/reference/basic_system_executor/require/overload6.html -/doc/asio/reference/basic_system_executor/require/overload7.html -/doc/asio/reference/basic_waitable_timer/ -/doc/asio/reference/basic_waitable_timer/async_wait.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/ -/doc/asio/reference/basic_waitable_timer/_basic_waitable_timer.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload1.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload2.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload3.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload4.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload5.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload6.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload7.html -/doc/asio/reference/basic_waitable_timer/basic_waitable_timer/overload8.html -/doc/asio/reference/basic_waitable_timer/cancel/ -/doc/asio/reference/basic_waitable_timer/cancel.html -/doc/asio/reference/basic_waitable_timer/cancel_one/ -/doc/asio/reference/basic_waitable_timer/cancel_one.html -/doc/asio/reference/basic_waitable_timer/cancel_one/overload1.html -/doc/asio/reference/basic_waitable_timer/cancel_one/overload2.html -/doc/asio/reference/basic_waitable_timer/cancel/overload1.html -/doc/asio/reference/basic_waitable_timer/cancel/overload2.html -/doc/asio/reference/basic_waitable_timer/clock_type.html -/doc/asio/reference/basic_waitable_timer/duration.html -/doc/asio/reference/basic_waitable_timer/executor_type.html -/doc/asio/reference/basic_waitable_timer/expires_after.html -/doc/asio/reference/basic_waitable_timer/expires_at/ -/doc/asio/reference/basic_waitable_timer/expires_at.html -/doc/asio/reference/basic_waitable_timer/expires_at/overload1.html -/doc/asio/reference/basic_waitable_timer/expires_at/overload2.html -/doc/asio/reference/basic_waitable_timer/expires_at/overload3.html -/doc/asio/reference/basic_waitable_timer/expires_from_now/ -/doc/asio/reference/basic_waitable_timer/expires_from_now.html -/doc/asio/reference/basic_waitable_timer/expires_from_now/overload1.html -/doc/asio/reference/basic_waitable_timer/expires_from_now/overload2.html -/doc/asio/reference/basic_waitable_timer/expires_from_now/overload3.html -/doc/asio/reference/basic_waitable_timer/expiry.html -/doc/asio/reference/basic_waitable_timer/get_executor.html -/doc/asio/reference/basic_waitable_timer.html -/doc/asio/reference/basic_waitable_timer/operator_eq_/ -/doc/asio/reference/basic_waitable_timer/operator_eq_.html -/doc/asio/reference/basic_waitable_timer/operator_eq_/overload1.html -/doc/asio/reference/basic_waitable_timer/operator_eq_/overload2.html -/doc/asio/reference/basic_waitable_timer__rebind_executor/ -/doc/asio/reference/basic_waitable_timer__rebind_executor.html -/doc/asio/reference/basic_waitable_timer__rebind_executor/other.html -/doc/asio/reference/basic_waitable_timer/time_point.html -/doc/asio/reference/basic_waitable_timer/traits_type.html -/doc/asio/reference/basic_waitable_timer/wait/ -/doc/asio/reference/basic_waitable_timer/wait.html -/doc/asio/reference/basic_waitable_timer/wait/overload1.html -/doc/asio/reference/basic_waitable_timer/wait/overload2.html -/doc/asio/reference/basic_yield_context/ -/doc/asio/reference/basic_yield_context/basic_yield_context/ -/doc/asio/reference/basic_yield_context/basic_yield_context.html -/doc/asio/reference/basic_yield_context/basic_yield_context/overload1.html -/doc/asio/reference/basic_yield_context/basic_yield_context/overload2.html -/doc/asio/reference/basic_yield_context/callee_type.html -/doc/asio/reference/basic_yield_context/caller_type.html -/doc/asio/reference/basic_yield_context.html -/doc/asio/reference/basic_yield_context/operator_lb__rb_.html -/doc/asio/reference/bind_cancellation_slot.html -/doc/asio/reference/bind_executor/ -/doc/asio/reference/bind_executor.html -/doc/asio/reference/bind_executor/overload1.html -/doc/asio/reference/bind_executor/overload2.html -/doc/asio/reference/buffer/ -/doc/asio/reference/buffer_cast/ -/doc/asio/reference/buffer_cast.html -/doc/asio/reference/buffer_cast/overload1.html -/doc/asio/reference/buffer_cast/overload2.html -/doc/asio/reference/buffer_copy/ -/doc/asio/reference/buffer_copy.html -/doc/asio/reference/buffer_copy/overload1.html -/doc/asio/reference/buffer_copy/overload2.html -/doc/asio/reference/BufferedHandshakeHandler.html -/doc/asio/reference/buffered_read_stream/ -/doc/asio/reference/buffered_read_stream/async_fill.html -/doc/asio/reference/buffered_read_stream/async_read_some.html -/doc/asio/reference/buffered_read_stream/async_write_some.html -/doc/asio/reference/buffered_read_stream/buffered_read_stream/ -/doc/asio/reference/buffered_read_stream/buffered_read_stream.html -/doc/asio/reference/buffered_read_stream/buffered_read_stream/overload1.html -/doc/asio/reference/buffered_read_stream/buffered_read_stream/overload2.html -/doc/asio/reference/buffered_read_stream/close/ -/doc/asio/reference/buffered_read_stream/close.html -/doc/asio/reference/buffered_read_stream/close/overload1.html -/doc/asio/reference/buffered_read_stream/close/overload2.html -/doc/asio/reference/buffered_read_stream/default_buffer_size.html -/doc/asio/reference/buffered_read_stream/executor_type.html -/doc/asio/reference/buffered_read_stream/fill/ -/doc/asio/reference/buffered_read_stream/fill.html -/doc/asio/reference/buffered_read_stream/fill/overload1.html -/doc/asio/reference/buffered_read_stream/fill/overload2.html -/doc/asio/reference/buffered_read_stream/get_executor.html -/doc/asio/reference/buffered_read_stream.html -/doc/asio/reference/buffered_read_stream/in_avail/ -/doc/asio/reference/buffered_read_stream/in_avail.html -/doc/asio/reference/buffered_read_stream/in_avail/overload1.html -/doc/asio/reference/buffered_read_stream/in_avail/overload2.html -/doc/asio/reference/buffered_read_stream/lowest_layer/ -/doc/asio/reference/buffered_read_stream/lowest_layer.html -/doc/asio/reference/buffered_read_stream/lowest_layer/overload1.html -/doc/asio/reference/buffered_read_stream/lowest_layer/overload2.html -/doc/asio/reference/buffered_read_stream/lowest_layer_type.html -/doc/asio/reference/buffered_read_stream/next_layer.html -/doc/asio/reference/buffered_read_stream/next_layer_type.html -/doc/asio/reference/buffered_read_stream/peek/ -/doc/asio/reference/buffered_read_stream/peek.html -/doc/asio/reference/buffered_read_stream/peek/overload1.html -/doc/asio/reference/buffered_read_stream/peek/overload2.html -/doc/asio/reference/buffered_read_stream/read_some/ -/doc/asio/reference/buffered_read_stream/read_some.html -/doc/asio/reference/buffered_read_stream/read_some/overload1.html -/doc/asio/reference/buffered_read_stream/read_some/overload2.html -/doc/asio/reference/buffered_read_stream/write_some/ -/doc/asio/reference/buffered_read_stream/write_some.html -/doc/asio/reference/buffered_read_stream/write_some/overload1.html -/doc/asio/reference/buffered_read_stream/write_some/overload2.html -/doc/asio/reference/buffered_stream/ -/doc/asio/reference/buffered_stream/async_fill.html -/doc/asio/reference/buffered_stream/async_flush.html -/doc/asio/reference/buffered_stream/async_read_some.html -/doc/asio/reference/buffered_stream/async_write_some.html -/doc/asio/reference/buffered_stream/buffered_stream/ -/doc/asio/reference/buffered_stream/buffered_stream.html -/doc/asio/reference/buffered_stream/buffered_stream/overload1.html -/doc/asio/reference/buffered_stream/buffered_stream/overload2.html -/doc/asio/reference/buffered_stream/close/ -/doc/asio/reference/buffered_stream/close.html -/doc/asio/reference/buffered_stream/close/overload1.html -/doc/asio/reference/buffered_stream/close/overload2.html -/doc/asio/reference/buffered_stream/executor_type.html -/doc/asio/reference/buffered_stream/fill/ -/doc/asio/reference/buffered_stream/fill.html -/doc/asio/reference/buffered_stream/fill/overload1.html -/doc/asio/reference/buffered_stream/fill/overload2.html -/doc/asio/reference/buffered_stream/flush/ -/doc/asio/reference/buffered_stream/flush.html -/doc/asio/reference/buffered_stream/flush/overload1.html -/doc/asio/reference/buffered_stream/flush/overload2.html -/doc/asio/reference/buffered_stream/get_executor.html -/doc/asio/reference/buffered_stream.html -/doc/asio/reference/buffered_stream/in_avail/ -/doc/asio/reference/buffered_stream/in_avail.html -/doc/asio/reference/buffered_stream/in_avail/overload1.html -/doc/asio/reference/buffered_stream/in_avail/overload2.html -/doc/asio/reference/buffered_stream/lowest_layer/ -/doc/asio/reference/buffered_stream/lowest_layer.html -/doc/asio/reference/buffered_stream/lowest_layer/overload1.html -/doc/asio/reference/buffered_stream/lowest_layer/overload2.html -/doc/asio/reference/buffered_stream/lowest_layer_type.html -/doc/asio/reference/buffered_stream/next_layer.html -/doc/asio/reference/buffered_stream/next_layer_type.html -/doc/asio/reference/buffered_stream/peek/ -/doc/asio/reference/buffered_stream/peek.html -/doc/asio/reference/buffered_stream/peek/overload1.html -/doc/asio/reference/buffered_stream/peek/overload2.html -/doc/asio/reference/buffered_stream/read_some/ -/doc/asio/reference/buffered_stream/read_some.html -/doc/asio/reference/buffered_stream/read_some/overload1.html -/doc/asio/reference/buffered_stream/read_some/overload2.html -/doc/asio/reference/buffered_stream/write_some/ -/doc/asio/reference/buffered_stream/write_some.html -/doc/asio/reference/buffered_stream/write_some/overload1.html -/doc/asio/reference/buffered_stream/write_some/overload2.html -/doc/asio/reference/buffered_write_stream/ -/doc/asio/reference/buffered_write_stream/async_flush.html -/doc/asio/reference/buffered_write_stream/async_read_some.html -/doc/asio/reference/buffered_write_stream/async_write_some.html -/doc/asio/reference/buffered_write_stream/buffered_write_stream/ -/doc/asio/reference/buffered_write_stream/buffered_write_stream.html -/doc/asio/reference/buffered_write_stream/buffered_write_stream/overload1.html -/doc/asio/reference/buffered_write_stream/buffered_write_stream/overload2.html -/doc/asio/reference/buffered_write_stream/close/ -/doc/asio/reference/buffered_write_stream/close.html -/doc/asio/reference/buffered_write_stream/close/overload1.html -/doc/asio/reference/buffered_write_stream/close/overload2.html -/doc/asio/reference/buffered_write_stream/default_buffer_size.html -/doc/asio/reference/buffered_write_stream/executor_type.html -/doc/asio/reference/buffered_write_stream/flush/ -/doc/asio/reference/buffered_write_stream/flush.html -/doc/asio/reference/buffered_write_stream/flush/overload1.html -/doc/asio/reference/buffered_write_stream/flush/overload2.html -/doc/asio/reference/buffered_write_stream/get_executor.html -/doc/asio/reference/buffered_write_stream.html -/doc/asio/reference/buffered_write_stream/in_avail/ -/doc/asio/reference/buffered_write_stream/in_avail.html -/doc/asio/reference/buffered_write_stream/in_avail/overload1.html -/doc/asio/reference/buffered_write_stream/in_avail/overload2.html -/doc/asio/reference/buffered_write_stream/lowest_layer/ -/doc/asio/reference/buffered_write_stream/lowest_layer.html -/doc/asio/reference/buffered_write_stream/lowest_layer/overload1.html -/doc/asio/reference/buffered_write_stream/lowest_layer/overload2.html -/doc/asio/reference/buffered_write_stream/lowest_layer_type.html -/doc/asio/reference/buffered_write_stream/next_layer.html -/doc/asio/reference/buffered_write_stream/next_layer_type.html -/doc/asio/reference/buffered_write_stream/peek/ -/doc/asio/reference/buffered_write_stream/peek.html -/doc/asio/reference/buffered_write_stream/peek/overload1.html -/doc/asio/reference/buffered_write_stream/peek/overload2.html -/doc/asio/reference/buffered_write_stream/read_some/ -/doc/asio/reference/buffered_write_stream/read_some.html -/doc/asio/reference/buffered_write_stream/read_some/overload1.html -/doc/asio/reference/buffered_write_stream/read_some/overload2.html -/doc/asio/reference/buffered_write_stream/write_some/ -/doc/asio/reference/buffered_write_stream/write_some.html -/doc/asio/reference/buffered_write_stream/write_some/overload1.html -/doc/asio/reference/buffered_write_stream/write_some/overload2.html -/doc/asio/reference/buffer.html -/doc/asio/reference/buffer/overload10.html -/doc/asio/reference/buffer/overload11.html -/doc/asio/reference/buffer/overload12.html -/doc/asio/reference/buffer/overload13.html -/doc/asio/reference/buffer/overload14.html -/doc/asio/reference/buffer/overload15.html -/doc/asio/reference/buffer/overload16.html -/doc/asio/reference/buffer/overload17.html -/doc/asio/reference/buffer/overload18.html -/doc/asio/reference/buffer/overload19.html -/doc/asio/reference/buffer/overload1.html -/doc/asio/reference/buffer/overload20.html -/doc/asio/reference/buffer/overload21.html -/doc/asio/reference/buffer/overload22.html -/doc/asio/reference/buffer/overload23.html -/doc/asio/reference/buffer/overload24.html -/doc/asio/reference/buffer/overload25.html -/doc/asio/reference/buffer/overload26.html -/doc/asio/reference/buffer/overload27.html -/doc/asio/reference/buffer/overload28.html -/doc/asio/reference/buffer/overload29.html -/doc/asio/reference/buffer/overload2.html -/doc/asio/reference/buffer/overload30.html -/doc/asio/reference/buffer/overload31.html -/doc/asio/reference/buffer/overload32.html -/doc/asio/reference/buffer/overload3.html -/doc/asio/reference/buffer/overload4.html -/doc/asio/reference/buffer/overload5.html -/doc/asio/reference/buffer/overload6.html -/doc/asio/reference/buffer/overload7.html -/doc/asio/reference/buffer/overload8.html -/doc/asio/reference/buffer/overload9.html -/doc/asio/reference/buffers_begin.html -/doc/asio/reference/buffers_end.html -/doc/asio/reference/buffer_sequence_begin/ -/doc/asio/reference/buffer_sequence_begin.html -/doc/asio/reference/buffer_sequence_begin/overload1.html -/doc/asio/reference/buffer_sequence_begin/overload2.html -/doc/asio/reference/buffer_sequence_begin/overload3.html -/doc/asio/reference/buffer_sequence_begin/overload4.html -/doc/asio/reference/buffer_sequence_end/ -/doc/asio/reference/buffer_sequence_end.html -/doc/asio/reference/buffer_sequence_end/overload1.html -/doc/asio/reference/buffer_sequence_end/overload2.html -/doc/asio/reference/buffer_sequence_end/overload3.html -/doc/asio/reference/buffer_sequence_end/overload4.html -/doc/asio/reference/buffers_iterator/ -/doc/asio/reference/buffers_iterator/begin.html -/doc/asio/reference/buffers_iterator/buffers_iterator.html -/doc/asio/reference/buffers_iterator/difference_type.html -/doc/asio/reference/buffers_iterator/end.html -/doc/asio/reference/buffers_iterator.html -/doc/asio/reference/buffers_iterator/iterator_category.html -/doc/asio/reference/buffers_iterator/operator_arrow_.html -/doc/asio/reference/buffers_iterator/operator_eq__eq_.html -/doc/asio/reference/buffers_iterator/operator_gt__eq_.html -/doc/asio/reference/buffers_iterator/operator_gt_.html -/doc/asio/reference/buffers_iterator/operator_lb__rb_.html -/doc/asio/reference/buffers_iterator/operator_lt__eq_.html -/doc/asio/reference/buffers_iterator/operator_lt_.html -/doc/asio/reference/buffers_iterator/operator_minus_/ -/doc/asio/reference/buffers_iterator/operator_minus__eq_.html -/doc/asio/reference/buffers_iterator/operator_minus_.html -/doc/asio/reference/buffers_iterator/operator_minus__minus_/ -/doc/asio/reference/buffers_iterator/operator_minus__minus_.html -/doc/asio/reference/buffers_iterator/operator_minus__minus_/overload1.html -/doc/asio/reference/buffers_iterator/operator_minus__minus_/overload2.html -/doc/asio/reference/buffers_iterator/operator_minus_/overload1.html -/doc/asio/reference/buffers_iterator/operator_minus_/overload2.html -/doc/asio/reference/buffers_iterator/operator_not__eq_.html -/doc/asio/reference/buffers_iterator/operator_plus_/ -/doc/asio/reference/buffers_iterator/operator_plus__eq_.html -/doc/asio/reference/buffers_iterator/operator_plus_.html -/doc/asio/reference/buffers_iterator/operator_plus_/overload1.html -/doc/asio/reference/buffers_iterator/operator_plus_/overload2.html -/doc/asio/reference/buffers_iterator/operator_plus__plus_/ -/doc/asio/reference/buffers_iterator/operator_plus__plus_.html -/doc/asio/reference/buffers_iterator/operator_plus__plus_/overload1.html -/doc/asio/reference/buffers_iterator/operator_plus__plus_/overload2.html -/doc/asio/reference/buffers_iterator/operator__star_.html -/doc/asio/reference/buffers_iterator/pointer.html -/doc/asio/reference/buffers_iterator/reference.html -/doc/asio/reference/buffers_iterator/value_type.html -/doc/asio/reference/buffer_size.html -/doc/asio/reference/cancellation_filter/ -/doc/asio/reference/cancellation_filter.html -/doc/asio/reference/cancellation_filter/operator_lp__rp_.html -/doc/asio/reference/CancellationHandler.html -/doc/asio/reference/cancellation_signal/ -/doc/asio/reference/cancellation_signal/_cancellation_signal.html -/doc/asio/reference/cancellation_signal/cancellation_signal.html -/doc/asio/reference/cancellation_signal/emit.html -/doc/asio/reference/cancellation_signal.html -/doc/asio/reference/cancellation_signal/slot.html -/doc/asio/reference/cancellation_slot/ -/doc/asio/reference/cancellation_slot/assign.html -/doc/asio/reference/cancellation_slot_binder/ -/doc/asio/reference/cancellation_slot_binder/argument_type.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/ -/doc/asio/reference/cancellation_slot_binder/_cancellation_slot_binder.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload1.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload2.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload3.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload4.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload5.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload6.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload7.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload8.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload9.html -/doc/asio/reference/cancellation_slot_binder/cancellation_slot_type.html -/doc/asio/reference/cancellation_slot_binder/first_argument_type.html -/doc/asio/reference/cancellation_slot_binder/get/ -/doc/asio/reference/cancellation_slot_binder/get_cancellation_slot.html -/doc/asio/reference/cancellation_slot_binder/get.html -/doc/asio/reference/cancellation_slot_binder/get/overload1.html -/doc/asio/reference/cancellation_slot_binder/get/overload2.html -/doc/asio/reference/cancellation_slot_binder.html -/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/ -/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_.html -/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/overload1.html -/doc/asio/reference/cancellation_slot_binder/operator_lp__rp_/overload2.html -/doc/asio/reference/cancellation_slot_binder/result_type.html -/doc/asio/reference/cancellation_slot_binder/second_argument_type.html -/doc/asio/reference/cancellation_slot_binder/target_type.html -/doc/asio/reference/cancellation_slot/cancellation_slot.html -/doc/asio/reference/cancellation_slot/clear.html -/doc/asio/reference/cancellation_slot/emplace.html -/doc/asio/reference/cancellation_slot/has_handler.html -/doc/asio/reference/CancellationSlot.html -/doc/asio/reference/cancellation_slot.html -/doc/asio/reference/cancellation_slot/is_connected.html -/doc/asio/reference/cancellation_slot/operator_eq__eq_.html -/doc/asio/reference/cancellation_slot/operator_not__eq_.html -/doc/asio/reference/cancellation_state/ -/doc/asio/reference/cancellation_state/cancellation_state/ -/doc/asio/reference/cancellation_state/cancellation_state.html -/doc/asio/reference/cancellation_state/cancellation_state/overload1.html -/doc/asio/reference/cancellation_state/cancellation_state/overload2.html -/doc/asio/reference/cancellation_state/cancellation_state/overload3.html -/doc/asio/reference/cancellation_state/cancellation_state/overload4.html -/doc/asio/reference/cancellation_state/cancelled.html -/doc/asio/reference/cancellation_state/clear.html -/doc/asio/reference/cancellation_state.html -/doc/asio/reference/cancellation_state/slot.html -/doc/asio/reference/cancellation_type.html -/doc/asio/reference/cancellation_type_t.html -/doc/asio/reference/can_prefer.html -/doc/asio/reference/can_query.html -/doc/asio/reference/can_require_concept.html -/doc/asio/reference/can_require.html -/doc/asio/reference/CompletionCondition.html -/doc/asio/reference/CompletionHandler.html -/doc/asio/reference/connect/ -/doc/asio/reference/ConnectCondition.html -/doc/asio/reference/ConnectHandler.html -/doc/asio/reference/connect.html -/doc/asio/reference/connect/overload10.html -/doc/asio/reference/connect/overload11.html -/doc/asio/reference/connect/overload12.html -/doc/asio/reference/connect/overload1.html -/doc/asio/reference/connect/overload2.html -/doc/asio/reference/connect/overload3.html -/doc/asio/reference/connect/overload4.html -/doc/asio/reference/connect/overload5.html -/doc/asio/reference/connect/overload6.html -/doc/asio/reference/connect/overload7.html -/doc/asio/reference/connect/overload8.html -/doc/asio/reference/connect/overload9.html -/doc/asio/reference/const_buffer/ -/doc/asio/reference/const_buffer/const_buffer/ -/doc/asio/reference/const_buffer/const_buffer.html -/doc/asio/reference/const_buffer/const_buffer/overload1.html -/doc/asio/reference/const_buffer/const_buffer/overload2.html -/doc/asio/reference/const_buffer/const_buffer/overload3.html -/doc/asio/reference/const_buffer/data.html -/doc/asio/reference/const_buffer.html -/doc/asio/reference/const_buffer/operator_plus_/ -/doc/asio/reference/const_buffer/operator_plus__eq_.html -/doc/asio/reference/const_buffer/operator_plus_.html -/doc/asio/reference/const_buffer/operator_plus_/overload1.html -/doc/asio/reference/const_buffer/operator_plus_/overload2.html -/doc/asio/reference/const_buffers_1/ -/doc/asio/reference/const_buffers_1/begin.html -/doc/asio/reference/const_buffers_1/const_buffers_1/ -/doc/asio/reference/const_buffers_1/const_buffers_1.html -/doc/asio/reference/const_buffers_1/const_buffers_1/overload1.html -/doc/asio/reference/const_buffers_1/const_buffers_1/overload2.html -/doc/asio/reference/const_buffers_1/const_iterator.html -/doc/asio/reference/const_buffers_1/data.html -/doc/asio/reference/const_buffers_1/end.html -/doc/asio/reference/const_buffers_1.html -/doc/asio/reference/const_buffers_1/operator_plus_/ -/doc/asio/reference/const_buffers_1/operator_plus__eq_.html -/doc/asio/reference/const_buffers_1/operator_plus_.html -/doc/asio/reference/const_buffers_1/operator_plus_/overload1.html -/doc/asio/reference/const_buffers_1/operator_plus_/overload2.html -/doc/asio/reference/const_buffers_1/size.html -/doc/asio/reference/const_buffers_1/value_type.html -/doc/asio/reference/ConstBufferSequence.html -/doc/asio/reference/const_buffer/size.html -/doc/asio/reference/coroutine/ -/doc/asio/reference/coroutine/coroutine.html -/doc/asio/reference/coroutine.html -/doc/asio/reference/coroutine/is_child.html -/doc/asio/reference/coroutine/is_complete.html -/doc/asio/reference/coroutine/is_parent.html -/doc/asio/reference/co_spawn/ -/doc/asio/reference/co_spawn.html -/doc/asio/reference/co_spawn/overload1.html -/doc/asio/reference/co_spawn/overload2.html -/doc/asio/reference/co_spawn/overload3.html -/doc/asio/reference/co_spawn/overload4.html -/doc/asio/reference/co_spawn/overload5.html -/doc/asio/reference/co_spawn/overload6.html -/doc/asio/reference/deadline_timer.html -/doc/asio/reference/default_completion_token/ -/doc/asio/reference/default_completion_token.html -/doc/asio/reference/default_completion_token/type.html -/doc/asio/reference/defer/ -/doc/asio/reference/defer.html -/doc/asio/reference/defer/overload1.html -/doc/asio/reference/defer/overload2.html -/doc/asio/reference/defer/overload3.html -/doc/asio/reference/detached.html -/doc/asio/reference/detached_t/ -/doc/asio/reference/detached_t/as_default_on.html -/doc/asio/reference/detached_t/detached_t.html -/doc/asio/reference/detached_t__executor_with_default/ -/doc/asio/reference/detached_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/detached_t__executor_with_default/executor_with_default/ -/doc/asio/reference/detached_t__executor_with_default/executor_with_default.html -/doc/asio/reference/detached_t__executor_with_default/executor_with_default/overload1.html -/doc/asio/reference/detached_t__executor_with_default/executor_with_default/overload2.html -/doc/asio/reference/detached_t__executor_with_default.html -/doc/asio/reference/detached_t.html -/doc/asio/reference/disable_cancellation.html -/doc/asio/reference/dispatch/ -/doc/asio/reference/dispatch.html -/doc/asio/reference/dispatch/overload1.html -/doc/asio/reference/dispatch/overload2.html -/doc/asio/reference/dispatch/overload3.html -/doc/asio/reference/dynamic_buffer/ -/doc/asio/reference/DynamicBuffer.html -/doc/asio/reference/dynamic_buffer.html -/doc/asio/reference/dynamic_buffer/overload1.html -/doc/asio/reference/dynamic_buffer/overload2.html -/doc/asio/reference/dynamic_buffer/overload3.html -/doc/asio/reference/dynamic_buffer/overload4.html -/doc/asio/reference/DynamicBuffer_v1.html -/doc/asio/reference/DynamicBuffer_v2.html -/doc/asio/reference/dynamic_string_buffer/ -/doc/asio/reference/dynamic_string_buffer/capacity.html -/doc/asio/reference/dynamic_string_buffer/commit.html -/doc/asio/reference/dynamic_string_buffer/const_buffers_type.html -/doc/asio/reference/dynamic_string_buffer/consume.html -/doc/asio/reference/dynamic_string_buffer/data/ -/doc/asio/reference/dynamic_string_buffer/data.html -/doc/asio/reference/dynamic_string_buffer/data/overload1.html -/doc/asio/reference/dynamic_string_buffer/data/overload2.html -/doc/asio/reference/dynamic_string_buffer/data/overload3.html -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer/ -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer.html -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload1.html -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload2.html -/doc/asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload3.html -/doc/asio/reference/dynamic_string_buffer/grow.html -/doc/asio/reference/dynamic_string_buffer.html -/doc/asio/reference/dynamic_string_buffer/max_size.html -/doc/asio/reference/dynamic_string_buffer/mutable_buffers_type.html -/doc/asio/reference/dynamic_string_buffer/prepare.html -/doc/asio/reference/dynamic_string_buffer/shrink.html -/doc/asio/reference/dynamic_string_buffer/size.html -/doc/asio/reference/dynamic_vector_buffer/ -/doc/asio/reference/dynamic_vector_buffer/capacity.html -/doc/asio/reference/dynamic_vector_buffer/commit.html -/doc/asio/reference/dynamic_vector_buffer/const_buffers_type.html -/doc/asio/reference/dynamic_vector_buffer/consume.html -/doc/asio/reference/dynamic_vector_buffer/data/ -/doc/asio/reference/dynamic_vector_buffer/data.html -/doc/asio/reference/dynamic_vector_buffer/data/overload1.html -/doc/asio/reference/dynamic_vector_buffer/data/overload2.html -/doc/asio/reference/dynamic_vector_buffer/data/overload3.html -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/ -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer.html -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload1.html -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload2.html -/doc/asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload3.html -/doc/asio/reference/dynamic_vector_buffer/grow.html -/doc/asio/reference/dynamic_vector_buffer.html -/doc/asio/reference/dynamic_vector_buffer/max_size.html -/doc/asio/reference/dynamic_vector_buffer/mutable_buffers_type.html -/doc/asio/reference/dynamic_vector_buffer/prepare.html -/doc/asio/reference/dynamic_vector_buffer/shrink.html -/doc/asio/reference/dynamic_vector_buffer/size.html -/doc/asio/reference/enable_partial_cancellation.html -/doc/asio/reference/enable_terminal_cancellation.html -/doc/asio/reference/enable_total_cancellation.html -/doc/asio/reference/Endpoint.html -/doc/asio/reference/EndpointSequence.html -/doc/asio/reference/error__addrinfo_category.html -/doc/asio/reference/error__addrinfo_errors.html -/doc/asio/reference/error__basic_errors.html -/doc/asio/reference/error_category/ -/doc/asio/reference/error_category/_error_category.html -/doc/asio/reference/error_category.html -/doc/asio/reference/error_category/message.html -/doc/asio/reference/error_category/name.html -/doc/asio/reference/error_category/operator_eq__eq_.html -/doc/asio/reference/error_category/operator_not__eq_.html -/doc/asio/reference/error_code/ -/doc/asio/reference/error_code/assign.html -/doc/asio/reference/error_code/category.html -/doc/asio/reference/error_code/clear.html -/doc/asio/reference/error_code/error_code/ -/doc/asio/reference/error_code/error_code.html -/doc/asio/reference/error_code/error_code/overload1.html -/doc/asio/reference/error_code/error_code/overload2.html -/doc/asio/reference/error_code/error_code/overload3.html -/doc/asio/reference/error_code.html -/doc/asio/reference/error_code/message.html -/doc/asio/reference/error_code/operator_eq__eq_.html -/doc/asio/reference/error_code/operator_not__eq_.html -/doc/asio/reference/error_code/operator_not_.html -/doc/asio/reference/error_code/operator_unspecified_bool_type.html -/doc/asio/reference/error_code/unspecified_bool_true.html -/doc/asio/reference/error_code/unspecified_bool_type.html -/doc/asio/reference/error_code__unspecified_bool_type_t.html -/doc/asio/reference/error_code/value.html -/doc/asio/reference/error__get_addrinfo_category.html -/doc/asio/reference/error__get_misc_category.html -/doc/asio/reference/error__get_netdb_category.html -/doc/asio/reference/error__get_ssl_category.html -/doc/asio/reference/error__get_system_category.html -/doc/asio/reference/error__make_error_code/ -/doc/asio/reference/error__make_error_code.html -/doc/asio/reference/error__make_error_code/overload1.html -/doc/asio/reference/error__make_error_code/overload2.html -/doc/asio/reference/error__make_error_code/overload3.html -/doc/asio/reference/error__make_error_code/overload4.html -/doc/asio/reference/error__make_error_code/overload5.html -/doc/asio/reference/error__misc_category.html -/doc/asio/reference/error__misc_errors.html -/doc/asio/reference/error__netdb_category.html -/doc/asio/reference/error__netdb_errors.html -/doc/asio/reference/error__ssl_category.html -/doc/asio/reference/error__ssl_errors.html -/doc/asio/reference/error__system_category.html -/doc/asio/reference/execution__allocator.html -/doc/asio/reference/execution__allocator_t/ -/doc/asio/reference/execution__allocator_t/allocator_t.html -/doc/asio/reference/execution__allocator_t.html -/doc/asio/reference/execution__allocator_t/is_applicable_property_v.html -/doc/asio/reference/execution__allocator_t/is_preferable.html -/doc/asio/reference/execution__allocator_t/is_requirable.html -/doc/asio/reference/execution__allocator_t/value.html -/doc/asio/reference/execution__any_executor/ -/doc/asio/reference/execution__any_executor/any_executor/ -/doc/asio/reference/execution__any_executor/_any_executor.html -/doc/asio/reference/execution__any_executor/any_executor.html -/doc/asio/reference/execution__any_executor/any_executor/overload1.html -/doc/asio/reference/execution__any_executor/any_executor/overload2.html -/doc/asio/reference/execution__any_executor/any_executor/overload3.html -/doc/asio/reference/execution__any_executor/any_executor/overload4.html -/doc/asio/reference/execution__any_executor/any_executor/overload5.html -/doc/asio/reference/execution__any_executor/any_executor/overload6.html -/doc/asio/reference/execution__any_executor/context.html -/doc/asio/reference/execution__any_executor/execute.html -/doc/asio/reference/execution__any_executor.html -/doc/asio/reference/execution__any_executor/operator_bool.html -/doc/asio/reference/execution__any_executor/operator_eq_/ -/doc/asio/reference/execution__any_executor/operator_eq__eq_/ -/doc/asio/reference/execution__any_executor/operator_eq__eq_.html -/doc/asio/reference/execution__any_executor/operator_eq__eq_/overload1.html -/doc/asio/reference/execution__any_executor/operator_eq__eq_/overload2.html -/doc/asio/reference/execution__any_executor/operator_eq__eq_/overload3.html -/doc/asio/reference/execution__any_executor/operator_eq_.html -/doc/asio/reference/execution__any_executor/operator_eq_/overload1.html -/doc/asio/reference/execution__any_executor/operator_eq_/overload2.html -/doc/asio/reference/execution__any_executor/operator_eq_/overload3.html -/doc/asio/reference/execution__any_executor/operator_eq_/overload4.html -/doc/asio/reference/execution__any_executor/operator_not__eq_/ -/doc/asio/reference/execution__any_executor/operator_not__eq_.html -/doc/asio/reference/execution__any_executor/operator_not__eq_/overload1.html -/doc/asio/reference/execution__any_executor/operator_not__eq_/overload2.html -/doc/asio/reference/execution__any_executor/operator_not__eq_/overload3.html -/doc/asio/reference/execution__any_executor/prefer.html -/doc/asio/reference/execution__any_executor/query.html -/doc/asio/reference/execution__any_executor/require.html -/doc/asio/reference/execution__any_executor/swap.html -/doc/asio/reference/execution__any_executor/target/ -/doc/asio/reference/execution__any_executor/target.html -/doc/asio/reference/execution__any_executor/target/overload1.html -/doc/asio/reference/execution__any_executor/target/overload2.html -/doc/asio/reference/execution__any_executor/target_type.html -/doc/asio/reference/execution__bad_executor/ -/doc/asio/reference/execution__bad_executor/bad_executor.html -/doc/asio/reference/execution__bad_executor.html -/doc/asio/reference/execution__bad_executor/what.html -/doc/asio/reference/execution__blocking_adaptation.html -/doc/asio/reference/execution__blocking_adaptation_t/ -/doc/asio/reference/execution__blocking_adaptation_t/allowed.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/ -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/allowed_t.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/is_preferable.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/is_requirable.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_adaptation_t__allowed_t/value.html -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/ -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t.html -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload1.html -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload2.html -/doc/asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload3.html -/doc/asio/reference/execution__blocking_adaptation_t/disallowed.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/ -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/disallowed_t.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/is_preferable.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/is_requirable.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_adaptation_t__disallowed_t/value.html -/doc/asio/reference/execution__blocking_adaptation_t.html -/doc/asio/reference/execution__blocking_adaptation_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_adaptation_t/is_preferable.html -/doc/asio/reference/execution__blocking_adaptation_t/is_requirable.html -/doc/asio/reference/execution__blocking_adaptation_t/operator_eq__eq_.html -/doc/asio/reference/execution__blocking_adaptation_t/operator_not__eq_.html -/doc/asio/reference/execution__blocking_adaptation_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking.html -/doc/asio/reference/execution__blocking_t/ -/doc/asio/reference/execution__blocking_t/always.html -/doc/asio/reference/execution__blocking_t__always_t/ -/doc/asio/reference/execution__blocking_t__always_t/always_t.html -/doc/asio/reference/execution__blocking_t__always_t.html -/doc/asio/reference/execution__blocking_t__always_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_t__always_t/is_preferable.html -/doc/asio/reference/execution__blocking_t__always_t/is_requirable.html -/doc/asio/reference/execution__blocking_t__always_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_t__always_t/value.html -/doc/asio/reference/execution__blocking_t/blocking_t/ -/doc/asio/reference/execution__blocking_t/blocking_t.html -/doc/asio/reference/execution__blocking_t/blocking_t/overload1.html -/doc/asio/reference/execution__blocking_t/blocking_t/overload2.html -/doc/asio/reference/execution__blocking_t/blocking_t/overload3.html -/doc/asio/reference/execution__blocking_t/blocking_t/overload4.html -/doc/asio/reference/execution__blocking_t.html -/doc/asio/reference/execution__blocking_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_t/is_preferable.html -/doc/asio/reference/execution__blocking_t/is_requirable.html -/doc/asio/reference/execution__blocking_t/never.html -/doc/asio/reference/execution__blocking_t__never_t/ -/doc/asio/reference/execution__blocking_t__never_t.html -/doc/asio/reference/execution__blocking_t__never_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_t__never_t/is_preferable.html -/doc/asio/reference/execution__blocking_t__never_t/is_requirable.html -/doc/asio/reference/execution__blocking_t__never_t/never_t.html -/doc/asio/reference/execution__blocking_t__never_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_t__never_t/value.html -/doc/asio/reference/execution__blocking_t/operator_eq__eq_.html -/doc/asio/reference/execution__blocking_t/operator_not__eq_.html -/doc/asio/reference/execution__blocking_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_t/possibly.html -/doc/asio/reference/execution__blocking_t__possibly_t/ -/doc/asio/reference/execution__blocking_t__possibly_t.html -/doc/asio/reference/execution__blocking_t__possibly_t/is_applicable_property_v.html -/doc/asio/reference/execution__blocking_t__possibly_t/is_preferable.html -/doc/asio/reference/execution__blocking_t__possibly_t/is_requirable.html -/doc/asio/reference/execution__blocking_t__possibly_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__blocking_t__possibly_t/possibly_t.html -/doc/asio/reference/execution__blocking_t__possibly_t/value.html -/doc/asio/reference/execution__bulk_execute.html -/doc/asio/reference/execution__bulk_guarantee.html -/doc/asio/reference/execution__bulk_guarantee_t/ -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/ -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t.html -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload1.html -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload2.html -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload3.html -/doc/asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload4.html -/doc/asio/reference/execution__bulk_guarantee_t.html -/doc/asio/reference/execution__bulk_guarantee_t/is_applicable_property_v.html -/doc/asio/reference/execution__bulk_guarantee_t/is_preferable.html -/doc/asio/reference/execution__bulk_guarantee_t/is_requirable.html -/doc/asio/reference/execution__bulk_guarantee_t/operator_eq__eq_.html -/doc/asio/reference/execution__bulk_guarantee_t/operator_not__eq_.html -/doc/asio/reference/execution__bulk_guarantee_t/parallel.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/ -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/is_applicable_property_v.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/is_preferable.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/is_requirable.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/parallel_t.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__bulk_guarantee_t__parallel_t/value.html -/doc/asio/reference/execution__bulk_guarantee_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__bulk_guarantee_t/sequenced.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/ -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/is_applicable_property_v.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/is_preferable.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/is_requirable.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/sequenced_t.html -/doc/asio/reference/execution__bulk_guarantee_t__sequenced_t/value.html -/doc/asio/reference/execution__bulk_guarantee_t/unsequenced.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/ -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_applicable_property_v.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_preferable.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_requirable.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/unsequenced_t.html -/doc/asio/reference/execution__bulk_guarantee_t__unsequenced_t/value.html -/doc/asio/reference/execution__can_bulk_execute.html -/doc/asio/reference/execution__can_connect.html -/doc/asio/reference/execution__can_execute.html -/doc/asio/reference/execution__can_schedule.html -/doc/asio/reference/execution__can_set_done.html -/doc/asio/reference/execution__can_set_error.html -/doc/asio/reference/execution__can_set_value.html -/doc/asio/reference/execution__can_start.html -/doc/asio/reference/execution__can_submit.html -/doc/asio/reference/execution__connect.html -/doc/asio/reference/execution__connect_result/ -/doc/asio/reference/execution__connect_result.html -/doc/asio/reference/execution__connect_result/type.html -/doc/asio/reference/execution_context/ -/doc/asio/reference/execution_context/add_service.html -/doc/asio/reference/execution__context_as.html -/doc/asio/reference/execution__context_as_t/ -/doc/asio/reference/execution__context_as_t.html -/doc/asio/reference/execution__context_as_t/is_applicable_property_v.html -/doc/asio/reference/execution__context_as_t/is_preferable.html -/doc/asio/reference/execution__context_as_t/is_requirable.html -/doc/asio/reference/execution__context_as_t/polymorphic_query_result_type.html -/doc/asio/reference/execution_context/destroy.html -/doc/asio/reference/execution_context/_execution_context.html -/doc/asio/reference/execution_context/execution_context.html -/doc/asio/reference/execution_context/fork_event.html -/doc/asio/reference/execution_context/has_service.html -/doc/asio/reference/ExecutionContext.html -/doc/asio/reference/execution__context.html -/doc/asio/reference/execution_context.html -/doc/asio/reference/execution_context__id/ -/doc/asio/reference/execution_context__id.html -/doc/asio/reference/execution_context__id/id.html -/doc/asio/reference/execution_context/make_service.html -/doc/asio/reference/execution_context/notify_fork.html -/doc/asio/reference/execution_context__service/ -/doc/asio/reference/execution_context__service/context.html -/doc/asio/reference/execution_context__service.html -/doc/asio/reference/execution_context__service/notify_fork.html -/doc/asio/reference/execution_context__service/_service.html -/doc/asio/reference/execution_context__service/service.html -/doc/asio/reference/execution_context__service/shutdown.html -/doc/asio/reference/execution_context/shutdown.html -/doc/asio/reference/execution__context_t/ -/doc/asio/reference/execution__context_t.html -/doc/asio/reference/execution__context_t/is_applicable_property_v.html -/doc/asio/reference/execution__context_t/is_preferable.html -/doc/asio/reference/execution__context_t/is_requirable.html -/doc/asio/reference/execution__context_t/polymorphic_query_result_type.html -/doc/asio/reference/execution_context/use_service/ -/doc/asio/reference/execution_context/use_service.html -/doc/asio/reference/execution_context/use_service/overload1.html -/doc/asio/reference/execution_context/use_service/overload2.html -/doc/asio/reference/execution__execute.html -/doc/asio/reference/execution__executor_index/ -/doc/asio/reference/execution__executor_index.html -/doc/asio/reference/execution__executor_index/type.html -/doc/asio/reference/execution__executor_shape/ -/doc/asio/reference/execution__executor_shape.html -/doc/asio/reference/execution__executor_shape/type.html -/doc/asio/reference/execution__invocable_archetype/ -/doc/asio/reference/execution__invocable_archetype.html -/doc/asio/reference/execution__invocable_archetype/operator_lp__rp_.html -/doc/asio/reference/execution__is_executor.html -/doc/asio/reference/execution__is_executor_of.html -/doc/asio/reference/execution__is_nothrow_receiver_of.html -/doc/asio/reference/execution__is_operation_state.html -/doc/asio/reference/execution__is_receiver.html -/doc/asio/reference/execution__is_receiver_of.html -/doc/asio/reference/execution__is_scheduler.html -/doc/asio/reference/execution__is_sender.html -/doc/asio/reference/execution__is_sender_to.html -/doc/asio/reference/execution__is_typed_sender.html -/doc/asio/reference/execution__mapping.html -/doc/asio/reference/execution__mapping_t/ -/doc/asio/reference/execution__mapping_t.html -/doc/asio/reference/execution__mapping_t/is_applicable_property_v.html -/doc/asio/reference/execution__mapping_t/is_preferable.html -/doc/asio/reference/execution__mapping_t/is_requirable.html -/doc/asio/reference/execution__mapping_t/mapping_t/ -/doc/asio/reference/execution__mapping_t/mapping_t.html -/doc/asio/reference/execution__mapping_t/mapping_t/overload1.html -/doc/asio/reference/execution__mapping_t/mapping_t/overload2.html -/doc/asio/reference/execution__mapping_t/mapping_t/overload3.html -/doc/asio/reference/execution__mapping_t/mapping_t/overload4.html -/doc/asio/reference/execution__mapping_t/new_thread.html -/doc/asio/reference/execution__mapping_t__new_thread_t/ -/doc/asio/reference/execution__mapping_t__new_thread_t.html -/doc/asio/reference/execution__mapping_t__new_thread_t/is_applicable_property_v.html -/doc/asio/reference/execution__mapping_t__new_thread_t/is_preferable.html -/doc/asio/reference/execution__mapping_t__new_thread_t/is_requirable.html -/doc/asio/reference/execution__mapping_t__new_thread_t/new_thread_t.html -/doc/asio/reference/execution__mapping_t__new_thread_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__mapping_t__new_thread_t/value.html -/doc/asio/reference/execution__mapping_t/operator_eq__eq_.html -/doc/asio/reference/execution__mapping_t/operator_not__eq_.html -/doc/asio/reference/execution__mapping_t/other.html -/doc/asio/reference/execution__mapping_t__other_t/ -/doc/asio/reference/execution__mapping_t__other_t.html -/doc/asio/reference/execution__mapping_t__other_t/is_applicable_property_v.html -/doc/asio/reference/execution__mapping_t__other_t/is_preferable.html -/doc/asio/reference/execution__mapping_t__other_t/is_requirable.html -/doc/asio/reference/execution__mapping_t__other_t/other_t.html -/doc/asio/reference/execution__mapping_t__other_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__mapping_t__other_t/value.html -/doc/asio/reference/execution__mapping_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__mapping_t/thread.html -/doc/asio/reference/execution__mapping_t__thread_t/ -/doc/asio/reference/execution__mapping_t__thread_t.html -/doc/asio/reference/execution__mapping_t__thread_t/is_applicable_property_v.html -/doc/asio/reference/execution__mapping_t__thread_t/is_preferable.html -/doc/asio/reference/execution__mapping_t__thread_t/is_requirable.html -/doc/asio/reference/execution__mapping_t__thread_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__mapping_t__thread_t/thread_t.html -/doc/asio/reference/execution__mapping_t__thread_t/value.html -/doc/asio/reference/execution__occupancy.html -/doc/asio/reference/execution__occupancy_t/ -/doc/asio/reference/execution__occupancy_t.html -/doc/asio/reference/execution__occupancy_t/is_applicable_property_v.html -/doc/asio/reference/execution__occupancy_t/is_preferable.html -/doc/asio/reference/execution__occupancy_t/is_requirable.html -/doc/asio/reference/execution__occupancy_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__outstanding_work.html -/doc/asio/reference/execution__outstanding_work_t/ -/doc/asio/reference/execution__outstanding_work_t.html -/doc/asio/reference/execution__outstanding_work_t/is_applicable_property_v.html -/doc/asio/reference/execution__outstanding_work_t/is_preferable.html -/doc/asio/reference/execution__outstanding_work_t/is_requirable.html -/doc/asio/reference/execution__outstanding_work_t/operator_eq__eq_.html -/doc/asio/reference/execution__outstanding_work_t/operator_not__eq_.html -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t/ -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t.html -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t/overload1.html -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t/overload2.html -/doc/asio/reference/execution__outstanding_work_t/outstanding_work_t/overload3.html -/doc/asio/reference/execution__outstanding_work_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__outstanding_work_t/tracked.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/ -/doc/asio/reference/execution__outstanding_work_t__tracked_t.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/is_applicable_property_v.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/is_preferable.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/is_requirable.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/tracked_t.html -/doc/asio/reference/execution__outstanding_work_t__tracked_t/value.html -/doc/asio/reference/execution__outstanding_work_t/untracked.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/ -/doc/asio/reference/execution__outstanding_work_t__untracked_t.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/is_applicable_property_v.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/is_preferable.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/is_requirable.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/untracked_t.html -/doc/asio/reference/execution__outstanding_work_t__untracked_t/value.html -/doc/asio/reference/execution__prefer_only/ -/doc/asio/reference/execution__prefer_only.html -/doc/asio/reference/execution__prefer_only/is_applicable_property_v.html -/doc/asio/reference/execution__prefer_only/is_preferable.html -/doc/asio/reference/execution__prefer_only/is_requirable.html -/doc/asio/reference/execution__prefer_only/polymorphic_query_result_type.html -/doc/asio/reference/execution__receiver_invocation_error/ -/doc/asio/reference/execution__receiver_invocation_error.html -/doc/asio/reference/execution__receiver_invocation_error/receiver_invocation_error.html -/doc/asio/reference/execution__relationship.html -/doc/asio/reference/execution__relationship_t/ -/doc/asio/reference/execution__relationship_t/continuation.html -/doc/asio/reference/execution__relationship_t__continuation_t/ -/doc/asio/reference/execution__relationship_t__continuation_t/continuation_t.html -/doc/asio/reference/execution__relationship_t__continuation_t.html -/doc/asio/reference/execution__relationship_t__continuation_t/is_applicable_property_v.html -/doc/asio/reference/execution__relationship_t__continuation_t/is_preferable.html -/doc/asio/reference/execution__relationship_t__continuation_t/is_requirable.html -/doc/asio/reference/execution__relationship_t__continuation_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__relationship_t__continuation_t/value.html -/doc/asio/reference/execution__relationship_t/fork.html -/doc/asio/reference/execution__relationship_t__fork_t/ -/doc/asio/reference/execution__relationship_t__fork_t/fork_t.html -/doc/asio/reference/execution__relationship_t__fork_t.html -/doc/asio/reference/execution__relationship_t__fork_t/is_applicable_property_v.html -/doc/asio/reference/execution__relationship_t__fork_t/is_preferable.html -/doc/asio/reference/execution__relationship_t__fork_t/is_requirable.html -/doc/asio/reference/execution__relationship_t__fork_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__relationship_t__fork_t/value.html -/doc/asio/reference/execution__relationship_t.html -/doc/asio/reference/execution__relationship_t/is_applicable_property_v.html -/doc/asio/reference/execution__relationship_t/is_preferable.html -/doc/asio/reference/execution__relationship_t/is_requirable.html -/doc/asio/reference/execution__relationship_t/operator_eq__eq_.html -/doc/asio/reference/execution__relationship_t/operator_not__eq_.html -/doc/asio/reference/execution__relationship_t/polymorphic_query_result_type.html -/doc/asio/reference/execution__relationship_t/relationship_t/ -/doc/asio/reference/execution__relationship_t/relationship_t.html -/doc/asio/reference/execution__relationship_t/relationship_t/overload1.html -/doc/asio/reference/execution__relationship_t/relationship_t/overload2.html -/doc/asio/reference/execution__relationship_t/relationship_t/overload3.html -/doc/asio/reference/execution__schedule.html -/doc/asio/reference/execution__sender_base.html -/doc/asio/reference/execution__sender_traits.html -/doc/asio/reference/execution__set_done.html -/doc/asio/reference/execution__set_error.html -/doc/asio/reference/execution__set_value.html -/doc/asio/reference/execution__start.html -/doc/asio/reference/execution__submit.html -/doc/asio/reference/executor/ -/doc/asio/reference/Executor1.html -/doc/asio/reference/executor_arg.html -/doc/asio/reference/executor_arg_t/ -/doc/asio/reference/executor_arg_t/executor_arg_t.html -/doc/asio/reference/executor_arg_t.html -/doc/asio/reference/executor_binder/ -/doc/asio/reference/executor_binder/argument_type.html -/doc/asio/reference/executor_binder/executor_binder/ -/doc/asio/reference/executor_binder/_executor_binder.html -/doc/asio/reference/executor_binder/executor_binder.html -/doc/asio/reference/executor_binder/executor_binder/overload1.html -/doc/asio/reference/executor_binder/executor_binder/overload2.html -/doc/asio/reference/executor_binder/executor_binder/overload3.html -/doc/asio/reference/executor_binder/executor_binder/overload4.html -/doc/asio/reference/executor_binder/executor_binder/overload5.html -/doc/asio/reference/executor_binder/executor_binder/overload6.html -/doc/asio/reference/executor_binder/executor_binder/overload7.html -/doc/asio/reference/executor_binder/executor_binder/overload8.html -/doc/asio/reference/executor_binder/executor_binder/overload9.html -/doc/asio/reference/executor_binder/executor_type.html -/doc/asio/reference/executor_binder/first_argument_type.html -/doc/asio/reference/executor_binder/get/ -/doc/asio/reference/executor_binder/get_executor.html -/doc/asio/reference/executor_binder/get.html -/doc/asio/reference/executor_binder/get/overload1.html -/doc/asio/reference/executor_binder/get/overload2.html -/doc/asio/reference/executor_binder.html -/doc/asio/reference/executor_binder/operator_lp__rp_/ -/doc/asio/reference/executor_binder/operator_lp__rp_.html -/doc/asio/reference/executor_binder/operator_lp__rp_/overload1.html -/doc/asio/reference/executor_binder/operator_lp__rp_/overload2.html -/doc/asio/reference/executor_binder/result_type.html -/doc/asio/reference/executor_binder/second_argument_type.html -/doc/asio/reference/executor_binder/target_type.html -/doc/asio/reference/executor/context.html -/doc/asio/reference/executor/defer.html -/doc/asio/reference/executor/dispatch.html -/doc/asio/reference/executor/executor/ -/doc/asio/reference/executor/_executor.html -/doc/asio/reference/executor/executor.html -/doc/asio/reference/executor/executor/overload1.html -/doc/asio/reference/executor/executor/overload2.html -/doc/asio/reference/executor/executor/overload3.html -/doc/asio/reference/executor/executor/overload4.html -/doc/asio/reference/executor/executor/overload5.html -/doc/asio/reference/executor/executor/overload6.html -/doc/asio/reference/executor.html -/doc/asio/reference/executor/on_work_finished.html -/doc/asio/reference/executor/on_work_started.html -/doc/asio/reference/executor/operator_eq_/ -/doc/asio/reference/executor/operator_eq__eq_.html -/doc/asio/reference/executor/operator_eq_.html -/doc/asio/reference/executor/operator_eq_/overload1.html -/doc/asio/reference/executor/operator_eq_/overload2.html -/doc/asio/reference/executor/operator_eq_/overload3.html -/doc/asio/reference/executor/operator_eq_/overload4.html -/doc/asio/reference/executor/operator_not__eq_.html -/doc/asio/reference/executor/operator_unspecified_bool_type.html -/doc/asio/reference/executor/post.html -/doc/asio/reference/executor/target/ -/doc/asio/reference/executor/target.html -/doc/asio/reference/executor/target/overload1.html -/doc/asio/reference/executor/target/overload2.html -/doc/asio/reference/executor/target_type.html -/doc/asio/reference/executor/unspecified_bool_true.html -/doc/asio/reference/executor/unspecified_bool_type.html -/doc/asio/reference/executor__unspecified_bool_type_t.html -/doc/asio/reference/executor_work_guard/ -/doc/asio/reference/executor_work_guard/executor_type.html -/doc/asio/reference/executor_work_guard/executor_work_guard/ -/doc/asio/reference/executor_work_guard/_executor_work_guard.html -/doc/asio/reference/executor_work_guard/executor_work_guard.html -/doc/asio/reference/executor_work_guard/executor_work_guard/overload1.html -/doc/asio/reference/executor_work_guard/executor_work_guard/overload2.html -/doc/asio/reference/executor_work_guard/executor_work_guard/overload3.html -/doc/asio/reference/executor_work_guard/get_executor.html -/doc/asio/reference/executor_work_guard.html -/doc/asio/reference/executor_work_guard/owns_work.html -/doc/asio/reference/executor_work_guard/reset.html -/doc/asio/reference/experimental__append.html -/doc/asio/reference/experimental__append_t/ -/doc/asio/reference/experimental__append_t/append_t.html -/doc/asio/reference/experimental__append_t.html -/doc/asio/reference/experimental__append_t/token_.html -/doc/asio/reference/experimental__append_t/values_.html -/doc/asio/reference/experimental__as_single.html -/doc/asio/reference/experimental__as_single_t/ -/doc/asio/reference/experimental__as_single_t/as_default_on.html -/doc/asio/reference/experimental__as_single_t/as_single_t/ -/doc/asio/reference/experimental__as_single_t/as_single_t.html -/doc/asio/reference/experimental__as_single_t/as_single_t/overload1.html -/doc/asio/reference/experimental__as_single_t/as_single_t/overload2.html -/doc/asio/reference/experimental__as_single_t__default_constructor_tag.html -/doc/asio/reference/experimental__as_single_t__executor_with_default/ -/doc/asio/reference/experimental__as_single_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/ -/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default.html -/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload1.html -/doc/asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload2.html -/doc/asio/reference/experimental__as_single_t__executor_with_default.html -/doc/asio/reference/experimental__as_single_t.html -/doc/asio/reference/experimental__as_single_t/token_.html -/doc/asio/reference/experimental__as_tuple.html -/doc/asio/reference/experimental__as_tuple_t/ -/doc/asio/reference/experimental__as_tuple_t/as_default_on.html -/doc/asio/reference/experimental__as_tuple_t/as_tuple_t/ -/doc/asio/reference/experimental__as_tuple_t/as_tuple_t.html -/doc/asio/reference/experimental__as_tuple_t/as_tuple_t/overload1.html -/doc/asio/reference/experimental__as_tuple_t/as_tuple_t/overload2.html -/doc/asio/reference/experimental__as_tuple_t__default_constructor_tag.html -/doc/asio/reference/experimental__as_tuple_t__executor_with_default/ -/doc/asio/reference/experimental__as_tuple_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/experimental__as_tuple_t__executor_with_default/executor_with_default.html -/doc/asio/reference/experimental__as_tuple_t__executor_with_default.html -/doc/asio/reference/experimental__as_tuple_t.html -/doc/asio/reference/experimental__as_tuple_t/token_.html -/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/ -/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_.html -/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload1.html -/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload2.html -/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload3.html -/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload4.html -/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload5.html -/doc/asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload6.html -/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/ -/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_.html -/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload1.html -/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload2.html -/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload3.html -/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload4.html -/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload5.html -/doc/asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload6.html -/doc/asio/reference/experimental__coro/ -/doc/asio/reference/experimental__coro/async_resume/ -/doc/asio/reference/experimental__coro/async_resume.html -/doc/asio/reference/experimental__coro/async_resume/overload1.html -/doc/asio/reference/experimental__coro/async_resume/overload2.html -/doc/asio/reference/experimental__coro__awaitable_t/ -/doc/asio/reference/experimental__coro__awaitable_t/await_ready.html -/doc/asio/reference/experimental__coro__awaitable_t/await_resume.html -/doc/asio/reference/experimental__coro__awaitable_t/await_suspend.html -/doc/asio/reference/experimental__coro__awaitable_t/coro_.html -/doc/asio/reference/experimental__coro__awaitable_t.html -/doc/asio/reference/experimental__coro/cancel.html -/doc/asio/reference/experimental__coro/coro/ -/doc/asio/reference/experimental__coro/_coro.html -/doc/asio/reference/experimental__coro/coro.html -/doc/asio/reference/experimental__coro/coro/overload1.html -/doc/asio/reference/experimental__coro/coro/overload2.html -/doc/asio/reference/experimental__coro/coro/overload3.html -/doc/asio/reference/experimental__coro/get_executor.html -/doc/asio/reference/experimental__coro.html -/doc/asio/reference/experimental__coro/is_noexcept.html -/doc/asio/reference/experimental__coro/is_open.html -/doc/asio/reference/experimental__coro/operator_bool.html -/doc/asio/reference/experimental__coro/operator_co_await.html -/doc/asio/reference/experimental__coro/operator_eq_/ -/doc/asio/reference/experimental__coro/operator_eq_.html -/doc/asio/reference/experimental__coro/operator_eq_/overload1.html -/doc/asio/reference/experimental__coro/operator_eq_/overload2.html -/doc/asio/reference/experimental__coro/operator_lp__rp_.html -/doc/asio/reference/experimental__deferred_async_operation.html -/doc/asio/reference/experimental__deferred_conditional/ -/doc/asio/reference/experimental__deferred_conditional/deferred_conditional.html -/doc/asio/reference/experimental__deferred_conditional.html -/doc/asio/reference/experimental__deferred_conditional/operator_lp__rp_.html -/doc/asio/reference/experimental__deferred_conditional/otherwise.html -/doc/asio/reference/experimental__deferred_conditional/then.html -/doc/asio/reference/experimental__deferred_function/ -/doc/asio/reference/experimental__deferred_function/decltype.html -/doc/asio/reference/experimental__deferred_function/deferred_function.html -/doc/asio/reference/experimental__deferred_function/function_.html -/doc/asio/reference/experimental__deferred_function.html -/doc/asio/reference/experimental__deferred.html -/doc/asio/reference/experimental__deferred_init_tag.html -/doc/asio/reference/experimental__deferred_noop/ -/doc/asio/reference/experimental__deferred_noop.html -/doc/asio/reference/experimental__deferred_noop/operator_lp__rp_.html -/doc/asio/reference/experimental__deferred_sequence/ -/doc/asio/reference/experimental__deferred_sequence/decltype.html -/doc/asio/reference/experimental__deferred_sequence/deferred_sequence.html -/doc/asio/reference/experimental__deferred_sequence.html -/doc/asio/reference/experimental__deferred_sequence__initiate/ -/doc/asio/reference/experimental__deferred_sequence__initiate.html -/doc/asio/reference/experimental__deferred_sequence__initiate/operator_lp__rp_.html -/doc/asio/reference/experimental__deferred_t/ -/doc/asio/reference/experimental__deferred_t/as_default_on.html -/doc/asio/reference/experimental__deferred_t/deferred_t.html -/doc/asio/reference/experimental__deferred_t__executor_with_default/ -/doc/asio/reference/experimental__deferred_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/experimental__deferred_t__executor_with_default/executor_with_default.html -/doc/asio/reference/experimental__deferred_t__executor_with_default.html -/doc/asio/reference/experimental__deferred_t.html -/doc/asio/reference/experimental__deferred_t/operator_lp__rp_/ -/doc/asio/reference/experimental__deferred_t/operator_lp__rp_.html -/doc/asio/reference/experimental__deferred_t/operator_lp__rp_/overload1.html -/doc/asio/reference/experimental__deferred_t/operator_lp__rp_/overload2.html -/doc/asio/reference/experimental__deferred_t/values.html -/doc/asio/reference/experimental__deferred_t/when.html -/doc/asio/reference/experimental__deferred_values.html -/doc/asio/reference/experimental__deferred_values__initiate/ -/doc/asio/reference/experimental__deferred_values__initiate.html -/doc/asio/reference/experimental__deferred_values__initiate/operator_lp__rp_.html -/doc/asio/reference/experimental__is_deferred.html -/doc/asio/reference/experimental__is_promise_c.html -/doc/asio/reference/experimental__is_promise.html -/doc/asio/reference/experimental__is_promise_lt__promise_lt__Ts_ellipsis__gt__gt_.html -/doc/asio/reference/experimental__is_promise_v.html -/doc/asio/reference/experimental__make_parallel_group.html -/doc/asio/reference/experimental__operator_pipe_.html -/doc/asio/reference/experimental__parallel_group/ -/doc/asio/reference/experimental__parallel_group/async_wait.html -/doc/asio/reference/experimental__parallel_group.html -/doc/asio/reference/experimental__parallel_group/parallel_group.html -/doc/asio/reference/experimental__parallel_group/signature.html -/doc/asio/reference/experimental__prepend.html -/doc/asio/reference/experimental__prepend_t/ -/doc/asio/reference/experimental__prepend_t.html -/doc/asio/reference/experimental__prepend_t/prepend_t.html -/doc/asio/reference/experimental__prepend_t/token_.html -/doc/asio/reference/experimental__prepend_t/values_.html -/doc/asio/reference/experimental__promise.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/ -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/ -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/overload1.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/overload2.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/overload3.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/overload4.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/async_wait.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/cancel.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/complete.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/get_executor.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise/ -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/_promise.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise/overload1.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise/overload2.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise/overload3.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/ -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/overload1.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/overload2.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/overload3.html -/doc/asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/overload4.html -/doc/asio/reference/experimental__promise_value_type.html -/doc/asio/reference/experimental__promise_value_type_lt__gt_.html -/doc/asio/reference/experimental__promise_value_type_lt__T__gt_.html -/doc/asio/reference/experimental__use_coro.html -/doc/asio/reference/experimental__use_coro_t.html -/doc/asio/reference/experimental__use_promise.html -/doc/asio/reference/experimental__use_promise_t.html -/doc/asio/reference/experimental__wait_for_all/ -/doc/asio/reference/experimental__wait_for_all.html -/doc/asio/reference/experimental__wait_for_all/operator_lp__rp_.html -/doc/asio/reference/experimental__wait_for_one/ -/doc/asio/reference/experimental__wait_for_one_error/ -/doc/asio/reference/experimental__wait_for_one_error.html -/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/ -/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_.html -/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload1.html -/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload2.html -/doc/asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload3.html -/doc/asio/reference/experimental__wait_for_one_error/wait_for_one_error.html -/doc/asio/reference/experimental__wait_for_one.html -/doc/asio/reference/experimental__wait_for_one/operator_lp__rp_.html -/doc/asio/reference/experimental__wait_for_one_success/ -/doc/asio/reference/experimental__wait_for_one_success.html -/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/ -/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_.html -/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload1.html -/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload2.html -/doc/asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload3.html -/doc/asio/reference/experimental__wait_for_one_success/wait_for_one_success.html -/doc/asio/reference/experimental__wait_for_one/wait_for_one.html -/doc/asio/reference/generic__basic_endpoint/ -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/ -/doc/asio/reference/generic__basic_endpoint/basic_endpoint.html -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/overload1.html -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/overload2.html -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/overload3.html -/doc/asio/reference/generic__basic_endpoint/basic_endpoint/overload4.html -/doc/asio/reference/generic__basic_endpoint/capacity.html -/doc/asio/reference/generic__basic_endpoint/data/ -/doc/asio/reference/generic__basic_endpoint/data.html -/doc/asio/reference/generic__basic_endpoint/data/overload1.html -/doc/asio/reference/generic__basic_endpoint/data/overload2.html -/doc/asio/reference/generic__basic_endpoint/data_type.html -/doc/asio/reference/generic__basic_endpoint.html -/doc/asio/reference/generic__basic_endpoint/operator_eq__eq_.html -/doc/asio/reference/generic__basic_endpoint/operator_eq_.html -/doc/asio/reference/generic__basic_endpoint/operator_gt__eq_.html -/doc/asio/reference/generic__basic_endpoint/operator_gt_.html -/doc/asio/reference/generic__basic_endpoint/operator_lt__eq_.html -/doc/asio/reference/generic__basic_endpoint/operator_lt_.html -/doc/asio/reference/generic__basic_endpoint/operator_not__eq_.html -/doc/asio/reference/generic__basic_endpoint/protocol.html -/doc/asio/reference/generic__basic_endpoint/protocol_type.html -/doc/asio/reference/generic__basic_endpoint/resize.html -/doc/asio/reference/generic__basic_endpoint/size.html -/doc/asio/reference/generic__datagram_protocol/ -/doc/asio/reference/generic__datagram_protocol/datagram_protocol/ -/doc/asio/reference/generic__datagram_protocol/datagram_protocol.html -/doc/asio/reference/generic__datagram_protocol/datagram_protocol/overload1.html -/doc/asio/reference/generic__datagram_protocol/datagram_protocol/overload2.html -/doc/asio/reference/generic__datagram_protocol/endpoint.html -/doc/asio/reference/generic__datagram_protocol/family.html -/doc/asio/reference/generic__datagram_protocol.html -/doc/asio/reference/generic__datagram_protocol/operator_eq__eq_.html -/doc/asio/reference/generic__datagram_protocol/operator_not__eq_.html -/doc/asio/reference/generic__datagram_protocol/protocol.html -/doc/asio/reference/generic__datagram_protocol/socket.html -/doc/asio/reference/generic__datagram_protocol/type.html -/doc/asio/reference/generic__raw_protocol/ -/doc/asio/reference/generic__raw_protocol/endpoint.html -/doc/asio/reference/generic__raw_protocol/family.html -/doc/asio/reference/generic__raw_protocol.html -/doc/asio/reference/generic__raw_protocol/operator_eq__eq_.html -/doc/asio/reference/generic__raw_protocol/operator_not__eq_.html -/doc/asio/reference/generic__raw_protocol/protocol.html -/doc/asio/reference/generic__raw_protocol/raw_protocol/ -/doc/asio/reference/generic__raw_protocol/raw_protocol.html -/doc/asio/reference/generic__raw_protocol/raw_protocol/overload1.html -/doc/asio/reference/generic__raw_protocol/raw_protocol/overload2.html -/doc/asio/reference/generic__raw_protocol/socket.html -/doc/asio/reference/generic__raw_protocol/type.html -/doc/asio/reference/generic__seq_packet_protocol/ -/doc/asio/reference/generic__seq_packet_protocol/endpoint.html -/doc/asio/reference/generic__seq_packet_protocol/family.html -/doc/asio/reference/generic__seq_packet_protocol.html -/doc/asio/reference/generic__seq_packet_protocol/operator_eq__eq_.html -/doc/asio/reference/generic__seq_packet_protocol/operator_not__eq_.html -/doc/asio/reference/generic__seq_packet_protocol/protocol.html -/doc/asio/reference/generic__seq_packet_protocol/seq_packet_protocol/ -/doc/asio/reference/generic__seq_packet_protocol/seq_packet_protocol.html -/doc/asio/reference/generic__seq_packet_protocol/seq_packet_protocol/overload1.html -/doc/asio/reference/generic__seq_packet_protocol/seq_packet_protocol/overload2.html -/doc/asio/reference/generic__seq_packet_protocol/socket.html -/doc/asio/reference/generic__seq_packet_protocol/type.html -/doc/asio/reference/generic__stream_protocol/ -/doc/asio/reference/generic__stream_protocol/endpoint.html -/doc/asio/reference/generic__stream_protocol/family.html -/doc/asio/reference/generic__stream_protocol.html -/doc/asio/reference/generic__stream_protocol/iostream.html -/doc/asio/reference/generic__stream_protocol/operator_eq__eq_.html -/doc/asio/reference/generic__stream_protocol/operator_not__eq_.html -/doc/asio/reference/generic__stream_protocol/protocol.html -/doc/asio/reference/generic__stream_protocol/socket.html -/doc/asio/reference/generic__stream_protocol/stream_protocol/ -/doc/asio/reference/generic__stream_protocol/stream_protocol.html -/doc/asio/reference/generic__stream_protocol/stream_protocol/overload1.html -/doc/asio/reference/generic__stream_protocol/stream_protocol/overload2.html -/doc/asio/reference/generic__stream_protocol/type.html -/doc/asio/reference/get_associated_allocator/ -/doc/asio/reference/get_associated_allocator.html -/doc/asio/reference/get_associated_allocator/overload1.html -/doc/asio/reference/get_associated_allocator/overload2.html -/doc/asio/reference/get_associated_cancellation_slot/ -/doc/asio/reference/get_associated_cancellation_slot.html -/doc/asio/reference/get_associated_cancellation_slot/overload1.html -/doc/asio/reference/get_associated_cancellation_slot/overload2.html -/doc/asio/reference/get_associated_executor/ -/doc/asio/reference/get_associated_executor.html -/doc/asio/reference/get_associated_executor/overload1.html -/doc/asio/reference/get_associated_executor/overload2.html -/doc/asio/reference/get_associated_executor/overload3.html -/doc/asio/reference/GettableSerialPortOption.html -/doc/asio/reference/GettableSocketOption.html -/doc/asio/reference/Handler.html -/doc/asio/reference/HandshakeHandler.html -/doc/asio/reference/high_resolution_timer.html -/doc/asio/reference.html -/doc/asio/reference/InternetProtocol.html -/doc/asio/reference/invalid_service_owner/ -/doc/asio/reference/invalid_service_owner.html -/doc/asio/reference/invalid_service_owner/invalid_service_owner.html -/doc/asio/reference/io_context/ -/doc/asio/reference/io_context/add_service.html -/doc/asio/reference/io_context__basic_executor_type/ -/doc/asio/reference/io_context__basic_executor_type/basic_executor_type/ -/doc/asio/reference/io_context__basic_executor_type/_basic_executor_type.html -/doc/asio/reference/io_context__basic_executor_type/basic_executor_type.html -/doc/asio/reference/io_context__basic_executor_type/basic_executor_type/overload1.html -/doc/asio/reference/io_context__basic_executor_type/basic_executor_type/overload2.html -/doc/asio/reference/io_context__basic_executor_type/context.html -/doc/asio/reference/io_context__basic_executor_type/defer.html -/doc/asio/reference/io_context__basic_executor_type/dispatch.html -/doc/asio/reference/io_context__basic_executor_type/execute.html -/doc/asio/reference/io_context__basic_executor_type.html -/doc/asio/reference/io_context__basic_executor_type/on_work_finished.html -/doc/asio/reference/io_context__basic_executor_type/on_work_started.html -/doc/asio/reference/io_context__basic_executor_type/operator_eq_/ -/doc/asio/reference/io_context__basic_executor_type/operator_eq__eq_.html -/doc/asio/reference/io_context__basic_executor_type/operator_eq_.html -/doc/asio/reference/io_context__basic_executor_type/operator_eq_/overload1.html -/doc/asio/reference/io_context__basic_executor_type/operator_eq_/overload2.html -/doc/asio/reference/io_context__basic_executor_type/operator_not__eq_.html -/doc/asio/reference/io_context__basic_executor_type/post.html -/doc/asio/reference/io_context__basic_executor_type/query/ -/doc/asio/reference/io_context__basic_executor_type/query.html -/doc/asio/reference/io_context__basic_executor_type/query/overload1.html -/doc/asio/reference/io_context__basic_executor_type/query/overload2.html -/doc/asio/reference/io_context__basic_executor_type/query/overload3.html -/doc/asio/reference/io_context__basic_executor_type/query/overload4.html -/doc/asio/reference/io_context__basic_executor_type/query/overload5.html -/doc/asio/reference/io_context__basic_executor_type/query__static/ -/doc/asio/reference/io_context__basic_executor_type/query__static.html -/doc/asio/reference/io_context__basic_executor_type/query__static/overload1.html -/doc/asio/reference/io_context__basic_executor_type/query__static/overload2.html -/doc/asio/reference/io_context__basic_executor_type/require/ -/doc/asio/reference/io_context__basic_executor_type/require.html -/doc/asio/reference/io_context__basic_executor_type/require/overload1.html -/doc/asio/reference/io_context__basic_executor_type/require/overload2.html -/doc/asio/reference/io_context__basic_executor_type/require/overload3.html -/doc/asio/reference/io_context__basic_executor_type/require/overload4.html -/doc/asio/reference/io_context__basic_executor_type/require/overload5.html -/doc/asio/reference/io_context__basic_executor_type/require/overload6.html -/doc/asio/reference/io_context__basic_executor_type/require/overload7.html -/doc/asio/reference/io_context__basic_executor_type/require/overload8.html -/doc/asio/reference/io_context__basic_executor_type/running_in_this_thread.html -/doc/asio/reference/io_context/count_type.html -/doc/asio/reference/io_context/destroy.html -/doc/asio/reference/io_context/dispatch.html -/doc/asio/reference/io_context/executor_type.html -/doc/asio/reference/io_context/fork_event.html -/doc/asio/reference/io_context/get_executor.html -/doc/asio/reference/io_context/has_service.html -/doc/asio/reference/io_context.html -/doc/asio/reference/io_context/io_context/ -/doc/asio/reference/io_context/_io_context.html -/doc/asio/reference/io_context/io_context.html -/doc/asio/reference/io_context/io_context/overload1.html -/doc/asio/reference/io_context/io_context/overload2.html -/doc/asio/reference/io_context/make_service.html -/doc/asio/reference/io_context/notify_fork.html -/doc/asio/reference/io_context/poll/ -/doc/asio/reference/io_context/poll.html -/doc/asio/reference/io_context/poll_one/ -/doc/asio/reference/io_context/poll_one.html -/doc/asio/reference/io_context/poll_one/overload1.html -/doc/asio/reference/io_context/poll_one/overload2.html -/doc/asio/reference/io_context/poll/overload1.html -/doc/asio/reference/io_context/poll/overload2.html -/doc/asio/reference/io_context/post.html -/doc/asio/reference/io_context/reset.html -/doc/asio/reference/io_context/restart.html -/doc/asio/reference/io_context/run/ -/doc/asio/reference/io_context/run_for.html -/doc/asio/reference/io_context/run.html -/doc/asio/reference/io_context/run_one/ -/doc/asio/reference/io_context/run_one_for.html -/doc/asio/reference/io_context/run_one.html -/doc/asio/reference/io_context/run_one/overload1.html -/doc/asio/reference/io_context/run_one/overload2.html -/doc/asio/reference/io_context/run_one_until.html -/doc/asio/reference/io_context/run/overload1.html -/doc/asio/reference/io_context/run/overload2.html -/doc/asio/reference/io_context/run_until.html -/doc/asio/reference/io_context__service/ -/doc/asio/reference/io_context__service/get_io_context.html -/doc/asio/reference/io_context__service.html -/doc/asio/reference/io_context__service/_service.html -/doc/asio/reference/io_context__service/service.html -/doc/asio/reference/io_context/shutdown.html -/doc/asio/reference/io_context/stop.html -/doc/asio/reference/io_context/stopped.html -/doc/asio/reference/io_context__strand/ -/doc/asio/reference/io_context__strand/context.html -/doc/asio/reference/io_context__strand/defer.html -/doc/asio/reference/io_context__strand/dispatch/ -/doc/asio/reference/io_context__strand/dispatch.html -/doc/asio/reference/io_context__strand/dispatch/overload1.html -/doc/asio/reference/io_context__strand/dispatch/overload2.html -/doc/asio/reference/io_context__strand.html -/doc/asio/reference/io_context__strand/on_work_finished.html -/doc/asio/reference/io_context__strand/on_work_started.html -/doc/asio/reference/io_context__strand/operator_eq__eq_.html -/doc/asio/reference/io_context__strand/operator_not__eq_.html -/doc/asio/reference/io_context__strand/post/ -/doc/asio/reference/io_context__strand/post.html -/doc/asio/reference/io_context__strand/post/overload1.html -/doc/asio/reference/io_context__strand/post/overload2.html -/doc/asio/reference/io_context__strand/running_in_this_thread.html -/doc/asio/reference/io_context__strand/_strand.html -/doc/asio/reference/io_context__strand/strand.html -/doc/asio/reference/io_context__strand/wrap.html -/doc/asio/reference/io_context/use_service/ -/doc/asio/reference/io_context/use_service.html -/doc/asio/reference/io_context/use_service/overload1.html -/doc/asio/reference/io_context/use_service/overload2.html -/doc/asio/reference/io_context__work/ -/doc/asio/reference/io_context__work/get_io_context.html -/doc/asio/reference/io_context__work.html -/doc/asio/reference/io_context__work/work/ -/doc/asio/reference/io_context__work/_work.html -/doc/asio/reference/io_context__work/work.html -/doc/asio/reference/io_context__work/work/overload1.html -/doc/asio/reference/io_context__work/work/overload2.html -/doc/asio/reference/io_context/wrap.html -/doc/asio/reference/IoControlCommand.html -/doc/asio/reference/IoObjectService.html -/doc/asio/reference/io_service.html -/doc/asio/reference/ip__address/ -/doc/asio/reference/ip__address/address/ -/doc/asio/reference/ip__address/address.html -/doc/asio/reference/ip__address/address/overload1.html -/doc/asio/reference/ip__address/address/overload2.html -/doc/asio/reference/ip__address/address/overload3.html -/doc/asio/reference/ip__address/address/overload4.html -/doc/asio/reference/ip__address/from_string/ -/doc/asio/reference/ip__address/from_string.html -/doc/asio/reference/ip__address/from_string/overload1.html -/doc/asio/reference/ip__address/from_string/overload2.html -/doc/asio/reference/ip__address/from_string/overload3.html -/doc/asio/reference/ip__address/from_string/overload4.html -/doc/asio/reference/ip__address.html -/doc/asio/reference/ip__address/is_loopback.html -/doc/asio/reference/ip__address/is_multicast.html -/doc/asio/reference/ip__address/is_unspecified.html -/doc/asio/reference/ip__address/is_v4.html -/doc/asio/reference/ip__address/is_v6.html -/doc/asio/reference/ip__address/make_address/ -/doc/asio/reference/ip__address/make_address.html -/doc/asio/reference/ip__address/make_address/overload1.html -/doc/asio/reference/ip__address/make_address/overload2.html -/doc/asio/reference/ip__address/make_address/overload3.html -/doc/asio/reference/ip__address/make_address/overload4.html -/doc/asio/reference/ip__address/make_address/overload5.html -/doc/asio/reference/ip__address/make_address/overload6.html -/doc/asio/reference/ip__address/operator_eq_/ -/doc/asio/reference/ip__address/operator_eq__eq_.html -/doc/asio/reference/ip__address/operator_eq_.html -/doc/asio/reference/ip__address/operator_eq_/overload1.html -/doc/asio/reference/ip__address/operator_eq_/overload2.html -/doc/asio/reference/ip__address/operator_eq_/overload3.html -/doc/asio/reference/ip__address/operator_gt__eq_.html -/doc/asio/reference/ip__address/operator_gt_.html -/doc/asio/reference/ip__address/operator_lt__eq_.html -/doc/asio/reference/ip__address/operator_lt_.html -/doc/asio/reference/ip__address/operator_lt__lt_.html -/doc/asio/reference/ip__address/operator_not__eq_.html -/doc/asio/reference/ip__address/to_string/ -/doc/asio/reference/ip__address/to_string.html -/doc/asio/reference/ip__address/to_string/overload1.html -/doc/asio/reference/ip__address/to_string/overload2.html -/doc/asio/reference/ip__address/to_v4.html -/doc/asio/reference/ip__address/to_v6.html -/doc/asio/reference/ip__address_v4/ -/doc/asio/reference/ip__address_v4/address_v4/ -/doc/asio/reference/ip__address_v4/address_v4.html -/doc/asio/reference/ip__address_v4/address_v4/overload1.html -/doc/asio/reference/ip__address_v4/address_v4/overload2.html -/doc/asio/reference/ip__address_v4/address_v4/overload3.html -/doc/asio/reference/ip__address_v4/address_v4/overload4.html -/doc/asio/reference/ip__address_v4/any.html -/doc/asio/reference/ip__address_v4/broadcast/ -/doc/asio/reference/ip__address_v4/broadcast.html -/doc/asio/reference/ip__address_v4/broadcast/overload1.html -/doc/asio/reference/ip__address_v4/broadcast/overload2.html -/doc/asio/reference/ip__address_v4/bytes_type.html -/doc/asio/reference/ip__address_v4/from_string/ -/doc/asio/reference/ip__address_v4/from_string.html -/doc/asio/reference/ip__address_v4/from_string/overload1.html -/doc/asio/reference/ip__address_v4/from_string/overload2.html -/doc/asio/reference/ip__address_v4/from_string/overload3.html -/doc/asio/reference/ip__address_v4/from_string/overload4.html -/doc/asio/reference/ip__address_v4.html -/doc/asio/reference/ip__address_v4/is_class_a.html -/doc/asio/reference/ip__address_v4/is_class_b.html -/doc/asio/reference/ip__address_v4/is_class_c.html -/doc/asio/reference/ip__address_v4/is_loopback.html -/doc/asio/reference/ip__address_v4/is_multicast.html -/doc/asio/reference/ip__address_v4/is_unspecified.html -/doc/asio/reference/ip__address_v4_iterator.html -/doc/asio/reference/ip__address_v4/loopback.html -/doc/asio/reference/ip__address_v4/make_address_v4/ -/doc/asio/reference/ip__address_v4/make_address_v4.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload1.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload2.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload3.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload4.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload5.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload6.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload7.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload8.html -/doc/asio/reference/ip__address_v4/make_address_v4/overload9.html -/doc/asio/reference/ip__address_v4/make_network_v4/ -/doc/asio/reference/ip__address_v4/make_network_v4.html -/doc/asio/reference/ip__address_v4/make_network_v4/overload1.html -/doc/asio/reference/ip__address_v4/make_network_v4/overload2.html -/doc/asio/reference/ip__address_v4/netmask.html -/doc/asio/reference/ip__address_v4/operator_eq__eq_.html -/doc/asio/reference/ip__address_v4/operator_eq_.html -/doc/asio/reference/ip__address_v4/operator_gt__eq_.html -/doc/asio/reference/ip__address_v4/operator_gt_.html -/doc/asio/reference/ip__address_v4/operator_lt__eq_.html -/doc/asio/reference/ip__address_v4/operator_lt_.html -/doc/asio/reference/ip__address_v4/operator_lt__lt_/ -/doc/asio/reference/ip__address_v4/operator_lt__lt_.html -/doc/asio/reference/ip__address_v4/operator_lt__lt_/overload1.html -/doc/asio/reference/ip__address_v4/operator_lt__lt_/overload2.html -/doc/asio/reference/ip__address_v4/operator_not__eq_.html -/doc/asio/reference/ip__address_v4_range.html -/doc/asio/reference/ip__address_v4/to_bytes.html -/doc/asio/reference/ip__address_v4/to_string/ -/doc/asio/reference/ip__address_v4/to_string.html -/doc/asio/reference/ip__address_v4/to_string/overload1.html -/doc/asio/reference/ip__address_v4/to_string/overload2.html -/doc/asio/reference/ip__address_v4/to_uint.html -/doc/asio/reference/ip__address_v4/to_ulong.html -/doc/asio/reference/ip__address_v4/uint_type.html -/doc/asio/reference/ip__address_v6/ -/doc/asio/reference/ip__address_v6/address_v6/ -/doc/asio/reference/ip__address_v6/address_v6.html -/doc/asio/reference/ip__address_v6/address_v6/overload1.html -/doc/asio/reference/ip__address_v6/address_v6/overload2.html -/doc/asio/reference/ip__address_v6/address_v6/overload3.html -/doc/asio/reference/ip__address_v6/any.html -/doc/asio/reference/ip__address_v6/bytes_type.html -/doc/asio/reference/ip__address_v6/from_string/ -/doc/asio/reference/ip__address_v6/from_string.html -/doc/asio/reference/ip__address_v6/from_string/overload1.html -/doc/asio/reference/ip__address_v6/from_string/overload2.html -/doc/asio/reference/ip__address_v6/from_string/overload3.html -/doc/asio/reference/ip__address_v6/from_string/overload4.html -/doc/asio/reference/ip__address_v6.html -/doc/asio/reference/ip__address_v6/is_link_local.html -/doc/asio/reference/ip__address_v6/is_loopback.html -/doc/asio/reference/ip__address_v6/is_multicast_global.html -/doc/asio/reference/ip__address_v6/is_multicast.html -/doc/asio/reference/ip__address_v6/is_multicast_link_local.html -/doc/asio/reference/ip__address_v6/is_multicast_node_local.html -/doc/asio/reference/ip__address_v6/is_multicast_org_local.html -/doc/asio/reference/ip__address_v6/is_multicast_site_local.html -/doc/asio/reference/ip__address_v6/is_site_local.html -/doc/asio/reference/ip__address_v6/is_unspecified.html -/doc/asio/reference/ip__address_v6/is_v4_compatible.html -/doc/asio/reference/ip__address_v6/is_v4_mapped.html -/doc/asio/reference/ip__address_v6_iterator.html -/doc/asio/reference/ip__address_v6/loopback.html -/doc/asio/reference/ip__address_v6/make_address_v6/ -/doc/asio/reference/ip__address_v6/make_address_v6.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload1.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload2.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload3.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload4.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload5.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload6.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload7.html -/doc/asio/reference/ip__address_v6/make_address_v6/overload8.html -/doc/asio/reference/ip__address_v6/make_network_v6.html -/doc/asio/reference/ip__address_v6/operator_eq__eq_.html -/doc/asio/reference/ip__address_v6/operator_eq_.html -/doc/asio/reference/ip__address_v6/operator_gt__eq_.html -/doc/asio/reference/ip__address_v6/operator_gt_.html -/doc/asio/reference/ip__address_v6/operator_lt__eq_.html -/doc/asio/reference/ip__address_v6/operator_lt_.html -/doc/asio/reference/ip__address_v6/operator_lt__lt_/ -/doc/asio/reference/ip__address_v6/operator_lt__lt_.html -/doc/asio/reference/ip__address_v6/operator_lt__lt_/overload1.html -/doc/asio/reference/ip__address_v6/operator_lt__lt_/overload2.html -/doc/asio/reference/ip__address_v6/operator_not__eq_.html -/doc/asio/reference/ip__address_v6_range.html -/doc/asio/reference/ip__address_v6/scope_id/ -/doc/asio/reference/ip__address_v6/scope_id.html -/doc/asio/reference/ip__address_v6/scope_id/overload1.html -/doc/asio/reference/ip__address_v6/scope_id/overload2.html -/doc/asio/reference/ip__address_v6/to_bytes.html -/doc/asio/reference/ip__address_v6/to_string/ -/doc/asio/reference/ip__address_v6/to_string.html -/doc/asio/reference/ip__address_v6/to_string/overload1.html -/doc/asio/reference/ip__address_v6/to_string/overload2.html -/doc/asio/reference/ip__address_v6/to_v4.html -/doc/asio/reference/ip__address_v6/v4_compatible.html -/doc/asio/reference/ip__address_v6/v4_mapped.html -/doc/asio/reference/ip__bad_address_cast/ -/doc/asio/reference/ip__bad_address_cast/_bad_address_cast.html -/doc/asio/reference/ip__bad_address_cast/bad_address_cast.html -/doc/asio/reference/ip__bad_address_cast.html -/doc/asio/reference/ip__bad_address_cast/what.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/difference_type.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/iterator_category.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_arrow_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_eq__eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_not__eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator__star_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/pointer.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/reference.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/value_type.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/difference_type.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/iterator_category.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_arrow_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_eq__eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_not__eq_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/ -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/overload1.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/overload2.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator__star_.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/pointer.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/reference.html -/doc/asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/value_type.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/ -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/ -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload1.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload2.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload3.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/begin.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/empty.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/end.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/find.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/iterator.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/operator_eq_.html -/doc/asio/reference/ip__basic_address_range_lt__address_v4__gt_/size.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/ -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/ -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload1.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload2.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload3.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/begin.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/empty.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/end.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/find.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/iterator.html -/doc/asio/reference/ip__basic_address_range_lt__address_v6__gt_/operator_eq_.html -/doc/asio/reference/ip__basic_endpoint/ -/doc/asio/reference/ip__basic_endpoint/address/ -/doc/asio/reference/ip__basic_endpoint/address.html -/doc/asio/reference/ip__basic_endpoint/address/overload1.html -/doc/asio/reference/ip__basic_endpoint/address/overload2.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/ -/doc/asio/reference/ip__basic_endpoint/basic_endpoint.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload1.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload2.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload3.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload4.html -/doc/asio/reference/ip__basic_endpoint/basic_endpoint/overload5.html -/doc/asio/reference/ip__basic_endpoint/capacity.html -/doc/asio/reference/ip__basic_endpoint/data/ -/doc/asio/reference/ip__basic_endpoint/data.html -/doc/asio/reference/ip__basic_endpoint/data/overload1.html -/doc/asio/reference/ip__basic_endpoint/data/overload2.html -/doc/asio/reference/ip__basic_endpoint/data_type.html -/doc/asio/reference/ip__basic_endpoint.html -/doc/asio/reference/ip__basic_endpoint/operator_eq_/ -/doc/asio/reference/ip__basic_endpoint/operator_eq__eq_.html -/doc/asio/reference/ip__basic_endpoint/operator_eq_.html -/doc/asio/reference/ip__basic_endpoint/operator_eq_/overload1.html -/doc/asio/reference/ip__basic_endpoint/operator_eq_/overload2.html -/doc/asio/reference/ip__basic_endpoint/operator_gt__eq_.html -/doc/asio/reference/ip__basic_endpoint/operator_gt_.html -/doc/asio/reference/ip__basic_endpoint/operator_lt__eq_.html -/doc/asio/reference/ip__basic_endpoint/operator_lt_.html -/doc/asio/reference/ip__basic_endpoint/operator_lt__lt_.html -/doc/asio/reference/ip__basic_endpoint/operator_not__eq_.html -/doc/asio/reference/ip__basic_endpoint/port/ -/doc/asio/reference/ip__basic_endpoint/port.html -/doc/asio/reference/ip__basic_endpoint/port/overload1.html -/doc/asio/reference/ip__basic_endpoint/port/overload2.html -/doc/asio/reference/ip__basic_endpoint/protocol.html -/doc/asio/reference/ip__basic_endpoint/protocol_type.html -/doc/asio/reference/ip__basic_endpoint/resize.html -/doc/asio/reference/ip__basic_endpoint/size.html -/doc/asio/reference/ip__basic_resolver/ -/doc/asio/reference/ip__basic_resolver/address_configured.html -/doc/asio/reference/ip__basic_resolver/all_matching.html -/doc/asio/reference/ip__basic_resolver/async_resolve/ -/doc/asio/reference/ip__basic_resolver/async_resolve.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload1.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload2.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload3.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload4.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload5.html -/doc/asio/reference/ip__basic_resolver/async_resolve/overload6.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/ -/doc/asio/reference/ip__basic_resolver/_basic_resolver.html -/doc/asio/reference/ip__basic_resolver/basic_resolver.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/overload1.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/overload2.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/overload3.html -/doc/asio/reference/ip__basic_resolver/basic_resolver/overload4.html -/doc/asio/reference/ip__basic_resolver/cancel.html -/doc/asio/reference/ip__basic_resolver/canonical_name.html -/doc/asio/reference/ip__basic_resolver/endpoint_type.html -/doc/asio/reference/ip__basic_resolver_entry/ -/doc/asio/reference/ip__basic_resolver_entry/basic_resolver_entry/ -/doc/asio/reference/ip__basic_resolver_entry/basic_resolver_entry.html -/doc/asio/reference/ip__basic_resolver_entry/basic_resolver_entry/overload1.html -/doc/asio/reference/ip__basic_resolver_entry/basic_resolver_entry/overload2.html -/doc/asio/reference/ip__basic_resolver_entry/endpoint.html -/doc/asio/reference/ip__basic_resolver_entry/endpoint_type.html -/doc/asio/reference/ip__basic_resolver_entry/host_name/ -/doc/asio/reference/ip__basic_resolver_entry/host_name.html -/doc/asio/reference/ip__basic_resolver_entry/host_name/overload1.html -/doc/asio/reference/ip__basic_resolver_entry/host_name/overload2.html -/doc/asio/reference/ip__basic_resolver_entry.html -/doc/asio/reference/ip__basic_resolver_entry/operator_endpoint_type.html -/doc/asio/reference/ip__basic_resolver_entry/protocol_type.html -/doc/asio/reference/ip__basic_resolver_entry/service_name/ -/doc/asio/reference/ip__basic_resolver_entry/service_name.html -/doc/asio/reference/ip__basic_resolver_entry/service_name/overload1.html -/doc/asio/reference/ip__basic_resolver_entry/service_name/overload2.html -/doc/asio/reference/ip__basic_resolver/executor_type.html -/doc/asio/reference/ip__basic_resolver/flags.html -/doc/asio/reference/ip__basic_resolver/get_executor.html -/doc/asio/reference/ip__basic_resolver.html -/doc/asio/reference/ip__basic_resolver_iterator/ -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/ -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator.html -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload1.html -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload2.html -/doc/asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload3.html -/doc/asio/reference/ip__basic_resolver_iterator/dereference.html -/doc/asio/reference/ip__basic_resolver_iterator/difference_type.html -/doc/asio/reference/ip__basic_resolver_iterator/equal.html -/doc/asio/reference/ip__basic_resolver/iterator.html -/doc/asio/reference/ip__basic_resolver_iterator.html -/doc/asio/reference/ip__basic_resolver_iterator/increment.html -/doc/asio/reference/ip__basic_resolver_iterator/index_.html -/doc/asio/reference/ip__basic_resolver_iterator/iterator_category.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_arrow_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq_/ -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq__eq_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq_/overload1.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_eq_/overload2.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_not__eq_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/ -/doc/asio/reference/ip__basic_resolver_iterator/operator_plus__plus_.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/overload1.html -/doc/asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/overload2.html -/doc/asio/reference/ip__basic_resolver_iterator/operator__star_.html -/doc/asio/reference/ip__basic_resolver_iterator/pointer.html -/doc/asio/reference/ip__basic_resolver_iterator/reference.html -/doc/asio/reference/ip__basic_resolver_iterator/values_.html -/doc/asio/reference/ip__basic_resolver_iterator/value_type.html -/doc/asio/reference/ip__basic_resolver/numeric_host.html -/doc/asio/reference/ip__basic_resolver/numeric_service.html -/doc/asio/reference/ip__basic_resolver/operator_eq_/ -/doc/asio/reference/ip__basic_resolver/operator_eq_.html -/doc/asio/reference/ip__basic_resolver/operator_eq_/overload1.html -/doc/asio/reference/ip__basic_resolver/operator_eq_/overload2.html -/doc/asio/reference/ip__basic_resolver/passive.html -/doc/asio/reference/ip__basic_resolver/protocol_type.html -/doc/asio/reference/ip__basic_resolver_query/ -/doc/asio/reference/ip__basic_resolver_query/address_configured.html -/doc/asio/reference/ip__basic_resolver_query/all_matching.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/ -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/overload1.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/overload2.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/overload3.html -/doc/asio/reference/ip__basic_resolver_query/basic_resolver_query/overload4.html -/doc/asio/reference/ip__basic_resolver_query/canonical_name.html -/doc/asio/reference/ip__basic_resolver_query/flags.html -/doc/asio/reference/ip__basic_resolver_query/hints.html -/doc/asio/reference/ip__basic_resolver_query/host_name.html -/doc/asio/reference/ip__basic_resolver/query.html -/doc/asio/reference/ip__basic_resolver_query.html -/doc/asio/reference/ip__basic_resolver_query/numeric_host.html -/doc/asio/reference/ip__basic_resolver_query/numeric_service.html -/doc/asio/reference/ip__basic_resolver_query/passive.html -/doc/asio/reference/ip__basic_resolver_query/protocol_type.html -/doc/asio/reference/ip__basic_resolver_query/service_name.html -/doc/asio/reference/ip__basic_resolver_query/v4_mapped.html -/doc/asio/reference/ip__basic_resolver__rebind_executor/ -/doc/asio/reference/ip__basic_resolver__rebind_executor.html -/doc/asio/reference/ip__basic_resolver__rebind_executor/other.html -/doc/asio/reference/ip__basic_resolver/resolve/ -/doc/asio/reference/ip__basic_resolver/resolve.html -/doc/asio/reference/ip__basic_resolver/resolve/overload10.html -/doc/asio/reference/ip__basic_resolver/resolve/overload11.html -/doc/asio/reference/ip__basic_resolver/resolve/overload12.html -/doc/asio/reference/ip__basic_resolver/resolve/overload1.html -/doc/asio/reference/ip__basic_resolver/resolve/overload2.html -/doc/asio/reference/ip__basic_resolver/resolve/overload3.html -/doc/asio/reference/ip__basic_resolver/resolve/overload4.html -/doc/asio/reference/ip__basic_resolver/resolve/overload5.html -/doc/asio/reference/ip__basic_resolver/resolve/overload6.html -/doc/asio/reference/ip__basic_resolver/resolve/overload7.html -/doc/asio/reference/ip__basic_resolver/resolve/overload8.html -/doc/asio/reference/ip__basic_resolver/resolve/overload9.html -/doc/asio/reference/ip__basic_resolver_results/ -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results/ -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results.html -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results/overload1.html -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results/overload2.html -/doc/asio/reference/ip__basic_resolver_results/basic_resolver_results/overload3.html -/doc/asio/reference/ip__basic_resolver_results/begin.html -/doc/asio/reference/ip__basic_resolver_results/cbegin.html -/doc/asio/reference/ip__basic_resolver_results/cend.html -/doc/asio/reference/ip__basic_resolver_results/const_iterator.html -/doc/asio/reference/ip__basic_resolver_results/const_reference.html -/doc/asio/reference/ip__basic_resolver_results/dereference.html -/doc/asio/reference/ip__basic_resolver_results/difference_type.html -/doc/asio/reference/ip__basic_resolver_results/empty.html -/doc/asio/reference/ip__basic_resolver_results/end.html -/doc/asio/reference/ip__basic_resolver_results/endpoint_type.html -/doc/asio/reference/ip__basic_resolver_results/equal.html -/doc/asio/reference/ip__basic_resolver_results.html -/doc/asio/reference/ip__basic_resolver_results/increment.html -/doc/asio/reference/ip__basic_resolver_results/index_.html -/doc/asio/reference/ip__basic_resolver_results/iterator_category.html -/doc/asio/reference/ip__basic_resolver_results/iterator.html -/doc/asio/reference/ip__basic_resolver_results/max_size.html -/doc/asio/reference/ip__basic_resolver_results/operator_arrow_.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq_/ -/doc/asio/reference/ip__basic_resolver_results/operator_eq__eq_/ -/doc/asio/reference/ip__basic_resolver_results/operator_eq__eq_.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq__eq_/overload1.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq__eq_/overload2.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq_.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq_/overload1.html -/doc/asio/reference/ip__basic_resolver_results/operator_eq_/overload2.html -/doc/asio/reference/ip__basic_resolver_results/operator_not__eq_/ -/doc/asio/reference/ip__basic_resolver_results/operator_not__eq_.html -/doc/asio/reference/ip__basic_resolver_results/operator_not__eq_/overload1.html -/doc/asio/reference/ip__basic_resolver_results/operator_not__eq_/overload2.html -/doc/asio/reference/ip__basic_resolver_results/operator_plus__plus_/ -/doc/asio/reference/ip__basic_resolver_results/operator_plus__plus_.html -/doc/asio/reference/ip__basic_resolver_results/operator_plus__plus_/overload1.html -/doc/asio/reference/ip__basic_resolver_results/operator_plus__plus_/overload2.html -/doc/asio/reference/ip__basic_resolver_results/operator__star_.html -/doc/asio/reference/ip__basic_resolver_results/pointer.html -/doc/asio/reference/ip__basic_resolver_results/protocol_type.html -/doc/asio/reference/ip__basic_resolver_results/reference.html -/doc/asio/reference/ip__basic_resolver_results/size.html -/doc/asio/reference/ip__basic_resolver_results/size_type.html -/doc/asio/reference/ip__basic_resolver_results/swap.html -/doc/asio/reference/ip__basic_resolver/results_type.html -/doc/asio/reference/ip__basic_resolver_results/values_.html -/doc/asio/reference/ip__basic_resolver_results/value_type.html -/doc/asio/reference/ip__basic_resolver/v4_mapped.html -/doc/asio/reference/ip__host_name/ -/doc/asio/reference/ip__host_name.html -/doc/asio/reference/ip__host_name/overload1.html -/doc/asio/reference/ip__host_name/overload2.html -/doc/asio/reference/ip__icmp/ -/doc/asio/reference/ip__icmp/endpoint.html -/doc/asio/reference/ip__icmp/family.html -/doc/asio/reference/ip__icmp.html -/doc/asio/reference/ip__icmp/operator_eq__eq_.html -/doc/asio/reference/ip__icmp/operator_not__eq_.html -/doc/asio/reference/ip__icmp/protocol.html -/doc/asio/reference/ip__icmp/resolver.html -/doc/asio/reference/ip__icmp/socket.html -/doc/asio/reference/ip__icmp/type.html -/doc/asio/reference/ip__icmp/v4.html -/doc/asio/reference/ip__icmp/v6.html -/doc/asio/reference/ip__multicast__enable_loopback.html -/doc/asio/reference/ip__multicast__hops.html -/doc/asio/reference/ip__multicast__join_group.html -/doc/asio/reference/ip__multicast__leave_group.html -/doc/asio/reference/ip__multicast__outbound_interface.html -/doc/asio/reference/ip__network_v4/ -/doc/asio/reference/ip__network_v4/address.html -/doc/asio/reference/ip__network_v4/broadcast.html -/doc/asio/reference/ip__network_v4/canonical.html -/doc/asio/reference/ip__network_v4/hosts.html -/doc/asio/reference/ip__network_v4.html -/doc/asio/reference/ip__network_v4/is_host.html -/doc/asio/reference/ip__network_v4/is_subnet_of.html -/doc/asio/reference/ip__network_v4/make_network_v4/ -/doc/asio/reference/ip__network_v4/make_network_v4.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload1.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload2.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload3.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload4.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload5.html -/doc/asio/reference/ip__network_v4/make_network_v4/overload6.html -/doc/asio/reference/ip__network_v4/netmask.html -/doc/asio/reference/ip__network_v4/network.html -/doc/asio/reference/ip__network_v4/network_v4/ -/doc/asio/reference/ip__network_v4/network_v4.html -/doc/asio/reference/ip__network_v4/network_v4/overload1.html -/doc/asio/reference/ip__network_v4/network_v4/overload2.html -/doc/asio/reference/ip__network_v4/network_v4/overload3.html -/doc/asio/reference/ip__network_v4/network_v4/overload4.html -/doc/asio/reference/ip__network_v4/operator_eq__eq_.html -/doc/asio/reference/ip__network_v4/operator_eq_.html -/doc/asio/reference/ip__network_v4/operator_not__eq_.html -/doc/asio/reference/ip__network_v4/prefix_length.html -/doc/asio/reference/ip__network_v4/to_string/ -/doc/asio/reference/ip__network_v4/to_string.html -/doc/asio/reference/ip__network_v4/to_string/overload1.html -/doc/asio/reference/ip__network_v4/to_string/overload2.html -/doc/asio/reference/ip__network_v6/ -/doc/asio/reference/ip__network_v6/address.html -/doc/asio/reference/ip__network_v6/canonical.html -/doc/asio/reference/ip__network_v6/hosts.html -/doc/asio/reference/ip__network_v6.html -/doc/asio/reference/ip__network_v6/is_host.html -/doc/asio/reference/ip__network_v6/is_subnet_of.html -/doc/asio/reference/ip__network_v6/make_network_v6/ -/doc/asio/reference/ip__network_v6/make_network_v6.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload1.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload2.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload3.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload4.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload5.html -/doc/asio/reference/ip__network_v6/make_network_v6/overload6.html -/doc/asio/reference/ip__network_v6/network.html -/doc/asio/reference/ip__network_v6/network_v6/ -/doc/asio/reference/ip__network_v6/network_v6.html -/doc/asio/reference/ip__network_v6/network_v6/overload1.html -/doc/asio/reference/ip__network_v6/network_v6/overload2.html -/doc/asio/reference/ip__network_v6/network_v6/overload3.html -/doc/asio/reference/ip__network_v6/operator_eq__eq_.html -/doc/asio/reference/ip__network_v6/operator_eq_.html -/doc/asio/reference/ip__network_v6/operator_not__eq_.html -/doc/asio/reference/ip__network_v6/prefix_length.html -/doc/asio/reference/ip__network_v6/to_string/ -/doc/asio/reference/ip__network_v6/to_string.html -/doc/asio/reference/ip__network_v6/to_string/overload1.html -/doc/asio/reference/ip__network_v6/to_string/overload2.html -/doc/asio/reference/ip__port_type.html -/doc/asio/reference/ip__resolver_base/ -/doc/asio/reference/ip__resolver_base/address_configured.html -/doc/asio/reference/ip__resolver_base/all_matching.html -/doc/asio/reference/ip__resolver_base/canonical_name.html -/doc/asio/reference/ip__resolver_base/flags.html -/doc/asio/reference/ip__resolver_base.html -/doc/asio/reference/ip__resolver_base/numeric_host.html -/doc/asio/reference/ip__resolver_base/numeric_service.html -/doc/asio/reference/ip__resolver_base/passive.html -/doc/asio/reference/ip__resolver_base/_resolver_base.html -/doc/asio/reference/ip__resolver_base/v4_mapped.html -/doc/asio/reference/ip__resolver_query_base/ -/doc/asio/reference/ip__resolver_query_base/address_configured.html -/doc/asio/reference/ip__resolver_query_base/all_matching.html -/doc/asio/reference/ip__resolver_query_base/canonical_name.html -/doc/asio/reference/ip__resolver_query_base/flags.html -/doc/asio/reference/ip__resolver_query_base.html -/doc/asio/reference/ip__resolver_query_base/numeric_host.html -/doc/asio/reference/ip__resolver_query_base/numeric_service.html -/doc/asio/reference/ip__resolver_query_base/passive.html -/doc/asio/reference/ip__resolver_query_base/_resolver_query_base.html -/doc/asio/reference/ip__resolver_query_base/v4_mapped.html -/doc/asio/reference/ip__scope_id_type.html -/doc/asio/reference/ip__tcp/ -/doc/asio/reference/ip__tcp/acceptor.html -/doc/asio/reference/ip__tcp/endpoint.html -/doc/asio/reference/ip__tcp/family.html -/doc/asio/reference/ip__tcp.html -/doc/asio/reference/ip__tcp/iostream.html -/doc/asio/reference/ip__tcp/no_delay.html -/doc/asio/reference/ip__tcp/operator_eq__eq_.html -/doc/asio/reference/ip__tcp/operator_not__eq_.html -/doc/asio/reference/ip__tcp/protocol.html -/doc/asio/reference/ip__tcp/resolver.html -/doc/asio/reference/ip__tcp/socket.html -/doc/asio/reference/ip__tcp/type.html -/doc/asio/reference/ip__tcp/v4.html -/doc/asio/reference/ip__tcp/v6.html -/doc/asio/reference/ip__udp/ -/doc/asio/reference/ip__udp/endpoint.html -/doc/asio/reference/ip__udp/family.html -/doc/asio/reference/ip__udp.html -/doc/asio/reference/ip__udp/operator_eq__eq_.html -/doc/asio/reference/ip__udp/operator_not__eq_.html -/doc/asio/reference/ip__udp/protocol.html -/doc/asio/reference/ip__udp/resolver.html -/doc/asio/reference/ip__udp/socket.html -/doc/asio/reference/ip__udp/type.html -/doc/asio/reference/ip__udp/v4.html -/doc/asio/reference/ip__udp/v6.html -/doc/asio/reference/ip__unicast__hops.html -/doc/asio/reference/ip__v4_mapped_t.html -/doc/asio/reference/ip__v6_only.html -/doc/asio/reference/is_applicable_property.html -/doc/asio/reference/is_const_buffer_sequence.html -/doc/asio/reference/is_dynamic_buffer.html -/doc/asio/reference/is_dynamic_buffer_v1.html -/doc/asio/reference/is_dynamic_buffer_v2.html -/doc/asio/reference/is_endpoint_sequence/ -/doc/asio/reference/is_endpoint_sequence.html -/doc/asio/reference/is_endpoint_sequence/value.html -/doc/asio/reference/is_executor.html -/doc/asio/reference/is_match_condition/ -/doc/asio/reference/is_match_condition.html -/doc/asio/reference/is_match_condition/value.html -/doc/asio/reference/is_mutable_buffer_sequence.html -/doc/asio/reference/is_nothrow_prefer.html -/doc/asio/reference/is_nothrow_query.html -/doc/asio/reference/is_nothrow_require_concept.html -/doc/asio/reference/is_nothrow_require.html -/doc/asio/reference/is_read_buffered/ -/doc/asio/reference/is_read_buffered.html -/doc/asio/reference/is_read_buffered/value.html -/doc/asio/reference/is_write_buffered/ -/doc/asio/reference/is_write_buffered.html -/doc/asio/reference/is_write_buffered/value.html -/doc/asio/reference/IteratorConnectHandler.html -/doc/asio/reference/LegacyCompletionHandler.html -/doc/asio/reference/local__basic_endpoint/ -/doc/asio/reference/local__basic_endpoint/basic_endpoint/ -/doc/asio/reference/local__basic_endpoint/basic_endpoint.html -/doc/asio/reference/local__basic_endpoint/basic_endpoint/overload1.html -/doc/asio/reference/local__basic_endpoint/basic_endpoint/overload2.html -/doc/asio/reference/local__basic_endpoint/basic_endpoint/overload3.html -/doc/asio/reference/local__basic_endpoint/basic_endpoint/overload4.html -/doc/asio/reference/local__basic_endpoint/capacity.html -/doc/asio/reference/local__basic_endpoint/data/ -/doc/asio/reference/local__basic_endpoint/data.html -/doc/asio/reference/local__basic_endpoint/data/overload1.html -/doc/asio/reference/local__basic_endpoint/data/overload2.html -/doc/asio/reference/local__basic_endpoint/data_type.html -/doc/asio/reference/local__basic_endpoint.html -/doc/asio/reference/local__basic_endpoint/operator_eq__eq_.html -/doc/asio/reference/local__basic_endpoint/operator_eq_.html -/doc/asio/reference/local__basic_endpoint/operator_gt__eq_.html -/doc/asio/reference/local__basic_endpoint/operator_gt_.html -/doc/asio/reference/local__basic_endpoint/operator_lt__eq_.html -/doc/asio/reference/local__basic_endpoint/operator_lt_.html -/doc/asio/reference/local__basic_endpoint/operator_lt__lt_.html -/doc/asio/reference/local__basic_endpoint/operator_not__eq_.html -/doc/asio/reference/local__basic_endpoint/path/ -/doc/asio/reference/local__basic_endpoint/path.html -/doc/asio/reference/local__basic_endpoint/path/overload1.html -/doc/asio/reference/local__basic_endpoint/path/overload2.html -/doc/asio/reference/local__basic_endpoint/path/overload3.html -/doc/asio/reference/local__basic_endpoint/protocol.html -/doc/asio/reference/local__basic_endpoint/protocol_type.html -/doc/asio/reference/local__basic_endpoint/resize.html -/doc/asio/reference/local__basic_endpoint/size.html -/doc/asio/reference/local__connect_pair/ -/doc/asio/reference/local__connect_pair.html -/doc/asio/reference/local__connect_pair/overload1.html -/doc/asio/reference/local__connect_pair/overload2.html -/doc/asio/reference/local__datagram_protocol/ -/doc/asio/reference/local__datagram_protocol/endpoint.html -/doc/asio/reference/local__datagram_protocol/family.html -/doc/asio/reference/local__datagram_protocol.html -/doc/asio/reference/local__datagram_protocol/protocol.html -/doc/asio/reference/local__datagram_protocol/socket.html -/doc/asio/reference/local__datagram_protocol/type.html -/doc/asio/reference/local__stream_protocol/ -/doc/asio/reference/local__stream_protocol/acceptor.html -/doc/asio/reference/local__stream_protocol/endpoint.html -/doc/asio/reference/local__stream_protocol/family.html -/doc/asio/reference/local__stream_protocol.html -/doc/asio/reference/local__stream_protocol/iostream.html -/doc/asio/reference/local__stream_protocol/protocol.html -/doc/asio/reference/local__stream_protocol/socket.html -/doc/asio/reference/local__stream_protocol/type.html -/doc/asio/reference/make_strand/ -/doc/asio/reference/make_strand.html -/doc/asio/reference/make_strand/overload1.html -/doc/asio/reference/make_strand/overload2.html -/doc/asio/reference/make_work_guard/ -/doc/asio/reference/make_work_guard.html -/doc/asio/reference/make_work_guard/overload1.html -/doc/asio/reference/make_work_guard/overload2.html -/doc/asio/reference/make_work_guard/overload3.html -/doc/asio/reference/make_work_guard/overload4.html -/doc/asio/reference/make_work_guard/overload5.html -/doc/asio/reference/MoveAcceptHandler.html -/doc/asio/reference/multiple_exceptions/ -/doc/asio/reference/multiple_exceptions/first_exception.html -/doc/asio/reference/multiple_exceptions.html -/doc/asio/reference/multiple_exceptions/multiple_exceptions.html -/doc/asio/reference/multiple_exceptions/what.html -/doc/asio/reference/mutable_buffer/ -/doc/asio/reference/mutable_buffer/data.html -/doc/asio/reference/mutable_buffer.html -/doc/asio/reference/mutable_buffer/mutable_buffer/ -/doc/asio/reference/mutable_buffer/mutable_buffer.html -/doc/asio/reference/mutable_buffer/mutable_buffer/overload1.html -/doc/asio/reference/mutable_buffer/mutable_buffer/overload2.html -/doc/asio/reference/mutable_buffer/operator_plus_/ -/doc/asio/reference/mutable_buffer/operator_plus__eq_.html -/doc/asio/reference/mutable_buffer/operator_plus_.html -/doc/asio/reference/mutable_buffer/operator_plus_/overload1.html -/doc/asio/reference/mutable_buffer/operator_plus_/overload2.html -/doc/asio/reference/mutable_buffers_1/ -/doc/asio/reference/mutable_buffers_1/begin.html -/doc/asio/reference/mutable_buffers_1/const_iterator.html -/doc/asio/reference/mutable_buffers_1/data.html -/doc/asio/reference/mutable_buffers_1/end.html -/doc/asio/reference/mutable_buffers_1.html -/doc/asio/reference/mutable_buffers_1/mutable_buffers_1/ -/doc/asio/reference/mutable_buffers_1/mutable_buffers_1.html -/doc/asio/reference/mutable_buffers_1/mutable_buffers_1/overload1.html -/doc/asio/reference/mutable_buffers_1/mutable_buffers_1/overload2.html -/doc/asio/reference/mutable_buffers_1/operator_plus_/ -/doc/asio/reference/mutable_buffers_1/operator_plus__eq_.html -/doc/asio/reference/mutable_buffers_1/operator_plus_.html -/doc/asio/reference/mutable_buffers_1/operator_plus_/overload1.html -/doc/asio/reference/mutable_buffers_1/operator_plus_/overload2.html -/doc/asio/reference/mutable_buffers_1/size.html -/doc/asio/reference/mutable_buffers_1/value_type.html -/doc/asio/reference/MutableBufferSequence.html -/doc/asio/reference/mutable_buffer/size.html -/doc/asio/reference/null_buffers/ -/doc/asio/reference/null_buffers/begin.html -/doc/asio/reference/null_buffers/const_iterator.html -/doc/asio/reference/null_buffers/end.html -/doc/asio/reference/null_buffers.html -/doc/asio/reference/null_buffers/value_type.html -/doc/asio/reference/OperationState.html -/doc/asio/reference/operator_lt__lt_.html -/doc/asio/reference/placeholders__bytes_transferred.html -/doc/asio/reference/placeholders__endpoint.html -/doc/asio/reference/placeholders__error.html -/doc/asio/reference/placeholders__iterator.html -/doc/asio/reference/placeholders__results.html -/doc/asio/reference/placeholders__signal_number.html -/doc/asio/reference/posix__basic_descriptor/ -/doc/asio/reference/posix__basic_descriptor/assign/ -/doc/asio/reference/posix__basic_descriptor/assign.html -/doc/asio/reference/posix__basic_descriptor/assign/overload1.html -/doc/asio/reference/posix__basic_descriptor/assign/overload2.html -/doc/asio/reference/posix__basic_descriptor/async_wait.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/ -/doc/asio/reference/posix__basic_descriptor/_basic_descriptor.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload1.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload2.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload3.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload4.html -/doc/asio/reference/posix__basic_descriptor/basic_descriptor/overload5.html -/doc/asio/reference/posix__basic_descriptor/bytes_readable.html -/doc/asio/reference/posix__basic_descriptor/cancel/ -/doc/asio/reference/posix__basic_descriptor/cancel.html -/doc/asio/reference/posix__basic_descriptor/cancel/overload1.html -/doc/asio/reference/posix__basic_descriptor/cancel/overload2.html -/doc/asio/reference/posix__basic_descriptor/close/ -/doc/asio/reference/posix__basic_descriptor/close.html -/doc/asio/reference/posix__basic_descriptor/close/overload1.html -/doc/asio/reference/posix__basic_descriptor/close/overload2.html -/doc/asio/reference/posix__basic_descriptor/executor_type.html -/doc/asio/reference/posix__basic_descriptor/get_executor.html -/doc/asio/reference/posix__basic_descriptor.html -/doc/asio/reference/posix__basic_descriptor/io_control/ -/doc/asio/reference/posix__basic_descriptor/io_control.html -/doc/asio/reference/posix__basic_descriptor/io_control/overload1.html -/doc/asio/reference/posix__basic_descriptor/io_control/overload2.html -/doc/asio/reference/posix__basic_descriptor/is_open.html -/doc/asio/reference/posix__basic_descriptor/lowest_layer/ -/doc/asio/reference/posix__basic_descriptor/lowest_layer.html -/doc/asio/reference/posix__basic_descriptor/lowest_layer/overload1.html -/doc/asio/reference/posix__basic_descriptor/lowest_layer/overload2.html -/doc/asio/reference/posix__basic_descriptor/lowest_layer_type.html -/doc/asio/reference/posix__basic_descriptor/native_handle.html -/doc/asio/reference/posix__basic_descriptor/native_handle_type.html -/doc/asio/reference/posix__basic_descriptor/native_non_blocking/ -/doc/asio/reference/posix__basic_descriptor/native_non_blocking.html -/doc/asio/reference/posix__basic_descriptor/native_non_blocking/overload1.html -/doc/asio/reference/posix__basic_descriptor/native_non_blocking/overload2.html -/doc/asio/reference/posix__basic_descriptor/native_non_blocking/overload3.html -/doc/asio/reference/posix__basic_descriptor/non_blocking/ -/doc/asio/reference/posix__basic_descriptor/non_blocking.html -/doc/asio/reference/posix__basic_descriptor/non_blocking/overload1.html -/doc/asio/reference/posix__basic_descriptor/non_blocking/overload2.html -/doc/asio/reference/posix__basic_descriptor/non_blocking/overload3.html -/doc/asio/reference/posix__basic_descriptor/operator_eq_.html -/doc/asio/reference/posix__basic_descriptor__rebind_executor/ -/doc/asio/reference/posix__basic_descriptor__rebind_executor.html -/doc/asio/reference/posix__basic_descriptor__rebind_executor/other.html -/doc/asio/reference/posix__basic_descriptor/release.html -/doc/asio/reference/posix__basic_descriptor/wait/ -/doc/asio/reference/posix__basic_descriptor/wait.html -/doc/asio/reference/posix__basic_descriptor/wait/overload1.html -/doc/asio/reference/posix__basic_descriptor/wait/overload2.html -/doc/asio/reference/posix__basic_descriptor/wait_type.html -/doc/asio/reference/posix__basic_stream_descriptor/ -/doc/asio/reference/posix__basic_stream_descriptor/assign/ -/doc/asio/reference/posix__basic_stream_descriptor/assign.html -/doc/asio/reference/posix__basic_stream_descriptor/assign/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/assign/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/async_read_some.html -/doc/asio/reference/posix__basic_stream_descriptor/async_wait.html -/doc/asio/reference/posix__basic_stream_descriptor/async_write_some.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/ -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload3.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload4.html -/doc/asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload5.html -/doc/asio/reference/posix__basic_stream_descriptor/bytes_readable.html -/doc/asio/reference/posix__basic_stream_descriptor/cancel/ -/doc/asio/reference/posix__basic_stream_descriptor/cancel.html -/doc/asio/reference/posix__basic_stream_descriptor/cancel/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/cancel/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/close/ -/doc/asio/reference/posix__basic_stream_descriptor/close.html -/doc/asio/reference/posix__basic_stream_descriptor/close/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/close/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/executor_type.html -/doc/asio/reference/posix__basic_stream_descriptor/get_executor.html -/doc/asio/reference/posix__basic_stream_descriptor.html -/doc/asio/reference/posix__basic_stream_descriptor/io_control/ -/doc/asio/reference/posix__basic_stream_descriptor/io_control.html -/doc/asio/reference/posix__basic_stream_descriptor/io_control/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/io_control/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/is_open.html -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer/ -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer.html -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/lowest_layer_type.html -/doc/asio/reference/posix__basic_stream_descriptor/native_handle.html -/doc/asio/reference/posix__basic_stream_descriptor/native_handle_type.html -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking/ -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking.html -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload3.html -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking/ -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking.html -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/non_blocking/overload3.html -/doc/asio/reference/posix__basic_stream_descriptor/operator_eq_.html -/doc/asio/reference/posix__basic_stream_descriptor/read_some/ -/doc/asio/reference/posix__basic_stream_descriptor/read_some.html -/doc/asio/reference/posix__basic_stream_descriptor/read_some/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/read_some/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor__rebind_executor/ -/doc/asio/reference/posix__basic_stream_descriptor__rebind_executor.html -/doc/asio/reference/posix__basic_stream_descriptor__rebind_executor/other.html -/doc/asio/reference/posix__basic_stream_descriptor/release.html -/doc/asio/reference/posix__basic_stream_descriptor/wait/ -/doc/asio/reference/posix__basic_stream_descriptor/wait.html -/doc/asio/reference/posix__basic_stream_descriptor/wait/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/wait/overload2.html -/doc/asio/reference/posix__basic_stream_descriptor/wait_type.html -/doc/asio/reference/posix__basic_stream_descriptor/write_some/ -/doc/asio/reference/posix__basic_stream_descriptor/write_some.html -/doc/asio/reference/posix__basic_stream_descriptor/write_some/overload1.html -/doc/asio/reference/posix__basic_stream_descriptor/write_some/overload2.html -/doc/asio/reference/posix__descriptor_base/ -/doc/asio/reference/posix__descriptor_base/bytes_readable.html -/doc/asio/reference/posix__descriptor_base/_descriptor_base.html -/doc/asio/reference/posix__descriptor_base.html -/doc/asio/reference/posix__descriptor_base/wait_type.html -/doc/asio/reference/posix__descriptor.html -/doc/asio/reference/posix__stream_descriptor.html -/doc/asio/reference/post/ -/doc/asio/reference/post.html -/doc/asio/reference/post/overload1.html -/doc/asio/reference/post/overload2.html -/doc/asio/reference/post/overload3.html -/doc/asio/reference/prefer.html -/doc/asio/reference/prefer_result/ -/doc/asio/reference/prefer_result.html -/doc/asio/reference/prefer_result/type.html -/doc/asio/reference/ProtoAllocator.html -/doc/asio/reference/Protocol.html -/doc/asio/reference/query.html -/doc/asio/reference/query_result/ -/doc/asio/reference/query_result.html -/doc/asio/reference/query_result/type.html -/doc/asio/reference/RangeConnectHandler.html -/doc/asio/reference/read/ -/doc/asio/reference/read_at/ -/doc/asio/reference/read_at.html -/doc/asio/reference/read_at/overload1.html -/doc/asio/reference/read_at/overload2.html -/doc/asio/reference/read_at/overload3.html -/doc/asio/reference/read_at/overload4.html -/doc/asio/reference/read_at/overload5.html -/doc/asio/reference/read_at/overload6.html -/doc/asio/reference/read_at/overload7.html -/doc/asio/reference/read_at/overload8.html -/doc/asio/reference/ReadHandler.html -/doc/asio/reference/read.html -/doc/asio/reference/read/overload10.html -/doc/asio/reference/read/overload11.html -/doc/asio/reference/read/overload12.html -/doc/asio/reference/read/overload13.html -/doc/asio/reference/read/overload14.html -/doc/asio/reference/read/overload15.html -/doc/asio/reference/read/overload16.html -/doc/asio/reference/read/overload1.html -/doc/asio/reference/read/overload2.html -/doc/asio/reference/read/overload3.html -/doc/asio/reference/read/overload4.html -/doc/asio/reference/read/overload5.html -/doc/asio/reference/read/overload6.html -/doc/asio/reference/read/overload7.html -/doc/asio/reference/read/overload8.html -/doc/asio/reference/read/overload9.html -/doc/asio/reference/read_until/ -/doc/asio/reference/read_until.html -/doc/asio/reference/read_until/overload10.html -/doc/asio/reference/read_until/overload11.html -/doc/asio/reference/read_until/overload12.html -/doc/asio/reference/read_until/overload13.html -/doc/asio/reference/read_until/overload14.html -/doc/asio/reference/read_until/overload15.html -/doc/asio/reference/read_until/overload16.html -/doc/asio/reference/read_until/overload17.html -/doc/asio/reference/read_until/overload18.html -/doc/asio/reference/read_until/overload19.html -/doc/asio/reference/read_until/overload1.html -/doc/asio/reference/read_until/overload20.html -/doc/asio/reference/read_until/overload21.html -/doc/asio/reference/read_until/overload22.html -/doc/asio/reference/read_until/overload23.html -/doc/asio/reference/read_until/overload24.html -/doc/asio/reference/read_until/overload2.html -/doc/asio/reference/read_until/overload3.html -/doc/asio/reference/read_until/overload4.html -/doc/asio/reference/read_until/overload5.html -/doc/asio/reference/read_until/overload6.html -/doc/asio/reference/read_until/overload7.html -/doc/asio/reference/read_until/overload8.html -/doc/asio/reference/read_until/overload9.html -/doc/asio/reference/read_write_operations.html -/doc/asio/reference/Receiver.html -/doc/asio/reference/redirect_error.html -/doc/asio/reference/redirect_error_t/ -/doc/asio/reference/redirect_error_t/ec_.html -/doc/asio/reference/redirect_error_t.html -/doc/asio/reference/redirect_error_t/redirect_error_t.html -/doc/asio/reference/redirect_error_t/token_.html -/doc/asio/reference/require_concept.html -/doc/asio/reference/require_concept_result/ -/doc/asio/reference/require_concept_result.html -/doc/asio/reference/require_concept_result/type.html -/doc/asio/reference/require.html -/doc/asio/reference/require_result/ -/doc/asio/reference/require_result.html -/doc/asio/reference/require_result/type.html -/doc/asio/reference/ResolveHandler.html -/doc/asio/reference/resolver_errc__try_again.html -/doc/asio/reference/Scheduler.html -/doc/asio/reference/Sender.html -/doc/asio/reference/serial_port_base/ -/doc/asio/reference/serial_port_base__baud_rate/ -/doc/asio/reference/serial_port_base__baud_rate/baud_rate.html -/doc/asio/reference/serial_port_base__baud_rate.html -/doc/asio/reference/serial_port_base__baud_rate/load.html -/doc/asio/reference/serial_port_base__baud_rate/store.html -/doc/asio/reference/serial_port_base__baud_rate/value.html -/doc/asio/reference/serial_port_base__character_size/ -/doc/asio/reference/serial_port_base__character_size/character_size.html -/doc/asio/reference/serial_port_base__character_size.html -/doc/asio/reference/serial_port_base__character_size/load.html -/doc/asio/reference/serial_port_base__character_size/store.html -/doc/asio/reference/serial_port_base__character_size/value.html -/doc/asio/reference/serial_port_base__flow_control/ -/doc/asio/reference/serial_port_base__flow_control/flow_control.html -/doc/asio/reference/serial_port_base__flow_control.html -/doc/asio/reference/serial_port_base__flow_control/load.html -/doc/asio/reference/serial_port_base__flow_control/store.html -/doc/asio/reference/serial_port_base__flow_control/type.html -/doc/asio/reference/serial_port_base__flow_control/value.html -/doc/asio/reference/serial_port_base.html -/doc/asio/reference/serial_port_base__parity/ -/doc/asio/reference/serial_port_base__parity.html -/doc/asio/reference/serial_port_base__parity/load.html -/doc/asio/reference/serial_port_base__parity/parity.html -/doc/asio/reference/serial_port_base__parity/store.html -/doc/asio/reference/serial_port_base__parity/type.html -/doc/asio/reference/serial_port_base__parity/value.html -/doc/asio/reference/serial_port_base/_serial_port_base.html -/doc/asio/reference/serial_port_base__stop_bits/ -/doc/asio/reference/serial_port_base__stop_bits.html -/doc/asio/reference/serial_port_base__stop_bits/load.html -/doc/asio/reference/serial_port_base__stop_bits/stop_bits.html -/doc/asio/reference/serial_port_base__stop_bits/store.html -/doc/asio/reference/serial_port_base__stop_bits/type.html -/doc/asio/reference/serial_port_base__stop_bits/value.html -/doc/asio/reference/serial_port.html -/doc/asio/reference/service_already_exists/ -/doc/asio/reference/service_already_exists.html -/doc/asio/reference/service_already_exists/service_already_exists.html -/doc/asio/reference/Service.html -/doc/asio/reference/SettableSerialPortOption.html -/doc/asio/reference/SettableSocketOption.html -/doc/asio/reference/ShutdownHandler.html -/doc/asio/reference/SignalHandler.html -/doc/asio/reference/signal_set.html -/doc/asio/reference/socket_base/ -/doc/asio/reference/socket_base/broadcast.html -/doc/asio/reference/socket_base/bytes_readable.html -/doc/asio/reference/socket_base/debug.html -/doc/asio/reference/socket_base/do_not_route.html -/doc/asio/reference/socket_base/enable_connection_aborted.html -/doc/asio/reference/socket_base.html -/doc/asio/reference/socket_base/keep_alive.html -/doc/asio/reference/socket_base/linger.html -/doc/asio/reference/socket_base/max_connections.html -/doc/asio/reference/socket_base/max_listen_connections.html -/doc/asio/reference/socket_base/message_do_not_route.html -/doc/asio/reference/socket_base/message_end_of_record.html -/doc/asio/reference/socket_base/message_flags.html -/doc/asio/reference/socket_base/message_out_of_band.html -/doc/asio/reference/socket_base/message_peek.html -/doc/asio/reference/socket_base/out_of_band_inline.html -/doc/asio/reference/socket_base/receive_buffer_size.html -/doc/asio/reference/socket_base/receive_low_watermark.html -/doc/asio/reference/socket_base/reuse_address.html -/doc/asio/reference/socket_base/send_buffer_size.html -/doc/asio/reference/socket_base/send_low_watermark.html -/doc/asio/reference/socket_base/shutdown_type.html -/doc/asio/reference/socket_base/_socket_base.html -/doc/asio/reference/socket_base/wait_type.html -/doc/asio/reference/spawn/ -/doc/asio/reference/spawn.html -/doc/asio/reference/spawn/overload1.html -/doc/asio/reference/spawn/overload2.html -/doc/asio/reference/spawn/overload3.html -/doc/asio/reference/spawn/overload4.html -/doc/asio/reference/spawn/overload5.html -/doc/asio/reference/spawn/overload6.html -/doc/asio/reference/spawn/overload7.html -/doc/asio/reference/ssl__context/ -/doc/asio/reference/ssl__context/add_certificate_authority/ -/doc/asio/reference/ssl__context/add_certificate_authority.html -/doc/asio/reference/ssl__context/add_certificate_authority/overload1.html -/doc/asio/reference/ssl__context/add_certificate_authority/overload2.html -/doc/asio/reference/ssl__context/add_verify_path/ -/doc/asio/reference/ssl__context/add_verify_path.html -/doc/asio/reference/ssl__context/add_verify_path/overload1.html -/doc/asio/reference/ssl__context/add_verify_path/overload2.html -/doc/asio/reference/ssl__context_base/ -/doc/asio/reference/ssl__context_base/_context_base.html -/doc/asio/reference/ssl__context_base/default_workarounds.html -/doc/asio/reference/ssl__context_base/file_format.html -/doc/asio/reference/ssl__context_base.html -/doc/asio/reference/ssl__context_base/method.html -/doc/asio/reference/ssl__context_base/no_compression.html -/doc/asio/reference/ssl__context_base/no_sslv2.html -/doc/asio/reference/ssl__context_base/no_sslv3.html -/doc/asio/reference/ssl__context_base/no_tlsv1_1.html -/doc/asio/reference/ssl__context_base/no_tlsv1_2.html -/doc/asio/reference/ssl__context_base/no_tlsv1_3.html -/doc/asio/reference/ssl__context_base/no_tlsv1.html -/doc/asio/reference/ssl__context_base/options.html -/doc/asio/reference/ssl__context_base/password_purpose.html -/doc/asio/reference/ssl__context_base/single_dh_use.html -/doc/asio/reference/ssl__context/clear_options/ -/doc/asio/reference/ssl__context/clear_options.html -/doc/asio/reference/ssl__context/clear_options/overload1.html -/doc/asio/reference/ssl__context/clear_options/overload2.html -/doc/asio/reference/ssl__context/context/ -/doc/asio/reference/ssl__context/_context.html -/doc/asio/reference/ssl__context/context.html -/doc/asio/reference/ssl__context/context/overload1.html -/doc/asio/reference/ssl__context/context/overload2.html -/doc/asio/reference/ssl__context/context/overload3.html -/doc/asio/reference/ssl__context/default_workarounds.html -/doc/asio/reference/ssl__context/file_format.html -/doc/asio/reference/ssl__context.html -/doc/asio/reference/ssl__context/load_verify_file/ -/doc/asio/reference/ssl__context/load_verify_file.html -/doc/asio/reference/ssl__context/load_verify_file/overload1.html -/doc/asio/reference/ssl__context/load_verify_file/overload2.html -/doc/asio/reference/ssl__context/method.html -/doc/asio/reference/ssl__context/native_handle.html -/doc/asio/reference/ssl__context/native_handle_type.html -/doc/asio/reference/ssl__context/no_compression.html -/doc/asio/reference/ssl__context/no_sslv2.html -/doc/asio/reference/ssl__context/no_sslv3.html -/doc/asio/reference/ssl__context/no_tlsv1_1.html -/doc/asio/reference/ssl__context/no_tlsv1_2.html -/doc/asio/reference/ssl__context/no_tlsv1_3.html -/doc/asio/reference/ssl__context/no_tlsv1.html -/doc/asio/reference/ssl__context/operator_eq_.html -/doc/asio/reference/ssl__context/options.html -/doc/asio/reference/ssl__context/password_purpose.html -/doc/asio/reference/ssl__context/set_default_verify_paths/ -/doc/asio/reference/ssl__context/set_default_verify_paths.html -/doc/asio/reference/ssl__context/set_default_verify_paths/overload1.html -/doc/asio/reference/ssl__context/set_default_verify_paths/overload2.html -/doc/asio/reference/ssl__context/set_options/ -/doc/asio/reference/ssl__context/set_options.html -/doc/asio/reference/ssl__context/set_options/overload1.html -/doc/asio/reference/ssl__context/set_options/overload2.html -/doc/asio/reference/ssl__context/set_password_callback/ -/doc/asio/reference/ssl__context/set_password_callback.html -/doc/asio/reference/ssl__context/set_password_callback/overload1.html -/doc/asio/reference/ssl__context/set_password_callback/overload2.html -/doc/asio/reference/ssl__context/set_verify_callback/ -/doc/asio/reference/ssl__context/set_verify_callback.html -/doc/asio/reference/ssl__context/set_verify_callback/overload1.html -/doc/asio/reference/ssl__context/set_verify_callback/overload2.html -/doc/asio/reference/ssl__context/set_verify_depth/ -/doc/asio/reference/ssl__context/set_verify_depth.html -/doc/asio/reference/ssl__context/set_verify_depth/overload1.html -/doc/asio/reference/ssl__context/set_verify_depth/overload2.html -/doc/asio/reference/ssl__context/set_verify_mode/ -/doc/asio/reference/ssl__context/set_verify_mode.html -/doc/asio/reference/ssl__context/set_verify_mode/overload1.html -/doc/asio/reference/ssl__context/set_verify_mode/overload2.html -/doc/asio/reference/ssl__context/single_dh_use.html -/doc/asio/reference/ssl__context/use_certificate/ -/doc/asio/reference/ssl__context/use_certificate_chain/ -/doc/asio/reference/ssl__context/use_certificate_chain_file/ -/doc/asio/reference/ssl__context/use_certificate_chain_file.html -/doc/asio/reference/ssl__context/use_certificate_chain_file/overload1.html -/doc/asio/reference/ssl__context/use_certificate_chain_file/overload2.html -/doc/asio/reference/ssl__context/use_certificate_chain.html -/doc/asio/reference/ssl__context/use_certificate_chain/overload1.html -/doc/asio/reference/ssl__context/use_certificate_chain/overload2.html -/doc/asio/reference/ssl__context/use_certificate_file/ -/doc/asio/reference/ssl__context/use_certificate_file.html -/doc/asio/reference/ssl__context/use_certificate_file/overload1.html -/doc/asio/reference/ssl__context/use_certificate_file/overload2.html -/doc/asio/reference/ssl__context/use_certificate.html -/doc/asio/reference/ssl__context/use_certificate/overload1.html -/doc/asio/reference/ssl__context/use_certificate/overload2.html -/doc/asio/reference/ssl__context/use_private_key/ -/doc/asio/reference/ssl__context/use_private_key_file/ -/doc/asio/reference/ssl__context/use_private_key_file.html -/doc/asio/reference/ssl__context/use_private_key_file/overload1.html -/doc/asio/reference/ssl__context/use_private_key_file/overload2.html -/doc/asio/reference/ssl__context/use_private_key.html -/doc/asio/reference/ssl__context/use_private_key/overload1.html -/doc/asio/reference/ssl__context/use_private_key/overload2.html -/doc/asio/reference/ssl__context/use_rsa_private_key/ -/doc/asio/reference/ssl__context/use_rsa_private_key_file/ -/doc/asio/reference/ssl__context/use_rsa_private_key_file.html -/doc/asio/reference/ssl__context/use_rsa_private_key_file/overload1.html -/doc/asio/reference/ssl__context/use_rsa_private_key_file/overload2.html -/doc/asio/reference/ssl__context/use_rsa_private_key.html -/doc/asio/reference/ssl__context/use_rsa_private_key/overload1.html -/doc/asio/reference/ssl__context/use_rsa_private_key/overload2.html -/doc/asio/reference/ssl__context/use_tmp_dh/ -/doc/asio/reference/ssl__context/use_tmp_dh_file/ -/doc/asio/reference/ssl__context/use_tmp_dh_file.html -/doc/asio/reference/ssl__context/use_tmp_dh_file/overload1.html -/doc/asio/reference/ssl__context/use_tmp_dh_file/overload2.html -/doc/asio/reference/ssl__context/use_tmp_dh.html -/doc/asio/reference/ssl__context/use_tmp_dh/overload1.html -/doc/asio/reference/ssl__context/use_tmp_dh/overload2.html -/doc/asio/reference/ssl__error__get_stream_category.html -/doc/asio/reference/ssl__error__make_error_code.html -/doc/asio/reference/ssl__error__stream_category.html -/doc/asio/reference/ssl__error__stream_errors.html -/doc/asio/reference/ssl__host_name_verification/ -/doc/asio/reference/ssl__host_name_verification/host_name_verification.html -/doc/asio/reference/ssl__host_name_verification.html -/doc/asio/reference/ssl__host_name_verification/operator_lp__rp_.html -/doc/asio/reference/ssl__host_name_verification/result_type.html -/doc/asio/reference/ssl__rfc2818_verification/ -/doc/asio/reference/ssl__rfc2818_verification.html -/doc/asio/reference/ssl__rfc2818_verification/operator_lp__rp_.html -/doc/asio/reference/ssl__rfc2818_verification/result_type.html -/doc/asio/reference/ssl__rfc2818_verification/rfc2818_verification.html -/doc/asio/reference/ssl__stream/ -/doc/asio/reference/ssl__stream/async_handshake/ -/doc/asio/reference/ssl__stream/async_handshake.html -/doc/asio/reference/ssl__stream/async_handshake/overload1.html -/doc/asio/reference/ssl__stream/async_handshake/overload2.html -/doc/asio/reference/ssl__stream/async_read_some.html -/doc/asio/reference/ssl__stream/async_shutdown.html -/doc/asio/reference/ssl__stream/async_write_some.html -/doc/asio/reference/ssl__stream_base/ -/doc/asio/reference/ssl__stream_base/handshake_type.html -/doc/asio/reference/ssl__stream_base.html -/doc/asio/reference/ssl__stream_base/_stream_base.html -/doc/asio/reference/ssl__stream/executor_type.html -/doc/asio/reference/ssl__stream/get_executor.html -/doc/asio/reference/ssl__stream/handshake/ -/doc/asio/reference/ssl__stream/handshake.html -/doc/asio/reference/ssl__stream/handshake/overload1.html -/doc/asio/reference/ssl__stream/handshake/overload2.html -/doc/asio/reference/ssl__stream/handshake/overload3.html -/doc/asio/reference/ssl__stream/handshake/overload4.html -/doc/asio/reference/ssl__stream/handshake_type.html -/doc/asio/reference/ssl__stream.html -/doc/asio/reference/ssl__stream__impl_struct/ -/doc/asio/reference/ssl__stream__impl_struct.html -/doc/asio/reference/ssl__stream__impl_struct/ssl.html -/doc/asio/reference/ssl__stream/lowest_layer/ -/doc/asio/reference/ssl__stream/lowest_layer.html -/doc/asio/reference/ssl__stream/lowest_layer/overload1.html -/doc/asio/reference/ssl__stream/lowest_layer/overload2.html -/doc/asio/reference/ssl__stream/lowest_layer_type.html -/doc/asio/reference/ssl__stream/native_handle.html -/doc/asio/reference/ssl__stream/native_handle_type.html -/doc/asio/reference/ssl__stream/next_layer/ -/doc/asio/reference/ssl__stream/next_layer.html -/doc/asio/reference/ssl__stream/next_layer/overload1.html -/doc/asio/reference/ssl__stream/next_layer/overload2.html -/doc/asio/reference/ssl__stream/next_layer_type.html -/doc/asio/reference/ssl__stream/operator_eq_.html -/doc/asio/reference/ssl__stream/read_some/ -/doc/asio/reference/ssl__stream/read_some.html -/doc/asio/reference/ssl__stream/read_some/overload1.html -/doc/asio/reference/ssl__stream/read_some/overload2.html -/doc/asio/reference/ssl__stream/set_verify_callback/ -/doc/asio/reference/ssl__stream/set_verify_callback.html -/doc/asio/reference/ssl__stream/set_verify_callback/overload1.html -/doc/asio/reference/ssl__stream/set_verify_callback/overload2.html -/doc/asio/reference/ssl__stream/set_verify_depth/ -/doc/asio/reference/ssl__stream/set_verify_depth.html -/doc/asio/reference/ssl__stream/set_verify_depth/overload1.html -/doc/asio/reference/ssl__stream/set_verify_depth/overload2.html -/doc/asio/reference/ssl__stream/set_verify_mode/ -/doc/asio/reference/ssl__stream/set_verify_mode.html -/doc/asio/reference/ssl__stream/set_verify_mode/overload1.html -/doc/asio/reference/ssl__stream/set_verify_mode/overload2.html -/doc/asio/reference/ssl__stream/shutdown/ -/doc/asio/reference/ssl__stream/shutdown.html -/doc/asio/reference/ssl__stream/shutdown/overload1.html -/doc/asio/reference/ssl__stream/shutdown/overload2.html -/doc/asio/reference/ssl__stream/stream/ -/doc/asio/reference/ssl__stream/_stream.html -/doc/asio/reference/ssl__stream/stream.html -/doc/asio/reference/ssl__stream/stream/overload1.html -/doc/asio/reference/ssl__stream/stream/overload2.html -/doc/asio/reference/ssl__stream/write_some/ -/doc/asio/reference/ssl__stream/write_some.html -/doc/asio/reference/ssl__stream/write_some/overload1.html -/doc/asio/reference/ssl__stream/write_some/overload2.html -/doc/asio/reference/ssl__verify_client_once.html -/doc/asio/reference/ssl__verify_context/ -/doc/asio/reference/ssl__verify_context.html -/doc/asio/reference/ssl__verify_context/native_handle.html -/doc/asio/reference/ssl__verify_context/native_handle_type.html -/doc/asio/reference/ssl__verify_context/verify_context.html -/doc/asio/reference/ssl__verify_fail_if_no_peer_cert.html -/doc/asio/reference/ssl__verify_mode.html -/doc/asio/reference/ssl__verify_none.html -/doc/asio/reference/ssl__verify_peer.html -/doc/asio/reference/static_thread_pool.html -/doc/asio/reference/std__move.html -/doc/asio/reference/steady_timer.html -/doc/asio/reference/strand/ -/doc/asio/reference/strand/context.html -/doc/asio/reference/strand/defer.html -/doc/asio/reference/strand/dispatch.html -/doc/asio/reference/strand/execute.html -/doc/asio/reference/strand/get_inner_executor.html -/doc/asio/reference/strand.html -/doc/asio/reference/strand/inner_executor_type.html -/doc/asio/reference/strand/on_work_finished.html -/doc/asio/reference/strand/on_work_started.html -/doc/asio/reference/strand/operator_eq_/ -/doc/asio/reference/strand/operator_eq__eq_.html -/doc/asio/reference/strand/operator_eq_.html -/doc/asio/reference/strand/operator_eq_/overload1.html -/doc/asio/reference/strand/operator_eq_/overload2.html -/doc/asio/reference/strand/operator_eq_/overload3.html -/doc/asio/reference/strand/operator_eq_/overload4.html -/doc/asio/reference/strand/operator_not__eq_.html -/doc/asio/reference/strand/post.html -/doc/asio/reference/strand/prefer.html -/doc/asio/reference/strand/query.html -/doc/asio/reference/strand/require.html -/doc/asio/reference/strand/running_in_this_thread.html -/doc/asio/reference/strand/strand/ -/doc/asio/reference/strand/_strand.html -/doc/asio/reference/strand/strand.html -/doc/asio/reference/strand/strand/overload1.html -/doc/asio/reference/strand/strand/overload2.html -/doc/asio/reference/strand/strand/overload3.html -/doc/asio/reference/strand/strand/overload4.html -/doc/asio/reference/strand/strand/overload5.html -/doc/asio/reference/strand/strand/overload6.html -/doc/asio/reference/streambuf.html -/doc/asio/reference/synchronous_socket_operations.html -/doc/asio/reference/SyncRandomAccessReadDevice.html -/doc/asio/reference/SyncRandomAccessWriteDevice.html -/doc/asio/reference/SyncReadStream.html -/doc/asio/reference/SyncWriteStream.html -/doc/asio/reference/system_category.html -/doc/asio/reference/system_context/ -/doc/asio/reference/system_context/add_service.html -/doc/asio/reference/system_context/destroy.html -/doc/asio/reference/system_context/executor_type.html -/doc/asio/reference/system_context/fork_event.html -/doc/asio/reference/system_context/get_executor.html -/doc/asio/reference/system_context/has_service.html -/doc/asio/reference/system_context.html -/doc/asio/reference/system_context/join.html -/doc/asio/reference/system_context/make_service.html -/doc/asio/reference/system_context/notify_fork.html -/doc/asio/reference/system_context/shutdown.html -/doc/asio/reference/system_context/stop.html -/doc/asio/reference/system_context/stopped.html -/doc/asio/reference/system_context/_system_context.html -/doc/asio/reference/system_context/use_service/ -/doc/asio/reference/system_context/use_service.html -/doc/asio/reference/system_context/use_service/overload1.html -/doc/asio/reference/system_context/use_service/overload2.html -/doc/asio/reference/system_error/ -/doc/asio/reference/system_error/code.html -/doc/asio/reference/system_error.html -/doc/asio/reference/system_error/operator_eq_.html -/doc/asio/reference/system_error/system_error/ -/doc/asio/reference/system_error/_system_error.html -/doc/asio/reference/system_error/system_error.html -/doc/asio/reference/system_error/system_error/overload1.html -/doc/asio/reference/system_error/system_error/overload2.html -/doc/asio/reference/system_error/system_error/overload3.html -/doc/asio/reference/system_error/what.html -/doc/asio/reference/system_executor.html -/doc/asio/reference/system_timer.html -/doc/asio/reference/this_coro__cancellation_state.html -/doc/asio/reference/this_coro__cancellation_state_t/ -/doc/asio/reference/this_coro__cancellation_state_t/cancellation_state_t.html -/doc/asio/reference/this_coro__cancellation_state_t.html -/doc/asio/reference/this_coro__executor.html -/doc/asio/reference/this_coro__executor_t/ -/doc/asio/reference/this_coro__executor_t/executor_t.html -/doc/asio/reference/this_coro__executor_t.html -/doc/asio/reference/this_coro__reset_cancellation_state/ -/doc/asio/reference/this_coro__reset_cancellation_state.html -/doc/asio/reference/this_coro__reset_cancellation_state/overload1.html -/doc/asio/reference/this_coro__reset_cancellation_state/overload2.html -/doc/asio/reference/this_coro__reset_cancellation_state/overload3.html -/doc/asio/reference/this_coro__throw_if_cancelled/ -/doc/asio/reference/this_coro__throw_if_cancelled.html -/doc/asio/reference/this_coro__throw_if_cancelled/overload1.html -/doc/asio/reference/this_coro__throw_if_cancelled/overload2.html -/doc/asio/reference/thread/ -/doc/asio/reference/thread.html -/doc/asio/reference/thread/join.html -/doc/asio/reference/thread_pool/ -/doc/asio/reference/thread_pool/add_service.html -/doc/asio/reference/thread_pool/attach.html -/doc/asio/reference/thread_pool__basic_executor_type/ -/doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/ -/doc/asio/reference/thread_pool__basic_executor_type/_basic_executor_type.html -/doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type.html -/doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/bulk_execute.html -/doc/asio/reference/thread_pool__basic_executor_type/connect.html -/doc/asio/reference/thread_pool__basic_executor_type/context.html -/doc/asio/reference/thread_pool__basic_executor_type/defer.html -/doc/asio/reference/thread_pool__basic_executor_type/dispatch.html -/doc/asio/reference/thread_pool__basic_executor_type/execute.html -/doc/asio/reference/thread_pool__basic_executor_type.html -/doc/asio/reference/thread_pool__basic_executor_type/index_type.html -/doc/asio/reference/thread_pool__basic_executor_type/on_work_finished.html -/doc/asio/reference/thread_pool__basic_executor_type/on_work_started.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq_/ -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq__eq_.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq_.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq_/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_eq_/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/operator_not__eq_.html -/doc/asio/reference/thread_pool__basic_executor_type/post.html -/doc/asio/reference/thread_pool__basic_executor_type/query/ -/doc/asio/reference/thread_pool__basic_executor_type/query.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload3.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload4.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload5.html -/doc/asio/reference/thread_pool__basic_executor_type/query/overload6.html -/doc/asio/reference/thread_pool__basic_executor_type/query__static/ -/doc/asio/reference/thread_pool__basic_executor_type/query__static.html -/doc/asio/reference/thread_pool__basic_executor_type/query__static/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/query__static/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/query__static/overload3.html -/doc/asio/reference/thread_pool__basic_executor_type/require/ -/doc/asio/reference/thread_pool__basic_executor_type/require.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload1.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload2.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload3.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload4.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload5.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload6.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload7.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload8.html -/doc/asio/reference/thread_pool__basic_executor_type/require/overload9.html -/doc/asio/reference/thread_pool__basic_executor_type/running_in_this_thread.html -/doc/asio/reference/thread_pool__basic_executor_type/schedule.html -/doc/asio/reference/thread_pool__basic_executor_type/sender_type.html -/doc/asio/reference/thread_pool__basic_executor_type/shape_type.html -/doc/asio/reference/thread_pool/destroy.html -/doc/asio/reference/thread_pool/executor.html -/doc/asio/reference/thread_pool/executor_type.html -/doc/asio/reference/thread_pool/fork_event.html -/doc/asio/reference/thread_pool/get_executor.html -/doc/asio/reference/thread_pool/has_service.html -/doc/asio/reference/thread_pool.html -/doc/asio/reference/thread_pool/join.html -/doc/asio/reference/thread_pool/make_service.html -/doc/asio/reference/thread_pool/notify_fork.html -/doc/asio/reference/thread_pool/scheduler.html -/doc/asio/reference/thread_pool/scheduler_type.html -/doc/asio/reference/thread_pool/shutdown.html -/doc/asio/reference/thread_pool/stop.html -/doc/asio/reference/thread_pool/thread_pool/ -/doc/asio/reference/thread_pool/_thread_pool.html -/doc/asio/reference/thread_pool/thread_pool.html -/doc/asio/reference/thread_pool/thread_pool/overload1.html -/doc/asio/reference/thread_pool/thread_pool/overload2.html -/doc/asio/reference/thread_pool/use_service/ -/doc/asio/reference/thread_pool/use_service.html -/doc/asio/reference/thread_pool/use_service/overload1.html -/doc/asio/reference/thread_pool/use_service/overload2.html -/doc/asio/reference/thread_pool/wait.html -/doc/asio/reference/thread/_thread.html -/doc/asio/reference/thread/thread.html -/doc/asio/reference/TimeTraits.html -/doc/asio/reference/time_traits_lt__ptime__gt_/ -/doc/asio/reference/time_traits_lt__ptime__gt_/add.html -/doc/asio/reference/time_traits_lt__ptime__gt_/duration_type.html -/doc/asio/reference/time_traits_lt__ptime__gt_.html -/doc/asio/reference/time_traits_lt__ptime__gt_/less_than.html -/doc/asio/reference/time_traits_lt__ptime__gt_/now.html -/doc/asio/reference/time_traits_lt__ptime__gt_/subtract.html -/doc/asio/reference/time_traits_lt__ptime__gt_/time_type.html -/doc/asio/reference/time_traits_lt__ptime__gt_/to_posix_duration.html -/doc/asio/reference/transfer_all.html -/doc/asio/reference/transfer_at_least.html -/doc/asio/reference/transfer_exactly.html -/doc/asio/reference/use_awaitable.html -/doc/asio/reference/use_awaitable_t/ -/doc/asio/reference/use_awaitable_t/as_default_on.html -/doc/asio/reference/use_awaitable_t__executor_with_default/ -/doc/asio/reference/use_awaitable_t__executor_with_default/default_completion_token_type.html -/doc/asio/reference/use_awaitable_t__executor_with_default/executor_with_default.html -/doc/asio/reference/use_awaitable_t__executor_with_default.html -/doc/asio/reference/use_awaitable_t.html -/doc/asio/reference/use_awaitable_t/use_awaitable_t/ -/doc/asio/reference/use_awaitable_t/use_awaitable_t.html -/doc/asio/reference/use_awaitable_t/use_awaitable_t/overload1.html -/doc/asio/reference/use_awaitable_t/use_awaitable_t/overload2.html -/doc/asio/reference/use_future.html -/doc/asio/reference/use_future_t/ -/doc/asio/reference/use_future_t/allocator_type.html -/doc/asio/reference/use_future_t/get_allocator.html -/doc/asio/reference/use_future_t.html -/doc/asio/reference/use_future_t/operator_lb__rb_.html -/doc/asio/reference/use_future_t/operator_lp__rp_.html -/doc/asio/reference/use_future_t/rebind.html -/doc/asio/reference/use_future_t/use_future_t/ -/doc/asio/reference/use_future_t/use_future_t.html -/doc/asio/reference/use_future_t/use_future_t/overload1.html -/doc/asio/reference/use_future_t/use_future_t/overload2.html -/doc/asio/reference/uses_executor.html -/doc/asio/reference/WaitHandler.html -/doc/asio/reference/wait_traits/ -/doc/asio/reference/WaitTraits.html -/doc/asio/reference/wait_traits.html -/doc/asio/reference/wait_traits/to_wait_duration/ -/doc/asio/reference/wait_traits/to_wait_duration.html -/doc/asio/reference/wait_traits/to_wait_duration/overload1.html -/doc/asio/reference/wait_traits/to_wait_duration/overload2.html -/doc/asio/reference/windows__basic_object_handle/ -/doc/asio/reference/windows__basic_object_handle/assign/ -/doc/asio/reference/windows__basic_object_handle/assign.html -/doc/asio/reference/windows__basic_object_handle/assign/overload1.html -/doc/asio/reference/windows__basic_object_handle/assign/overload2.html -/doc/asio/reference/windows__basic_object_handle/async_wait.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/ -/doc/asio/reference/windows__basic_object_handle/basic_object_handle.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload1.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload2.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload3.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload4.html -/doc/asio/reference/windows__basic_object_handle/basic_object_handle/overload5.html -/doc/asio/reference/windows__basic_object_handle/cancel/ -/doc/asio/reference/windows__basic_object_handle/cancel.html -/doc/asio/reference/windows__basic_object_handle/cancel/overload1.html -/doc/asio/reference/windows__basic_object_handle/cancel/overload2.html -/doc/asio/reference/windows__basic_object_handle/close/ -/doc/asio/reference/windows__basic_object_handle/close.html -/doc/asio/reference/windows__basic_object_handle/close/overload1.html -/doc/asio/reference/windows__basic_object_handle/close/overload2.html -/doc/asio/reference/windows__basic_object_handle/executor_type.html -/doc/asio/reference/windows__basic_object_handle/get_executor.html -/doc/asio/reference/windows__basic_object_handle.html -/doc/asio/reference/windows__basic_object_handle/is_open.html -/doc/asio/reference/windows__basic_object_handle/lowest_layer/ -/doc/asio/reference/windows__basic_object_handle/lowest_layer.html -/doc/asio/reference/windows__basic_object_handle/lowest_layer/overload1.html -/doc/asio/reference/windows__basic_object_handle/lowest_layer/overload2.html -/doc/asio/reference/windows__basic_object_handle/lowest_layer_type.html -/doc/asio/reference/windows__basic_object_handle/native_handle.html -/doc/asio/reference/windows__basic_object_handle/native_handle_type.html -/doc/asio/reference/windows__basic_object_handle/operator_eq_.html -/doc/asio/reference/windows__basic_object_handle__rebind_executor/ -/doc/asio/reference/windows__basic_object_handle__rebind_executor.html -/doc/asio/reference/windows__basic_object_handle__rebind_executor/other.html -/doc/asio/reference/windows__basic_object_handle/wait/ -/doc/asio/reference/windows__basic_object_handle/wait.html -/doc/asio/reference/windows__basic_object_handle/wait/overload1.html -/doc/asio/reference/windows__basic_object_handle/wait/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/ -/doc/asio/reference/windows__basic_overlapped_handle/assign/ -/doc/asio/reference/windows__basic_overlapped_handle/assign.html -/doc/asio/reference/windows__basic_overlapped_handle/assign/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/assign/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/ -/doc/asio/reference/windows__basic_overlapped_handle/_basic_overlapped_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload3.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload4.html -/doc/asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload5.html -/doc/asio/reference/windows__basic_overlapped_handle/cancel/ -/doc/asio/reference/windows__basic_overlapped_handle/cancel.html -/doc/asio/reference/windows__basic_overlapped_handle/cancel/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/cancel/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/close/ -/doc/asio/reference/windows__basic_overlapped_handle/close.html -/doc/asio/reference/windows__basic_overlapped_handle/close/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/close/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/executor_type.html -/doc/asio/reference/windows__basic_overlapped_handle/get_executor.html -/doc/asio/reference/windows__basic_overlapped_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/is_open.html -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer/ -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer.html -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer/overload1.html -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer/overload2.html -/doc/asio/reference/windows__basic_overlapped_handle/lowest_layer_type.html -/doc/asio/reference/windows__basic_overlapped_handle/native_handle.html -/doc/asio/reference/windows__basic_overlapped_handle/native_handle_type.html -/doc/asio/reference/windows__basic_overlapped_handle/operator_eq_.html -/doc/asio/reference/windows__basic_overlapped_handle__rebind_executor/ -/doc/asio/reference/windows__basic_overlapped_handle__rebind_executor.html -/doc/asio/reference/windows__basic_overlapped_handle__rebind_executor/other.html -/doc/asio/reference/windows__basic_random_access_handle/ -/doc/asio/reference/windows__basic_random_access_handle/assign/ -/doc/asio/reference/windows__basic_random_access_handle/assign.html -/doc/asio/reference/windows__basic_random_access_handle/assign/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/assign/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/async_read_some_at.html -/doc/asio/reference/windows__basic_random_access_handle/async_write_some_at.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/ -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload3.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload4.html -/doc/asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload5.html -/doc/asio/reference/windows__basic_random_access_handle/cancel/ -/doc/asio/reference/windows__basic_random_access_handle/cancel.html -/doc/asio/reference/windows__basic_random_access_handle/cancel/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/cancel/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/close/ -/doc/asio/reference/windows__basic_random_access_handle/close.html -/doc/asio/reference/windows__basic_random_access_handle/close/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/close/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/executor_type.html -/doc/asio/reference/windows__basic_random_access_handle/get_executor.html -/doc/asio/reference/windows__basic_random_access_handle.html -/doc/asio/reference/windows__basic_random_access_handle/is_open.html -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer/ -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer.html -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer/overload2.html -/doc/asio/reference/windows__basic_random_access_handle/lowest_layer_type.html -/doc/asio/reference/windows__basic_random_access_handle/native_handle.html -/doc/asio/reference/windows__basic_random_access_handle/native_handle_type.html -/doc/asio/reference/windows__basic_random_access_handle/operator_eq_.html -/doc/asio/reference/windows__basic_random_access_handle/read_some_at/ -/doc/asio/reference/windows__basic_random_access_handle/read_some_at.html -/doc/asio/reference/windows__basic_random_access_handle/read_some_at/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/read_some_at/overload2.html -/doc/asio/reference/windows__basic_random_access_handle__rebind_executor/ -/doc/asio/reference/windows__basic_random_access_handle__rebind_executor.html -/doc/asio/reference/windows__basic_random_access_handle__rebind_executor/other.html -/doc/asio/reference/windows__basic_random_access_handle/write_some_at/ -/doc/asio/reference/windows__basic_random_access_handle/write_some_at.html -/doc/asio/reference/windows__basic_random_access_handle/write_some_at/overload1.html -/doc/asio/reference/windows__basic_random_access_handle/write_some_at/overload2.html -/doc/asio/reference/windows__basic_stream_handle/ -/doc/asio/reference/windows__basic_stream_handle/assign/ -/doc/asio/reference/windows__basic_stream_handle/assign.html -/doc/asio/reference/windows__basic_stream_handle/assign/overload1.html -/doc/asio/reference/windows__basic_stream_handle/assign/overload2.html -/doc/asio/reference/windows__basic_stream_handle/async_read_some.html -/doc/asio/reference/windows__basic_stream_handle/async_write_some.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/ -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload1.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload2.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload3.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload4.html -/doc/asio/reference/windows__basic_stream_handle/basic_stream_handle/overload5.html -/doc/asio/reference/windows__basic_stream_handle/cancel/ -/doc/asio/reference/windows__basic_stream_handle/cancel.html -/doc/asio/reference/windows__basic_stream_handle/cancel/overload1.html -/doc/asio/reference/windows__basic_stream_handle/cancel/overload2.html -/doc/asio/reference/windows__basic_stream_handle/close/ -/doc/asio/reference/windows__basic_stream_handle/close.html -/doc/asio/reference/windows__basic_stream_handle/close/overload1.html -/doc/asio/reference/windows__basic_stream_handle/close/overload2.html -/doc/asio/reference/windows__basic_stream_handle/executor_type.html -/doc/asio/reference/windows__basic_stream_handle/get_executor.html -/doc/asio/reference/windows__basic_stream_handle.html -/doc/asio/reference/windows__basic_stream_handle/is_open.html -/doc/asio/reference/windows__basic_stream_handle/lowest_layer/ -/doc/asio/reference/windows__basic_stream_handle/lowest_layer.html -/doc/asio/reference/windows__basic_stream_handle/lowest_layer/overload1.html -/doc/asio/reference/windows__basic_stream_handle/lowest_layer/overload2.html -/doc/asio/reference/windows__basic_stream_handle/lowest_layer_type.html -/doc/asio/reference/windows__basic_stream_handle/native_handle.html -/doc/asio/reference/windows__basic_stream_handle/native_handle_type.html -/doc/asio/reference/windows__basic_stream_handle/operator_eq_.html -/doc/asio/reference/windows__basic_stream_handle/read_some/ -/doc/asio/reference/windows__basic_stream_handle/read_some.html -/doc/asio/reference/windows__basic_stream_handle/read_some/overload1.html -/doc/asio/reference/windows__basic_stream_handle/read_some/overload2.html -/doc/asio/reference/windows__basic_stream_handle__rebind_executor/ -/doc/asio/reference/windows__basic_stream_handle__rebind_executor.html -/doc/asio/reference/windows__basic_stream_handle__rebind_executor/other.html -/doc/asio/reference/windows__basic_stream_handle/write_some/ -/doc/asio/reference/windows__basic_stream_handle/write_some.html -/doc/asio/reference/windows__basic_stream_handle/write_some/overload1.html -/doc/asio/reference/windows__basic_stream_handle/write_some/overload2.html -/doc/asio/reference/windows__object_handle.html -/doc/asio/reference/windows__overlapped_handle.html -/doc/asio/reference/windows__overlapped_ptr/ -/doc/asio/reference/windows__overlapped_ptr/complete.html -/doc/asio/reference/windows__overlapped_ptr/get/ -/doc/asio/reference/windows__overlapped_ptr/get.html -/doc/asio/reference/windows__overlapped_ptr/get/overload1.html -/doc/asio/reference/windows__overlapped_ptr/get/overload2.html -/doc/asio/reference/windows__overlapped_ptr.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr/ -/doc/asio/reference/windows__overlapped_ptr/_overlapped_ptr.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr/overload1.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr/overload2.html -/doc/asio/reference/windows__overlapped_ptr/overlapped_ptr/overload3.html -/doc/asio/reference/windows__overlapped_ptr/release.html -/doc/asio/reference/windows__overlapped_ptr/reset/ -/doc/asio/reference/windows__overlapped_ptr/reset.html -/doc/asio/reference/windows__overlapped_ptr/reset/overload1.html -/doc/asio/reference/windows__overlapped_ptr/reset/overload2.html -/doc/asio/reference/windows__overlapped_ptr/reset/overload3.html -/doc/asio/reference/windows__random_access_handle.html -/doc/asio/reference/windows__stream_handle.html -/doc/asio/reference/write/ -/doc/asio/reference/write_at/ -/doc/asio/reference/write_at.html -/doc/asio/reference/write_at/overload1.html -/doc/asio/reference/write_at/overload2.html -/doc/asio/reference/write_at/overload3.html -/doc/asio/reference/write_at/overload4.html -/doc/asio/reference/write_at/overload5.html -/doc/asio/reference/write_at/overload6.html -/doc/asio/reference/write_at/overload7.html -/doc/asio/reference/write_at/overload8.html -/doc/asio/reference/WriteHandler.html -/doc/asio/reference/write.html -/doc/asio/reference/write/overload10.html -/doc/asio/reference/write/overload11.html -/doc/asio/reference/write/overload12.html -/doc/asio/reference/write/overload13.html -/doc/asio/reference/write/overload14.html -/doc/asio/reference/write/overload15.html -/doc/asio/reference/write/overload16.html -/doc/asio/reference/write/overload1.html -/doc/asio/reference/write/overload2.html -/doc/asio/reference/write/overload3.html -/doc/asio/reference/write/overload4.html -/doc/asio/reference/write/overload5.html -/doc/asio/reference/write/overload6.html -/doc/asio/reference/write/overload7.html -/doc/asio/reference/write/overload8.html -/doc/asio/reference/write/overload9.html -/doc/asio/reference/yield_context.html -/doc/asio/std_executors.html -/doc/asio/tutorial/ -/doc/asio/tutorial/boost_bind.html -/doc/asio/tutorial.html -/doc/asio/tutorial/tutdaytime1/ -/doc/asio/tutorial/tutdaytime1.html -/doc/asio/tutorial/tutdaytime1/src.html -/doc/asio/tutorial/tutdaytime2/ -/doc/asio/tutorial/tutdaytime2.html -/doc/asio/tutorial/tutdaytime2/src.html -/doc/asio/tutorial/tutdaytime3/ -/doc/asio/tutorial/tutdaytime3.html -/doc/asio/tutorial/tutdaytime3/src.html -/doc/asio/tutorial/tutdaytime4/ -/doc/asio/tutorial/tutdaytime4.html -/doc/asio/tutorial/tutdaytime4/src.html -/doc/asio/tutorial/tutdaytime5/ -/doc/asio/tutorial/tutdaytime5.html -/doc/asio/tutorial/tutdaytime5/src.html -/doc/asio/tutorial/tutdaytime6/ -/doc/asio/tutorial/tutdaytime6.html -/doc/asio/tutorial/tutdaytime6/src.html -/doc/asio/tutorial/tutdaytime7/ -/doc/asio/tutorial/tutdaytime7.html -/doc/asio/tutorial/tutdaytime7/src.html -/doc/asio/tutorial/tuttimer1/ -/doc/asio/tutorial/tuttimer1.html -/doc/asio/tutorial/tuttimer1/src.html -/doc/asio/tutorial/tuttimer2/ -/doc/asio/tutorial/tuttimer2.html -/doc/asio/tutorial/tuttimer2/src.html -/doc/asio/tutorial/tuttimer3/ -/doc/asio/tutorial/tuttimer3.html -/doc/asio/tutorial/tuttimer3/src.html -/doc/asio/tutorial/tuttimer4/ -/doc/asio/tutorial/tuttimer4.html -/doc/asio/tutorial/tuttimer4/src.html -/doc/asio/tutorial/tuttimer5/ -/doc/asio/tutorial/tuttimer5.html -/doc/asio/tutorial/tuttimer5/src.html -/doc/asio/using.html -/doc/async_op1.png -/doc/async_op2.png -/doc/blank.png -/doc/boostbook.css -/doc/caution.png -/doc/draft.png -/doc/examples/ -/doc/examples/diffs/ -/doc/examples/diffs/allocation/ -/doc/examples/diffs/allocation/server.cpp.html -/doc/examples/diffs/buffers/ -/doc/examples/diffs/buffers/reference_counted.cpp.html -/doc/examples/diffs/chat/ -/doc/examples/diffs/chat/chat_client.cpp.html -/doc/examples/diffs/chat/chat_message.hpp.html -/doc/examples/diffs/chat/chat_server.cpp.html -/doc/examples/diffs/echo/ -/doc/examples/diffs/echo/async_tcp_echo_server.cpp.html -/doc/examples/diffs/echo/async_udp_echo_server.cpp.html -/doc/examples/diffs/echo/blocking_tcp_echo_client.cpp.html -/doc/examples/diffs/echo/blocking_tcp_echo_server.cpp.html -/doc/examples/diffs/echo/blocking_udp_echo_client.cpp.html -/doc/examples/diffs/echo/blocking_udp_echo_server.cpp.html -/doc/examples/diffs/executors/ -/doc/examples/diffs/executors/actor.cpp.html -/doc/examples/diffs/executors/bank_account_1.cpp.html -/doc/examples/diffs/executors/bank_account_2.cpp.html -/doc/examples/diffs/executors/fork_join.cpp.html -/doc/examples/diffs/executors/pipeline.cpp.html -/doc/examples/diffs/executors/priority_scheduler.cpp.html -/doc/examples/diffs/fork/ -/doc/examples/diffs/fork/daemon.cpp.html -/doc/examples/diffs/fork/process_per_connection.cpp.html -/doc/examples/diffs/futures/ -/doc/examples/diffs/futures/daytime_client.cpp.html -/doc/examples/diffs/handler_tracking/ -/doc/examples/diffs/handler_tracking/async_tcp_echo_server.cpp.html -/doc/examples/diffs/handler_tracking/custom_tracking.hpp.html -/doc/examples/diffs/http/ -/doc/examples/diffs/http/server/ -/doc/examples/diffs/http/server/connection.cpp.html -/doc/examples/diffs/http/server/connection.hpp.html -/doc/examples/diffs/http/server/connection_manager.cpp.html -/doc/examples/diffs/http/server/connection_manager.hpp.html -/doc/examples/diffs/http/server/header.hpp.html -/doc/examples/diffs/http/server/main.cpp.html -/doc/examples/diffs/http/server/mime_types.cpp.html -/doc/examples/diffs/http/server/mime_types.hpp.html -/doc/examples/diffs/http/server/reply.cpp.html -/doc/examples/diffs/http/server/reply.hpp.html -/doc/examples/diffs/http/server/request_handler.cpp.html -/doc/examples/diffs/http/server/request_handler.hpp.html -/doc/examples/diffs/http/server/request.hpp.html -/doc/examples/diffs/http/server/request_parser.cpp.html -/doc/examples/diffs/http/server/request_parser.hpp.html -/doc/examples/diffs/http/server/server.cpp.html -/doc/examples/diffs/http/server/server.hpp.html -/doc/examples/diffs/invocation/ -/doc/examples/diffs/invocation/prioritised_handlers.cpp.html -/doc/examples/diffs/iostreams/ -/doc/examples/diffs/iostreams/http_client.cpp.html -/doc/examples/diffs/local/ -/doc/examples/diffs/local/connect_pair.cpp.html -/doc/examples/diffs/local/iostream_client.cpp.html -/doc/examples/diffs/local/stream_client.cpp.html -/doc/examples/diffs/local/stream_server.cpp.html -/doc/examples/diffs/multicast/ -/doc/examples/diffs/multicast/receiver.cpp.html -/doc/examples/diffs/multicast/sender.cpp.html -/doc/examples/diffs/nonblocking/ -/doc/examples/diffs/nonblocking/third_party_lib.cpp.html -/doc/examples/diffs/operations/ -/doc/examples/diffs/operations/composed_1.cpp.html -/doc/examples/diffs/operations/composed_2.cpp.html -/doc/examples/diffs/operations/composed_3.cpp.html -/doc/examples/diffs/operations/composed_4.cpp.html -/doc/examples/diffs/operations/composed_5.cpp.html -/doc/examples/diffs/operations/composed_6.cpp.html -/doc/examples/diffs/operations/composed_7.cpp.html -/doc/examples/diffs/operations/composed_8.cpp.html -/doc/examples/diffs/socks4/ -/doc/examples/diffs/socks4/socks4.hpp.html -/doc/examples/diffs/socks4/sync_client.cpp.html -/doc/examples/diffs/spawn/ -/doc/examples/diffs/spawn/echo_server.cpp.html -/doc/examples/diffs/spawn/parallel_grep.cpp.html -/doc/examples/diffs/ssl/ -/doc/examples/diffs/ssl/client.cpp.html -/doc/examples/diffs/ssl/server.cpp.html -/doc/examples/diffs/timeouts/ -/doc/examples/diffs/timeouts/async_tcp_client.cpp.html -/doc/examples/diffs/timeouts/blocking_tcp_client.cpp.html -/doc/examples/diffs/timeouts/blocking_token_tcp_client.cpp.html -/doc/examples/diffs/timeouts/blocking_udp_client.cpp.html -/doc/examples/diffs/timeouts/server.cpp.html -/doc/examples/diffs/timers/ -/doc/examples/diffs/timers/time_t_timer.cpp.html -/doc/home.png -/doc/important.png -/doc/index.html -/doc/next_disabled.png -/doc/next.png -/doc/note.png -/doc/prev_disabled.png -/doc/prev.png -/doc/proactor.png -/doc/standalone_HTML.manifest -/doc/sync_op.png -/doc/tip.png -/doc/up_disabled.png -/doc/up.png -/doc/warning.png -/include/ -/include/asio/ -/include/asio/any_io_executor.hpp -/include/asio/associated_allocator.hpp -/include/asio/associated_cancellation_slot.hpp -/include/asio/associated_executor.hpp -/include/asio/associator.hpp -/include/asio/async_result.hpp -/include/asio/awaitable.hpp -/include/asio/basic_datagram_socket.hpp -/include/asio/basic_deadline_timer.hpp -/include/asio/basic_io_object.hpp -/include/asio/basic_raw_socket.hpp -/include/asio/basic_seq_packet_socket.hpp -/include/asio/basic_serial_port.hpp -/include/asio/basic_signal_set.hpp -/include/asio/basic_socket_acceptor.hpp -/include/asio/basic_socket.hpp -/include/asio/basic_socket_iostream.hpp -/include/asio/basic_socket_streambuf.hpp -/include/asio/basic_streambuf_fwd.hpp -/include/asio/basic_streambuf.hpp -/include/asio/basic_stream_socket.hpp -/include/asio/basic_waitable_timer.hpp -/include/asio/bind_cancellation_slot.hpp -/include/asio/bind_executor.hpp -/include/asio/buffered_read_stream_fwd.hpp -/include/asio/buffered_read_stream.hpp -/include/asio/buffered_stream_fwd.hpp -/include/asio/buffered_stream.hpp -/include/asio/buffered_write_stream_fwd.hpp -/include/asio/buffered_write_stream.hpp -/include/asio/buffer.hpp -/include/asio/buffers_iterator.hpp -/include/asio/cancellation_signal.hpp -/include/asio/cancellation_state.hpp -/include/asio/cancellation_type.hpp -/include/asio/completion_condition.hpp -/include/asio/compose.hpp -/include/asio/connect.hpp -/include/asio/coroutine.hpp -/include/asio/co_spawn.hpp -/include/asio/deadline_timer.hpp -/include/asio/defer.hpp -/include/asio/detached.hpp -/include/asio/detail/ -/include/asio/detail/array_fwd.hpp -/include/asio/detail/array.hpp -/include/asio/detail/assert.hpp -/include/asio/detail/atomic_count.hpp -/include/asio/detail/base_from_cancellation_state.hpp -/include/asio/detail/base_from_completion_cond.hpp -/include/asio/detail/bind_handler.hpp -/include/asio/detail/blocking_executor_op.hpp -/include/asio/detail/buffered_stream_storage.hpp -/include/asio/detail/buffer_resize_guard.hpp -/include/asio/detail/buffer_sequence_adapter.hpp -/include/asio/detail/bulk_executor_op.hpp -/include/asio/detail/call_stack.hpp -/include/asio/detail/chrono.hpp -/include/asio/detail/chrono_time_traits.hpp -/include/asio/detail/completion_handler.hpp -/include/asio/detail/concurrency_hint.hpp -/include/asio/detail/conditionally_enabled_event.hpp -/include/asio/detail/conditionally_enabled_mutex.hpp -/include/asio/detail/config.hpp -/include/asio/detail/consuming_buffers.hpp -/include/asio/detail/cstddef.hpp -/include/asio/detail/cstdint.hpp -/include/asio/detail/date_time_fwd.hpp -/include/asio/detail/deadline_timer_service.hpp -/include/asio/detail/dependent_type.hpp -/include/asio/detail/descriptor_ops.hpp -/include/asio/detail/descriptor_read_op.hpp -/include/asio/detail/descriptor_write_op.hpp -/include/asio/detail/dev_poll_reactor.hpp -/include/asio/detail/epoll_reactor.hpp -/include/asio/detail/eventfd_select_interrupter.hpp -/include/asio/detail/event.hpp -/include/asio/detail/executor_function.hpp -/include/asio/detail/executor_op.hpp -/include/asio/detail/fd_set_adapter.hpp -/include/asio/detail/fenced_block.hpp -/include/asio/detail/functional.hpp -/include/asio/detail/future.hpp -/include/asio/detail/gcc_arm_fenced_block.hpp -/include/asio/detail/gcc_hppa_fenced_block.hpp -/include/asio/detail/gcc_sync_fenced_block.hpp -/include/asio/detail/gcc_x86_fenced_block.hpp -/include/asio/detail/global.hpp -/include/asio/detail/handler_alloc_helpers.hpp -/include/asio/detail/handler_cont_helpers.hpp -/include/asio/detail/handler_invoke_helpers.hpp -/include/asio/detail/handler_tracking.hpp -/include/asio/detail/handler_type_requirements.hpp -/include/asio/detail/handler_work.hpp -/include/asio/detail/hash_map.hpp -/include/asio/detail/impl/ -/include/asio/detail/impl/buffer_sequence_adapter.ipp -/include/asio/detail/impl/descriptor_ops.ipp -/include/asio/detail/impl/dev_poll_reactor.hpp -/include/asio/detail/impl/dev_poll_reactor.ipp -/include/asio/detail/impl/epoll_reactor.hpp -/include/asio/detail/impl/epoll_reactor.ipp -/include/asio/detail/impl/eventfd_select_interrupter.ipp -/include/asio/detail/impl/handler_tracking.ipp -/include/asio/detail/impl/kqueue_reactor.hpp -/include/asio/detail/impl/kqueue_reactor.ipp -/include/asio/detail/impl/null_event.ipp -/include/asio/detail/impl/pipe_select_interrupter.ipp -/include/asio/detail/impl/posix_event.ipp -/include/asio/detail/impl/posix_mutex.ipp -/include/asio/detail/impl/posix_thread.ipp -/include/asio/detail/impl/posix_tss_ptr.ipp -/include/asio/detail/impl/reactive_descriptor_service.ipp -/include/asio/detail/impl/reactive_serial_port_service.ipp -/include/asio/detail/impl/reactive_socket_service_base.ipp -/include/asio/detail/impl/resolver_service_base.ipp -/include/asio/detail/impl/scheduler.ipp -/include/asio/detail/impl/select_reactor.hpp -/include/asio/detail/impl/select_reactor.ipp -/include/asio/detail/impl/service_registry.hpp -/include/asio/detail/impl/service_registry.ipp -/include/asio/detail/impl/signal_set_service.ipp -/include/asio/detail/impl/socket_ops.ipp -/include/asio/detail/impl/socket_select_interrupter.ipp -/include/asio/detail/impl/strand_executor_service.hpp -/include/asio/detail/impl/strand_executor_service.ipp -/include/asio/detail/impl/strand_service.hpp -/include/asio/detail/impl/strand_service.ipp -/include/asio/detail/impl/thread_context.ipp -/include/asio/detail/impl/throw_error.ipp -/include/asio/detail/impl/timer_queue_ptime.ipp -/include/asio/detail/impl/timer_queue_set.ipp -/include/asio/detail/impl/win_event.ipp -/include/asio/detail/impl/win_iocp_handle_service.ipp -/include/asio/detail/impl/win_iocp_io_context.hpp -/include/asio/detail/impl/win_iocp_io_context.ipp -/include/asio/detail/impl/win_iocp_serial_port_service.ipp -/include/asio/detail/impl/win_iocp_socket_service_base.ipp -/include/asio/detail/impl/win_mutex.ipp -/include/asio/detail/impl/win_object_handle_service.ipp -/include/asio/detail/impl/winrt_ssocket_service_base.ipp -/include/asio/detail/impl/winrt_timer_scheduler.hpp -/include/asio/detail/impl/winrt_timer_scheduler.ipp -/include/asio/detail/impl/winsock_init.ipp -/include/asio/detail/impl/win_static_mutex.ipp -/include/asio/detail/impl/win_thread.ipp -/include/asio/detail/impl/win_tss_ptr.ipp -/include/asio/detail/io_control.hpp -/include/asio/detail/io_object_impl.hpp -/include/asio/detail/is_buffer_sequence.hpp -/include/asio/detail/is_executor.hpp -/include/asio/detail/keyword_tss_ptr.hpp -/include/asio/detail/kqueue_reactor.hpp -/include/asio/detail/limits.hpp -/include/asio/detail/local_free_on_block_exit.hpp -/include/asio/detail/macos_fenced_block.hpp -/include/asio/detail/memory.hpp -/include/asio/detail/mutex.hpp -/include/asio/detail/non_const_lvalue.hpp -/include/asio/detail/noncopyable.hpp -/include/asio/detail/null_event.hpp -/include/asio/detail/null_fenced_block.hpp -/include/asio/detail/null_global.hpp -/include/asio/detail/null_mutex.hpp -/include/asio/detail/null_reactor.hpp -/include/asio/detail/null_signal_blocker.hpp -/include/asio/detail/null_socket_service.hpp -/include/asio/detail/null_static_mutex.hpp -/include/asio/detail/null_thread.hpp -/include/asio/detail/null_tss_ptr.hpp -/include/asio/detail/object_pool.hpp -/include/asio/detail/old_win_sdk_compat.hpp -/include/asio/detail/operation.hpp -/include/asio/detail/op_queue.hpp -/include/asio/detail/pipe_select_interrupter.hpp -/include/asio/detail/pop_options.hpp -/include/asio/detail/posix_event.hpp -/include/asio/detail/posix_fd_set_adapter.hpp -/include/asio/detail/posix_global.hpp -/include/asio/detail/posix_mutex.hpp -/include/asio/detail/posix_signal_blocker.hpp -/include/asio/detail/posix_static_mutex.hpp -/include/asio/detail/posix_thread.hpp -/include/asio/detail/posix_tss_ptr.hpp -/include/asio/detail/push_options.hpp -/include/asio/detail/reactive_descriptor_service.hpp -/include/asio/detail/reactive_null_buffers_op.hpp -/include/asio/detail/reactive_serial_port_service.hpp -/include/asio/detail/reactive_socket_accept_op.hpp -/include/asio/detail/reactive_socket_connect_op.hpp -/include/asio/detail/reactive_socket_recvfrom_op.hpp -/include/asio/detail/reactive_socket_recvmsg_op.hpp -/include/asio/detail/reactive_socket_recv_op.hpp -/include/asio/detail/reactive_socket_send_op.hpp -/include/asio/detail/reactive_socket_sendto_op.hpp -/include/asio/detail/reactive_socket_service_base.hpp -/include/asio/detail/reactive_socket_service.hpp -/include/asio/detail/reactive_wait_op.hpp -/include/asio/detail/reactor_fwd.hpp -/include/asio/detail/reactor.hpp -/include/asio/detail/reactor_op.hpp -/include/asio/detail/reactor_op_queue.hpp -/include/asio/detail/recycling_allocator.hpp -/include/asio/detail/regex_fwd.hpp -/include/asio/detail/resolve_endpoint_op.hpp -/include/asio/detail/resolve_op.hpp -/include/asio/detail/resolve_query_op.hpp -/include/asio/detail/resolver_service_base.hpp -/include/asio/detail/resolver_service.hpp -/include/asio/detail/scheduler.hpp -/include/asio/detail/scheduler_operation.hpp -/include/asio/detail/scheduler_thread_info.hpp -/include/asio/detail/scoped_lock.hpp -/include/asio/detail/scoped_ptr.hpp -/include/asio/detail/select_interrupter.hpp -/include/asio/detail/select_reactor.hpp -/include/asio/detail/service_registry.hpp -/include/asio/detail/signal_blocker.hpp -/include/asio/detail/signal_handler.hpp -/include/asio/detail/signal_init.hpp -/include/asio/detail/signal_op.hpp -/include/asio/detail/signal_set_service.hpp -/include/asio/detail/socket_holder.hpp -/include/asio/detail/socket_ops.hpp -/include/asio/detail/socket_option.hpp -/include/asio/detail/socket_select_interrupter.hpp -/include/asio/detail/socket_types.hpp -/include/asio/detail/solaris_fenced_block.hpp -/include/asio/detail/source_location.hpp -/include/asio/detail/static_mutex.hpp -/include/asio/detail/std_event.hpp -/include/asio/detail/std_fenced_block.hpp -/include/asio/detail/std_global.hpp -/include/asio/detail/std_mutex.hpp -/include/asio/detail/std_static_mutex.hpp -/include/asio/detail/std_thread.hpp -/include/asio/detail/strand_executor_service.hpp -/include/asio/detail/strand_service.hpp -/include/asio/detail/string_view.hpp -/include/asio/detail/thread_context.hpp -/include/asio/detail/thread_group.hpp -/include/asio/detail/thread.hpp -/include/asio/detail/thread_info_base.hpp -/include/asio/detail/throw_error.hpp -/include/asio/detail/throw_exception.hpp -/include/asio/detail/timer_queue_base.hpp -/include/asio/detail/timer_queue.hpp -/include/asio/detail/timer_queue_ptime.hpp -/include/asio/detail/timer_queue_set.hpp -/include/asio/detail/timer_scheduler_fwd.hpp -/include/asio/detail/timer_scheduler.hpp -/include/asio/detail/tss_ptr.hpp -/include/asio/detail/type_traits.hpp -/include/asio/detail/variadic_templates.hpp -/include/asio/detail/wait_handler.hpp -/include/asio/detail/wait_op.hpp -/include/asio/detail/winapp_thread.hpp -/include/asio/detail/wince_thread.hpp -/include/asio/detail/win_event.hpp -/include/asio/detail/win_fd_set_adapter.hpp -/include/asio/detail/win_fenced_block.hpp -/include/asio/detail/win_global.hpp -/include/asio/detail/win_iocp_handle_read_op.hpp -/include/asio/detail/win_iocp_handle_service.hpp -/include/asio/detail/win_iocp_handle_write_op.hpp -/include/asio/detail/win_iocp_io_context.hpp -/include/asio/detail/win_iocp_null_buffers_op.hpp -/include/asio/detail/win_iocp_operation.hpp -/include/asio/detail/win_iocp_overlapped_op.hpp -/include/asio/detail/win_iocp_overlapped_ptr.hpp -/include/asio/detail/win_iocp_serial_port_service.hpp -/include/asio/detail/win_iocp_socket_accept_op.hpp -/include/asio/detail/win_iocp_socket_connect_op.hpp -/include/asio/detail/win_iocp_socket_recvfrom_op.hpp -/include/asio/detail/win_iocp_socket_recvmsg_op.hpp -/include/asio/detail/win_iocp_socket_recv_op.hpp -/include/asio/detail/win_iocp_socket_send_op.hpp -/include/asio/detail/win_iocp_socket_service_base.hpp -/include/asio/detail/win_iocp_socket_service.hpp -/include/asio/detail/win_iocp_thread_info.hpp -/include/asio/detail/win_iocp_wait_op.hpp -/include/asio/detail/win_mutex.hpp -/include/asio/detail/win_object_handle_service.hpp -/include/asio/detail/winrt_async_manager.hpp -/include/asio/detail/winrt_async_op.hpp -/include/asio/detail/winrt_resolve_op.hpp -/include/asio/detail/winrt_resolver_service.hpp -/include/asio/detail/winrt_socket_connect_op.hpp -/include/asio/detail/winrt_socket_recv_op.hpp -/include/asio/detail/winrt_socket_send_op.hpp -/include/asio/detail/winrt_ssocket_service_base.hpp -/include/asio/detail/winrt_ssocket_service.hpp -/include/asio/detail/winrt_timer_scheduler.hpp -/include/asio/detail/winrt_utils.hpp -/include/asio/detail/winsock_init.hpp -/include/asio/detail/win_static_mutex.hpp -/include/asio/detail/win_thread.hpp -/include/asio/detail/win_tss_ptr.hpp -/include/asio/detail/work_dispatcher.hpp -/include/asio/detail/wrapped_handler.hpp -/include/asio/dispatch.hpp -/include/asio/error_code.hpp -/include/asio/error.hpp -/include/asio/execution/ -/include/asio/execution/allocator.hpp -/include/asio/execution/any_executor.hpp -/include/asio/execution/bad_executor.hpp -/include/asio/execution/blocking_adaptation.hpp -/include/asio/execution/blocking.hpp -/include/asio/execution/bulk_execute.hpp -/include/asio/execution/bulk_guarantee.hpp -/include/asio/execution/connect.hpp -/include/asio/execution/context_as.hpp -/include/asio/execution/context.hpp -/include/asio/execution_context.hpp -/include/asio/execution/detail/ -/include/asio/execution/detail/as_invocable.hpp -/include/asio/execution/detail/as_operation.hpp -/include/asio/execution/detail/as_receiver.hpp -/include/asio/execution/detail/bulk_sender.hpp -/include/asio/execution/detail/submit_receiver.hpp -/include/asio/execution/detail/void_receiver.hpp -/include/asio/execution/execute.hpp -/include/asio/execution/executor.hpp -/include/asio/execution.hpp -/include/asio/execution/impl/ -/include/asio/execution/impl/bad_executor.ipp -/include/asio/execution/impl/receiver_invocation_error.ipp -/include/asio/execution/invocable_archetype.hpp -/include/asio/execution/mapping.hpp -/include/asio/execution/occupancy.hpp -/include/asio/execution/operation_state.hpp -/include/asio/execution/outstanding_work.hpp -/include/asio/execution/prefer_only.hpp -/include/asio/execution/receiver.hpp -/include/asio/execution/receiver_invocation_error.hpp -/include/asio/execution/relationship.hpp -/include/asio/execution/schedule.hpp -/include/asio/execution/scheduler.hpp -/include/asio/execution/sender.hpp -/include/asio/execution/set_done.hpp -/include/asio/execution/set_error.hpp -/include/asio/execution/set_value.hpp -/include/asio/execution/start.hpp -/include/asio/execution/submit.hpp -/include/asio/executor.hpp -/include/asio/executor_work_guard.hpp -/include/asio/experimental/ -/include/asio/experimental/append.hpp -/include/asio/experimental/as_single.hpp -/include/asio/experimental/as_tuple.hpp -/include/asio/experimental/awaitable_operators.hpp -/include/asio/experimental/cancellation_condition.hpp -/include/asio/experimental/coro.hpp -/include/asio/experimental/deferred.hpp -/include/asio/experimental/detail/ -/include/asio/experimental/detail/completion_handler_erasure.hpp -/include/asio/experimental/detail/coro_promise_allocator.hpp -/include/asio/experimental/detail/coro_traits.hpp -/include/asio/experimental/detail/partial_promise.hpp -/include/asio/experimental/impl/ -/include/asio/experimental/impl/append.hpp -/include/asio/experimental/impl/as_single.hpp -/include/asio/experimental/impl/as_tuple.hpp -/include/asio/experimental/impl/deferred.hpp -/include/asio/experimental/impl/parallel_group.hpp -/include/asio/experimental/impl/prepend.hpp -/include/asio/experimental/impl/promise.hpp -/include/asio/experimental/parallel_group.hpp -/include/asio/experimental/prepend.hpp -/include/asio/experimental/promise.hpp -/include/asio/experimental/use_coro.hpp -/include/asio/generic/ -/include/asio/generic/basic_endpoint.hpp -/include/asio/generic/datagram_protocol.hpp -/include/asio/generic/detail/ -/include/asio/generic/detail/endpoint.hpp -/include/asio/generic/detail/impl/ -/include/asio/generic/detail/impl/endpoint.ipp -/include/asio/generic/raw_protocol.hpp -/include/asio/generic/seq_packet_protocol.hpp -/include/asio/generic/stream_protocol.hpp -/include/asio/handler_alloc_hook.hpp -/include/asio/handler_continuation_hook.hpp -/include/asio/handler_invoke_hook.hpp -/include/asio/high_resolution_timer.hpp -/include/asio.hpp -/include/asio/impl/ -/include/asio/impl/awaitable.hpp -/include/asio/impl/buffered_read_stream.hpp -/include/asio/impl/buffered_write_stream.hpp -/include/asio/impl/compose.hpp -/include/asio/impl/connect.hpp -/include/asio/impl/co_spawn.hpp -/include/asio/impl/defer.hpp -/include/asio/impl/detached.hpp -/include/asio/impl/dispatch.hpp -/include/asio/impl/error_code.ipp -/include/asio/impl/error.ipp -/include/asio/impl/execution_context.hpp -/include/asio/impl/execution_context.ipp -/include/asio/impl/executor.hpp -/include/asio/impl/executor.ipp -/include/asio/impl/handler_alloc_hook.ipp -/include/asio/impl/io_context.hpp -/include/asio/impl/io_context.ipp -/include/asio/impl/multiple_exceptions.ipp -/include/asio/impl/post.hpp -/include/asio/impl/read_at.hpp -/include/asio/impl/read.hpp -/include/asio/impl/read_until.hpp -/include/asio/impl/redirect_error.hpp -/include/asio/impl/serial_port_base.hpp -/include/asio/impl/serial_port_base.ipp -/include/asio/impl/spawn.hpp -/include/asio/impl/src.hpp -/include/asio/impl/system_context.hpp -/include/asio/impl/system_context.ipp -/include/asio/impl/system_executor.hpp -/include/asio/impl/thread_pool.hpp -/include/asio/impl/thread_pool.ipp -/include/asio/impl/use_awaitable.hpp -/include/asio/impl/use_future.hpp -/include/asio/impl/write_at.hpp -/include/asio/impl/write.hpp -/include/asio/io_context.hpp -/include/asio/io_context_strand.hpp -/include/asio/io_service.hpp -/include/asio/io_service_strand.hpp -/include/asio/ip/ -/include/asio/ip/address.hpp -/include/asio/ip/address_v4.hpp -/include/asio/ip/address_v4_iterator.hpp -/include/asio/ip/address_v4_range.hpp -/include/asio/ip/address_v6.hpp -/include/asio/ip/address_v6_iterator.hpp -/include/asio/ip/address_v6_range.hpp -/include/asio/ip/bad_address_cast.hpp -/include/asio/ip/basic_endpoint.hpp -/include/asio/ip/basic_resolver_entry.hpp -/include/asio/ip/basic_resolver.hpp -/include/asio/ip/basic_resolver_iterator.hpp -/include/asio/ip/basic_resolver_query.hpp -/include/asio/ip/basic_resolver_results.hpp -/include/asio/ip/detail/ -/include/asio/ip/detail/endpoint.hpp -/include/asio/ip/detail/impl/ -/include/asio/ip/detail/impl/endpoint.ipp -/include/asio/ip/detail/socket_option.hpp -/include/asio/ip/host_name.hpp -/include/asio/ip/icmp.hpp -/include/asio/ip/impl/ -/include/asio/ip/impl/address.hpp -/include/asio/ip/impl/address.ipp -/include/asio/ip/impl/address_v4.hpp -/include/asio/ip/impl/address_v4.ipp -/include/asio/ip/impl/address_v6.hpp -/include/asio/ip/impl/address_v6.ipp -/include/asio/ip/impl/basic_endpoint.hpp -/include/asio/ip/impl/host_name.ipp -/include/asio/ip/impl/network_v4.hpp -/include/asio/ip/impl/network_v4.ipp -/include/asio/ip/impl/network_v6.hpp -/include/asio/ip/impl/network_v6.ipp -/include/asio/ip/multicast.hpp -/include/asio/ip/network_v4.hpp -/include/asio/ip/network_v6.hpp -/include/asio/ip/resolver_base.hpp -/include/asio/ip/resolver_query_base.hpp -/include/asio/ip/tcp.hpp -/include/asio/ip/udp.hpp -/include/asio/ip/unicast.hpp -/include/asio/ip/v6_only.hpp -/include/asio/is_applicable_property.hpp -/include/asio/is_executor.hpp -/include/asio/is_read_buffered.hpp -/include/asio/is_write_buffered.hpp -/include/asio/local/ -/include/asio/local/basic_endpoint.hpp -/include/asio/local/connect_pair.hpp -/include/asio/local/datagram_protocol.hpp -/include/asio/local/detail/ -/include/asio/local/detail/endpoint.hpp -/include/asio/local/detail/impl/ -/include/asio/local/detail/impl/endpoint.ipp -/include/asio/local/stream_protocol.hpp -/include/asio/multiple_exceptions.hpp -/include/asio/packaged_task.hpp -/include/asio/placeholders.hpp -/include/asio/posix/ -/include/asio/posix/basic_descriptor.hpp -/include/asio/posix/basic_stream_descriptor.hpp -/include/asio/posix/descriptor_base.hpp -/include/asio/posix/descriptor.hpp -/include/asio/posix/stream_descriptor.hpp -/include/asio/post.hpp -/include/asio/prefer.hpp -/include/asio/query.hpp -/include/asio/read_at.hpp -/include/asio/read.hpp -/include/asio/read_until.hpp -/include/asio/redirect_error.hpp -/include/asio/require_concept.hpp -/include/asio/require.hpp -/include/asio/serial_port_base.hpp -/include/asio/serial_port.hpp -/include/asio/signal_set.hpp -/include/asio/socket_base.hpp -/include/asio/spawn.hpp -/include/asio/ssl/ -/include/asio/ssl/context_base.hpp -/include/asio/ssl/context.hpp -/include/asio/ssl/detail/ -/include/asio/ssl/detail/buffered_handshake_op.hpp -/include/asio/ssl/detail/engine.hpp -/include/asio/ssl/detail/handshake_op.hpp -/include/asio/ssl/detail/impl/ -/include/asio/ssl/detail/impl/engine.ipp -/include/asio/ssl/detail/impl/openssl_init.ipp -/include/asio/ssl/detail/io.hpp -/include/asio/ssl/detail/openssl_init.hpp -/include/asio/ssl/detail/openssl_types.hpp -/include/asio/ssl/detail/password_callback.hpp -/include/asio/ssl/detail/read_op.hpp -/include/asio/ssl/detail/shutdown_op.hpp -/include/asio/ssl/detail/stream_core.hpp -/include/asio/ssl/detail/verify_callback.hpp -/include/asio/ssl/detail/write_op.hpp -/include/asio/ssl/error.hpp -/include/asio/ssl/host_name_verification.hpp -/include/asio/ssl.hpp -/include/asio/ssl/impl/ -/include/asio/ssl/impl/context.hpp -/include/asio/ssl/impl/context.ipp -/include/asio/ssl/impl/error.ipp -/include/asio/ssl/impl/host_name_verification.ipp -/include/asio/ssl/impl/rfc2818_verification.ipp -/include/asio/ssl/impl/src.hpp -/include/asio/ssl/rfc2818_verification.hpp -/include/asio/ssl/stream_base.hpp -/include/asio/ssl/stream.hpp -/include/asio/ssl/verify_context.hpp -/include/asio/ssl/verify_mode.hpp -/include/asio/static_thread_pool.hpp -/include/asio/steady_timer.hpp -/include/asio/strand.hpp -/include/asio/streambuf.hpp -/include/asio/system_context.hpp -/include/asio/system_error.hpp -/include/asio/system_executor.hpp -/include/asio/system_timer.hpp -/include/asio/this_coro.hpp -/include/asio/thread.hpp -/include/asio/thread_pool.hpp -/include/asio/time_traits.hpp -/include/asio/traits/ -/include/asio/traits/bulk_execute_free.hpp -/include/asio/traits/bulk_execute_member.hpp -/include/asio/traits/connect_free.hpp -/include/asio/traits/connect_member.hpp -/include/asio/traits/equality_comparable.hpp -/include/asio/traits/execute_free.hpp -/include/asio/traits/execute_member.hpp -/include/asio/traits/prefer_free.hpp -/include/asio/traits/prefer_member.hpp -/include/asio/traits/query_free.hpp -/include/asio/traits/query_member.hpp -/include/asio/traits/query_static_constexpr_member.hpp -/include/asio/traits/require_concept_free.hpp -/include/asio/traits/require_concept_member.hpp -/include/asio/traits/require_free.hpp -/include/asio/traits/require_member.hpp -/include/asio/traits/schedule_free.hpp -/include/asio/traits/schedule_member.hpp -/include/asio/traits/set_done_free.hpp -/include/asio/traits/set_done_member.hpp -/include/asio/traits/set_error_free.hpp -/include/asio/traits/set_error_member.hpp -/include/asio/traits/set_value_free.hpp -/include/asio/traits/set_value_member.hpp -/include/asio/traits/start_free.hpp -/include/asio/traits/start_member.hpp -/include/asio/traits/static_query.hpp -/include/asio/traits/static_require_concept.hpp -/include/asio/traits/static_require.hpp -/include/asio/traits/submit_free.hpp -/include/asio/traits/submit_member.hpp -/include/asio/ts/ -/include/asio/ts/buffer.hpp -/include/asio/ts/executor.hpp -/include/asio/ts/internet.hpp -/include/asio/ts/io_context.hpp -/include/asio/ts/netfwd.hpp -/include/asio/ts/net.hpp -/include/asio/ts/socket.hpp -/include/asio/ts/timer.hpp -/include/asio/unyield.hpp -/include/asio/use_awaitable.hpp -/include/asio/use_future.hpp -/include/asio/uses_executor.hpp -/include/asio/version.hpp -/include/asio/wait_traits.hpp -/include/asio/windows/ -/include/asio/windows/basic_object_handle.hpp -/include/asio/windows/basic_overlapped_handle.hpp -/include/asio/windows/basic_random_access_handle.hpp -/include/asio/windows/basic_stream_handle.hpp -/include/asio/windows/object_handle.hpp -/include/asio/windows/overlapped_handle.hpp -/include/asio/windows/overlapped_ptr.hpp -/include/asio/windows/random_access_handle.hpp -/include/asio/windows/stream_handle.hpp -/include/asio/write_at.hpp -/include/asio/write.hpp -/include/asio/yield.hpp -/include/Makefile.am -/include/Makefile.in -/INSTALL -/install-sh -/LICENSE_1_0.txt -/Makefile.am -/Makefile.in -/missing -/README -/src/ -/src/asio.cpp -/src/asio_ssl.cpp -/src/examples/ -/src/examples/cpp03/ -/src/examples/cpp03/allocation/ -/src/examples/cpp03/allocation/server.cpp -/src/examples/cpp03/buffers/ -/src/examples/cpp03/buffers/reference_counted.cpp -/src/examples/cpp03/chat/ -/src/examples/cpp03/chat/chat_client.cpp -/src/examples/cpp03/chat/chat_message.hpp -/src/examples/cpp03/chat/chat_server.cpp -/src/examples/cpp03/chat/posix_chat_client.cpp -/src/examples/cpp03/echo/ -/src/examples/cpp03/echo/async_tcp_echo_server.cpp -/src/examples/cpp03/echo/async_udp_echo_server.cpp -/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp -/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp -/src/examples/cpp03/echo/blocking_udp_echo_client.cpp -/src/examples/cpp03/echo/blocking_udp_echo_server.cpp -/src/examples/cpp03/fork/ -/src/examples/cpp03/fork/daemon.cpp -/src/examples/cpp03/fork/process_per_connection.cpp -/src/examples/cpp03/http/ -/src/examples/cpp03/http/client/ -/src/examples/cpp03/http/client/async_client.cpp -/src/examples/cpp03/http/client/sync_client.cpp -/src/examples/cpp03/http/server/ -/src/examples/cpp03/http/server2/ -/src/examples/cpp03/http/server2/connection.cpp -/src/examples/cpp03/http/server2/connection.hpp -/src/examples/cpp03/http/server2/header.hpp -/src/examples/cpp03/http/server2/io_context_pool.cpp -/src/examples/cpp03/http/server2/io_context_pool.hpp -/src/examples/cpp03/http/server2/main.cpp -/src/examples/cpp03/http/server2/mime_types.cpp -/src/examples/cpp03/http/server2/mime_types.hpp -/src/examples/cpp03/http/server2/reply.cpp -/src/examples/cpp03/http/server2/reply.hpp -/src/examples/cpp03/http/server2/request_handler.cpp -/src/examples/cpp03/http/server2/request_handler.hpp -/src/examples/cpp03/http/server2/request.hpp -/src/examples/cpp03/http/server2/request_parser.cpp -/src/examples/cpp03/http/server2/request_parser.hpp -/src/examples/cpp03/http/server2/server.cpp -/src/examples/cpp03/http/server2/server.hpp -/src/examples/cpp03/http/server3/ -/src/examples/cpp03/http/server3/connection.cpp -/src/examples/cpp03/http/server3/connection.hpp -/src/examples/cpp03/http/server3/header.hpp -/src/examples/cpp03/http/server3/main.cpp -/src/examples/cpp03/http/server3/mime_types.cpp -/src/examples/cpp03/http/server3/mime_types.hpp -/src/examples/cpp03/http/server3/reply.cpp -/src/examples/cpp03/http/server3/reply.hpp -/src/examples/cpp03/http/server3/request_handler.cpp -/src/examples/cpp03/http/server3/request_handler.hpp -/src/examples/cpp03/http/server3/request.hpp -/src/examples/cpp03/http/server3/request_parser.cpp -/src/examples/cpp03/http/server3/request_parser.hpp -/src/examples/cpp03/http/server3/server.cpp -/src/examples/cpp03/http/server3/server.hpp -/src/examples/cpp03/http/server4/ -/src/examples/cpp03/http/server4/file_handler.cpp -/src/examples/cpp03/http/server4/file_handler.hpp -/src/examples/cpp03/http/server4/header.hpp -/src/examples/cpp03/http/server4/main.cpp -/src/examples/cpp03/http/server4/mime_types.cpp -/src/examples/cpp03/http/server4/mime_types.hpp -/src/examples/cpp03/http/server4/reply.cpp -/src/examples/cpp03/http/server4/reply.hpp -/src/examples/cpp03/http/server4/request.hpp -/src/examples/cpp03/http/server4/request_parser.cpp -/src/examples/cpp03/http/server4/request_parser.hpp -/src/examples/cpp03/http/server4/server.cpp -/src/examples/cpp03/http/server4/server.hpp -/src/examples/cpp03/http/server/connection.cpp -/src/examples/cpp03/http/server/connection.hpp -/src/examples/cpp03/http/server/connection_manager.cpp -/src/examples/cpp03/http/server/connection_manager.hpp -/src/examples/cpp03/http/server/header.hpp -/src/examples/cpp03/http/server/main.cpp -/src/examples/cpp03/http/server/mime_types.cpp -/src/examples/cpp03/http/server/mime_types.hpp -/src/examples/cpp03/http/server/reply.cpp -/src/examples/cpp03/http/server/reply.hpp -/src/examples/cpp03/http/server/request_handler.cpp -/src/examples/cpp03/http/server/request_handler.hpp -/src/examples/cpp03/http/server/request.hpp -/src/examples/cpp03/http/server/request_parser.cpp -/src/examples/cpp03/http/server/request_parser.hpp -/src/examples/cpp03/http/server/server.cpp -/src/examples/cpp03/http/server/server.hpp -/src/examples/cpp03/icmp/ -/src/examples/cpp03/icmp/icmp_header.hpp -/src/examples/cpp03/icmp/ipv4_header.hpp -/src/examples/cpp03/icmp/ping.cpp -/src/examples/cpp03/invocation/ -/src/examples/cpp03/invocation/prioritised_handlers.cpp -/src/examples/cpp03/iostreams/ -/src/examples/cpp03/iostreams/daytime_client.cpp -/src/examples/cpp03/iostreams/daytime_server.cpp -/src/examples/cpp03/iostreams/http_client.cpp -/src/examples/cpp03/local/ -/src/examples/cpp03/local/connect_pair.cpp -/src/examples/cpp03/local/iostream_client.cpp -/src/examples/cpp03/local/stream_client.cpp -/src/examples/cpp03/local/stream_server.cpp -/src/examples/cpp03/Makefile.am -/src/examples/cpp03/Makefile.in -/src/examples/cpp03/multicast/ -/src/examples/cpp03/multicast/receiver.cpp -/src/examples/cpp03/multicast/sender.cpp -/src/examples/cpp03/nonblocking/ -/src/examples/cpp03/nonblocking/third_party_lib.cpp -/src/examples/cpp03/porthopper/ -/src/examples/cpp03/porthopper/client.cpp -/src/examples/cpp03/porthopper/protocol.hpp -/src/examples/cpp03/porthopper/server.cpp -/src/examples/cpp03/serialization/ -/src/examples/cpp03/serialization/client.cpp -/src/examples/cpp03/serialization/connection.hpp -/src/examples/cpp03/serialization/server.cpp -/src/examples/cpp03/serialization/stock.hpp -/src/examples/cpp03/services/ -/src/examples/cpp03/services/basic_logger.hpp -/src/examples/cpp03/services/daytime_client.cpp -/src/examples/cpp03/services/logger.hpp -/src/examples/cpp03/services/logger_service.cpp -/src/examples/cpp03/services/logger_service.hpp -/src/examples/cpp03/socks4/ -/src/examples/cpp03/socks4/socks4.hpp -/src/examples/cpp03/socks4/sync_client.cpp -/src/examples/cpp03/spawn/ -/src/examples/cpp03/spawn/echo_server.cpp -/src/examples/cpp03/spawn/parallel_grep.cpp -/src/examples/cpp03/ssl/ -/src/examples/cpp03/ssl/ca.pem -/src/examples/cpp03/ssl/client.cpp -/src/examples/cpp03/ssl/dh2048.pem -/src/examples/cpp03/ssl/README -/src/examples/cpp03/ssl/server.cpp -/src/examples/cpp03/ssl/server.pem -/src/examples/cpp03/timeouts/ -/src/examples/cpp03/timeouts/async_tcp_client.cpp -/src/examples/cpp03/timeouts/blocking_tcp_client.cpp -/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp -/src/examples/cpp03/timeouts/blocking_udp_client.cpp -/src/examples/cpp03/timeouts/server.cpp -/src/examples/cpp03/timers/ -/src/examples/cpp03/timers/time_t_timer.cpp -/src/examples/cpp03/tutorial/ -/src/examples/cpp03/tutorial/daytime1/ -/src/examples/cpp03/tutorial/daytime1/client.cpp -/src/examples/cpp03/tutorial/daytime2/ -/src/examples/cpp03/tutorial/daytime2/server.cpp -/src/examples/cpp03/tutorial/daytime3/ -/src/examples/cpp03/tutorial/daytime3/server.cpp -/src/examples/cpp03/tutorial/daytime4/ -/src/examples/cpp03/tutorial/daytime4/client.cpp -/src/examples/cpp03/tutorial/daytime5/ -/src/examples/cpp03/tutorial/daytime5/server.cpp -/src/examples/cpp03/tutorial/daytime6/ -/src/examples/cpp03/tutorial/daytime6/server.cpp -/src/examples/cpp03/tutorial/daytime7/ -/src/examples/cpp03/tutorial/daytime7/server.cpp -/src/examples/cpp03/tutorial/timer1/ -/src/examples/cpp03/tutorial/timer1/timer.cpp -/src/examples/cpp03/tutorial/timer2/ -/src/examples/cpp03/tutorial/timer2/timer.cpp -/src/examples/cpp03/tutorial/timer3/ -/src/examples/cpp03/tutorial/timer3/timer.cpp -/src/examples/cpp03/tutorial/timer4/ -/src/examples/cpp03/tutorial/timer4/timer.cpp -/src/examples/cpp03/tutorial/timer5/ -/src/examples/cpp03/tutorial/timer5/timer.cpp -/src/examples/cpp03/windows/ -/src/examples/cpp03/windows/transmit_file.cpp -/src/examples/cpp11/ -/src/examples/cpp11/allocation/ -/src/examples/cpp11/allocation/server.cpp -/src/examples/cpp11/buffers/ -/src/examples/cpp11/buffers/reference_counted.cpp -/src/examples/cpp11/chat/ -/src/examples/cpp11/chat/chat_client.cpp -/src/examples/cpp11/chat/chat_message.hpp -/src/examples/cpp11/chat/chat_server.cpp -/src/examples/cpp11/echo/ -/src/examples/cpp11/echo/async_tcp_echo_server.cpp -/src/examples/cpp11/echo/async_udp_echo_server.cpp -/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp -/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp -/src/examples/cpp11/echo/blocking_udp_echo_client.cpp -/src/examples/cpp11/echo/blocking_udp_echo_server.cpp -/src/examples/cpp11/executors/ -/src/examples/cpp11/executors/actor.cpp -/src/examples/cpp11/executors/bank_account_1.cpp -/src/examples/cpp11/executors/bank_account_2.cpp -/src/examples/cpp11/executors/fork_join.cpp -/src/examples/cpp11/executors/pipeline.cpp -/src/examples/cpp11/executors/priority_scheduler.cpp -/src/examples/cpp11/fork/ -/src/examples/cpp11/fork/daemon.cpp -/src/examples/cpp11/fork/process_per_connection.cpp -/src/examples/cpp11/futures/ -/src/examples/cpp11/futures/daytime_client.cpp -/src/examples/cpp11/handler_tracking/ -/src/examples/cpp11/handler_tracking/async_tcp_echo_server.cpp -/src/examples/cpp11/handler_tracking/custom_tracking.hpp -/src/examples/cpp11/http/ -/src/examples/cpp11/http/server/ -/src/examples/cpp11/http/server/connection.cpp -/src/examples/cpp11/http/server/connection.hpp -/src/examples/cpp11/http/server/connection_manager.cpp -/src/examples/cpp11/http/server/connection_manager.hpp -/src/examples/cpp11/http/server/header.hpp -/src/examples/cpp11/http/server/main.cpp -/src/examples/cpp11/http/server/mime_types.cpp -/src/examples/cpp11/http/server/mime_types.hpp -/src/examples/cpp11/http/server/reply.cpp -/src/examples/cpp11/http/server/reply.hpp -/src/examples/cpp11/http/server/request_handler.cpp -/src/examples/cpp11/http/server/request_handler.hpp -/src/examples/cpp11/http/server/request.hpp -/src/examples/cpp11/http/server/request_parser.cpp -/src/examples/cpp11/http/server/request_parser.hpp -/src/examples/cpp11/http/server/server.cpp -/src/examples/cpp11/http/server/server.hpp -/src/examples/cpp11/invocation/ -/src/examples/cpp11/invocation/prioritised_handlers.cpp -/src/examples/cpp11/iostreams/ -/src/examples/cpp11/iostreams/http_client.cpp -/src/examples/cpp11/local/ -/src/examples/cpp11/local/connect_pair.cpp -/src/examples/cpp11/local/iostream_client.cpp -/src/examples/cpp11/local/stream_client.cpp -/src/examples/cpp11/local/stream_server.cpp -/src/examples/cpp11/Makefile.am -/src/examples/cpp11/Makefile.in -/src/examples/cpp11/multicast/ -/src/examples/cpp11/multicast/receiver.cpp -/src/examples/cpp11/multicast/sender.cpp -/src/examples/cpp11/nonblocking/ -/src/examples/cpp11/nonblocking/third_party_lib.cpp -/src/examples/cpp11/operations/ -/src/examples/cpp11/operations/composed_1.cpp -/src/examples/cpp11/operations/composed_2.cpp -/src/examples/cpp11/operations/composed_3.cpp -/src/examples/cpp11/operations/composed_4.cpp -/src/examples/cpp11/operations/composed_5.cpp -/src/examples/cpp11/operations/composed_6.cpp -/src/examples/cpp11/operations/composed_7.cpp -/src/examples/cpp11/operations/composed_8.cpp -/src/examples/cpp11/socks4/ -/src/examples/cpp11/socks4/socks4.hpp -/src/examples/cpp11/socks4/sync_client.cpp -/src/examples/cpp11/spawn/ -/src/examples/cpp11/spawn/echo_server.cpp -/src/examples/cpp11/spawn/parallel_grep.cpp -/src/examples/cpp11/ssl/ -/src/examples/cpp11/ssl/client.cpp -/src/examples/cpp11/ssl/server.cpp -/src/examples/cpp11/timeouts/ -/src/examples/cpp11/timeouts/async_tcp_client.cpp -/src/examples/cpp11/timeouts/blocking_tcp_client.cpp -/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp -/src/examples/cpp11/timeouts/blocking_udp_client.cpp -/src/examples/cpp11/timeouts/server.cpp -/src/examples/cpp11/timers/ -/src/examples/cpp11/timers/time_t_timer.cpp -/src/examples/cpp14/ -/src/examples/cpp14/deferred/ -/src/examples/cpp14/deferred/deferred_1.cpp -/src/examples/cpp14/deferred/deferred_2.cpp -/src/examples/cpp14/deferred/deferred_3.cpp -/src/examples/cpp14/deferred/deferred_4.cpp -/src/examples/cpp14/deferred/deferred_5.cpp -/src/examples/cpp14/deferred/deferred_6.cpp -/src/examples/cpp14/deferred/deferred_7.cpp -/src/examples/cpp14/echo/ -/src/examples/cpp14/echo/async_tcp_echo_server.cpp -/src/examples/cpp14/echo/async_udp_echo_server.cpp -/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp -/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp -/src/examples/cpp14/echo/blocking_udp_echo_client.cpp -/src/examples/cpp14/echo/blocking_udp_echo_server.cpp -/src/examples/cpp14/executors/ -/src/examples/cpp14/executors/actor.cpp -/src/examples/cpp14/executors/async_1.cpp -/src/examples/cpp14/executors/async_2.cpp -/src/examples/cpp14/executors/bank_account_1.cpp -/src/examples/cpp14/executors/bank_account_2.cpp -/src/examples/cpp14/executors/fork_join.cpp -/src/examples/cpp14/executors/pipeline.cpp -/src/examples/cpp14/executors/priority_scheduler.cpp -/src/examples/cpp14/iostreams/ -/src/examples/cpp14/iostreams/http_client.cpp -/src/examples/cpp14/Makefile.am -/src/examples/cpp14/Makefile.in -/src/examples/cpp14/operations/ -/src/examples/cpp14/operations/composed_1.cpp -/src/examples/cpp14/operations/composed_2.cpp -/src/examples/cpp14/operations/composed_3.cpp -/src/examples/cpp14/operations/composed_4.cpp -/src/examples/cpp14/operations/composed_5.cpp -/src/examples/cpp14/operations/composed_6.cpp -/src/examples/cpp14/operations/composed_7.cpp -/src/examples/cpp14/operations/composed_8.cpp -/src/examples/cpp14/parallel_group/ -/src/examples/cpp14/parallel_group/parallel_sort.cpp -/src/examples/cpp14/parallel_group/wait_for_all.cpp -/src/examples/cpp14/parallel_group/wait_for_one.cpp -/src/examples/cpp14/parallel_group/wait_for_one_error.cpp -/src/examples/cpp14/parallel_group/wait_for_one_success.cpp -/src/examples/cpp17/ -/src/examples/cpp17/coroutines_ts/ -/src/examples/cpp17/coroutines_ts/chat_server.cpp -/src/examples/cpp17/coroutines_ts/echo_server.cpp -/src/examples/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp -/src/examples/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp -/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp -/src/examples/cpp17/coroutines_ts/range_based_for.cpp -/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp -/src/examples/cpp17/Makefile.am -/src/examples/cpp17/Makefile.in -/src/Makefile.am -/src/Makefile.in -/src/Makefile.mgw -/src/Makefile.msc -/src/tests/ -/src/tests/latency/ -/src/tests/latency/allocator.hpp -/src/tests/latency/high_res_clock.hpp -/src/tests/latency/tcp_client.cpp -/src/tests/latency/tcp_server.cpp -/src/tests/latency/udp_client.cpp -/src/tests/latency/udp_server.cpp -/src/tests/Makefile.am -/src/tests/Makefile.in -/src/tests/performance/ -/src/tests/performance/client.cpp -/src/tests/performance/handler_allocator.hpp -/src/tests/performance/server.cpp -/src/tests/properties/ -/src/tests/properties/cpp03/ -/src/tests/properties/cpp03/can_prefer_free_prefer.cpp -/src/tests/properties/cpp03/can_prefer_free_require.cpp -/src/tests/properties/cpp03/can_prefer_member_prefer.cpp -/src/tests/properties/cpp03/can_prefer_member_require.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_free_require.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_member_require.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_static.cpp -/src/tests/properties/cpp03/can_prefer_not_applicable_unsupported.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_free_require.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_member_require.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_static.cpp -/src/tests/properties/cpp03/can_prefer_not_preferable_unsupported.cpp -/src/tests/properties/cpp03/can_prefer_static.cpp -/src/tests/properties/cpp03/can_prefer_unsupported.cpp -/src/tests/properties/cpp03/can_query_free.cpp -/src/tests/properties/cpp03/can_query_member.cpp -/src/tests/properties/cpp03/can_query_not_applicable_free.cpp -/src/tests/properties/cpp03/can_query_not_applicable_member.cpp -/src/tests/properties/cpp03/can_query_not_applicable_static.cpp -/src/tests/properties/cpp03/can_query_not_applicable_unsupported.cpp -/src/tests/properties/cpp03/can_query_static.cpp -/src/tests/properties/cpp03/can_query_unsupported.cpp -/src/tests/properties/cpp03/can_require_concept_free.cpp -/src/tests/properties/cpp03/can_require_concept_member.cpp -/src/tests/properties/cpp03/can_require_concept_not_applicable_free.cpp -/src/tests/properties/cpp03/can_require_concept_not_applicable_member.cpp -/src/tests/properties/cpp03/can_require_concept_not_applicable_static.cpp -/src/tests/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp -/src/tests/properties/cpp03/can_require_concept_static.cpp -/src/tests/properties/cpp03/can_require_concept_unsupported.cpp -/src/tests/properties/cpp03/can_require_free.cpp -/src/tests/properties/cpp03/can_require_member.cpp -/src/tests/properties/cpp03/can_require_not_applicable_free.cpp -/src/tests/properties/cpp03/can_require_not_applicable_member.cpp -/src/tests/properties/cpp03/can_require_not_applicable_static.cpp -/src/tests/properties/cpp03/can_require_not_applicable_unsupported.cpp -/src/tests/properties/cpp03/can_require_static.cpp -/src/tests/properties/cpp03/can_require_unsupported.cpp -/src/tests/properties/cpp03/prefer_free_prefer.cpp -/src/tests/properties/cpp03/prefer_free_require.cpp -/src/tests/properties/cpp03/prefer_member_prefer.cpp -/src/tests/properties/cpp03/prefer_member_require.cpp -/src/tests/properties/cpp03/prefer_static.cpp -/src/tests/properties/cpp03/prefer_unsupported.cpp -/src/tests/properties/cpp03/query_free.cpp -/src/tests/properties/cpp03/query_member.cpp -/src/tests/properties/cpp03/query_static.cpp -/src/tests/properties/cpp03/require_concept_free.cpp -/src/tests/properties/cpp03/require_concept_member.cpp -/src/tests/properties/cpp03/require_concept_static.cpp -/src/tests/properties/cpp03/require_free.cpp -/src/tests/properties/cpp03/require_member.cpp -/src/tests/properties/cpp03/require_static.cpp -/src/tests/properties/cpp11/ -/src/tests/properties/cpp11/can_prefer_free_prefer.cpp -/src/tests/properties/cpp11/can_prefer_free_require.cpp -/src/tests/properties/cpp11/can_prefer_member_prefer.cpp -/src/tests/properties/cpp11/can_prefer_member_require.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_free_require.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_member_require.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_static.cpp -/src/tests/properties/cpp11/can_prefer_not_applicable_unsupported.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_free_require.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_member_require.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_static.cpp -/src/tests/properties/cpp11/can_prefer_not_preferable_unsupported.cpp -/src/tests/properties/cpp11/can_prefer_static.cpp -/src/tests/properties/cpp11/can_prefer_unsupported.cpp -/src/tests/properties/cpp11/can_query_free.cpp -/src/tests/properties/cpp11/can_query_member.cpp -/src/tests/properties/cpp11/can_query_not_applicable_free.cpp -/src/tests/properties/cpp11/can_query_not_applicable_member.cpp -/src/tests/properties/cpp11/can_query_not_applicable_static.cpp -/src/tests/properties/cpp11/can_query_not_applicable_unsupported.cpp -/src/tests/properties/cpp11/can_query_static.cpp -/src/tests/properties/cpp11/can_query_unsupported.cpp -/src/tests/properties/cpp11/can_require_concept_free.cpp -/src/tests/properties/cpp11/can_require_concept_member.cpp -/src/tests/properties/cpp11/can_require_concept_not_applicable_free.cpp -/src/tests/properties/cpp11/can_require_concept_not_applicable_member.cpp -/src/tests/properties/cpp11/can_require_concept_not_applicable_static.cpp -/src/tests/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp -/src/tests/properties/cpp11/can_require_concept_static.cpp -/src/tests/properties/cpp11/can_require_concept_unsupported.cpp -/src/tests/properties/cpp11/can_require_free.cpp -/src/tests/properties/cpp11/can_require_member.cpp -/src/tests/properties/cpp11/can_require_not_applicable_free.cpp -/src/tests/properties/cpp11/can_require_not_applicable_member.cpp -/src/tests/properties/cpp11/can_require_not_applicable_static.cpp -/src/tests/properties/cpp11/can_require_not_applicable_unsupported.cpp -/src/tests/properties/cpp11/can_require_static.cpp -/src/tests/properties/cpp11/can_require_unsupported.cpp -/src/tests/properties/cpp11/prefer_free_prefer.cpp -/src/tests/properties/cpp11/prefer_free_require.cpp -/src/tests/properties/cpp11/prefer_member_prefer.cpp -/src/tests/properties/cpp11/prefer_member_require.cpp -/src/tests/properties/cpp11/prefer_static.cpp -/src/tests/properties/cpp11/prefer_unsupported.cpp -/src/tests/properties/cpp11/query_free.cpp -/src/tests/properties/cpp11/query_member.cpp -/src/tests/properties/cpp11/query_static.cpp -/src/tests/properties/cpp11/require_concept_free.cpp -/src/tests/properties/cpp11/require_concept_member.cpp -/src/tests/properties/cpp11/require_concept_static.cpp -/src/tests/properties/cpp11/require_free.cpp -/src/tests/properties/cpp11/require_member.cpp -/src/tests/properties/cpp11/require_static.cpp -/src/tests/properties/cpp14/ -/src/tests/properties/cpp14/can_prefer_free_prefer.cpp -/src/tests/properties/cpp14/can_prefer_free_require.cpp -/src/tests/properties/cpp14/can_prefer_member_prefer.cpp -/src/tests/properties/cpp14/can_prefer_member_require.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_free_require.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_member_require.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_static.cpp -/src/tests/properties/cpp14/can_prefer_not_applicable_unsupported.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_free_require.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_member_require.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_static.cpp -/src/tests/properties/cpp14/can_prefer_not_preferable_unsupported.cpp -/src/tests/properties/cpp14/can_prefer_static.cpp -/src/tests/properties/cpp14/can_prefer_unsupported.cpp -/src/tests/properties/cpp14/can_query_free.cpp -/src/tests/properties/cpp14/can_query_member.cpp -/src/tests/properties/cpp14/can_query_not_applicable_free.cpp -/src/tests/properties/cpp14/can_query_not_applicable_member.cpp -/src/tests/properties/cpp14/can_query_not_applicable_static.cpp -/src/tests/properties/cpp14/can_query_not_applicable_unsupported.cpp -/src/tests/properties/cpp14/can_query_static.cpp -/src/tests/properties/cpp14/can_query_unsupported.cpp -/src/tests/properties/cpp14/can_require_concept_free.cpp -/src/tests/properties/cpp14/can_require_concept_member.cpp -/src/tests/properties/cpp14/can_require_concept_not_applicable_free.cpp -/src/tests/properties/cpp14/can_require_concept_not_applicable_member.cpp -/src/tests/properties/cpp14/can_require_concept_not_applicable_static.cpp -/src/tests/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp -/src/tests/properties/cpp14/can_require_concept_static.cpp -/src/tests/properties/cpp14/can_require_concept_unsupported.cpp -/src/tests/properties/cpp14/can_require_free.cpp -/src/tests/properties/cpp14/can_require_member.cpp -/src/tests/properties/cpp14/can_require_not_applicable_free.cpp -/src/tests/properties/cpp14/can_require_not_applicable_member.cpp -/src/tests/properties/cpp14/can_require_not_applicable_static.cpp -/src/tests/properties/cpp14/can_require_not_applicable_unsupported.cpp -/src/tests/properties/cpp14/can_require_static.cpp -/src/tests/properties/cpp14/can_require_unsupported.cpp -/src/tests/properties/cpp14/prefer_free_prefer.cpp -/src/tests/properties/cpp14/prefer_free_require.cpp -/src/tests/properties/cpp14/prefer_member_prefer.cpp -/src/tests/properties/cpp14/prefer_member_require.cpp -/src/tests/properties/cpp14/prefer_static.cpp -/src/tests/properties/cpp14/prefer_unsupported.cpp -/src/tests/properties/cpp14/query_free.cpp -/src/tests/properties/cpp14/query_member.cpp -/src/tests/properties/cpp14/query_static.cpp -/src/tests/properties/cpp14/require_concept_free.cpp -/src/tests/properties/cpp14/require_concept_member.cpp -/src/tests/properties/cpp14/require_concept_static.cpp -/src/tests/properties/cpp14/require_free.cpp -/src/tests/properties/cpp14/require_member.cpp -/src/tests/properties/cpp14/require_static.cpp -/src/tests/properties/Makefile.am -/src/tests/properties/Makefile.in -/src/tests/unit/ -/src/tests/unit/archetypes/ -/src/tests/unit/archetypes/async_ops.hpp -/src/tests/unit/archetypes/async_result.hpp -/src/tests/unit/archetypes/gettable_socket_option.hpp -/src/tests/unit/archetypes/io_control_command.hpp -/src/tests/unit/archetypes/settable_socket_option.hpp -/src/tests/unit/associated_allocator.cpp -/src/tests/unit/associated_cancellation_slot.cpp -/src/tests/unit/associated_executor.cpp -/src/tests/unit/associator.cpp -/src/tests/unit/async_result.cpp -/src/tests/unit/awaitable.cpp -/src/tests/unit/basic_datagram_socket.cpp -/src/tests/unit/basic_deadline_timer.cpp -/src/tests/unit/basic_raw_socket.cpp -/src/tests/unit/basic_seq_packet_socket.cpp -/src/tests/unit/basic_serial_port.cpp -/src/tests/unit/basic_signal_set.cpp -/src/tests/unit/basic_socket_acceptor.cpp -/src/tests/unit/basic_socket.cpp -/src/tests/unit/basic_streambuf.cpp -/src/tests/unit/basic_stream_socket.cpp -/src/tests/unit/basic_waitable_timer.cpp -/src/tests/unit/bind_cancellation_slot.cpp -/src/tests/unit/bind_executor.cpp -/src/tests/unit/buffer.cpp -/src/tests/unit/buffered_read_stream.cpp -/src/tests/unit/buffered_stream.cpp -/src/tests/unit/buffered_write_stream.cpp -/src/tests/unit/buffers_iterator.cpp -/src/tests/unit/cancellation_signal.cpp -/src/tests/unit/cancellation_state.cpp -/src/tests/unit/cancellation_type.cpp -/src/tests/unit/completion_condition.cpp -/src/tests/unit/compose.cpp -/src/tests/unit/connect.cpp -/src/tests/unit/coroutine.cpp -/src/tests/unit/co_spawn.cpp -/src/tests/unit/deadline_timer.cpp -/src/tests/unit/defer.cpp -/src/tests/unit/detached.cpp -/src/tests/unit/dispatch.cpp -/src/tests/unit/error.cpp -/src/tests/unit/execution/ -/src/tests/unit/execution/any_executor.cpp -/src/tests/unit/execution/blocking_adaptation.cpp -/src/tests/unit/execution/blocking.cpp -/src/tests/unit/execution/bulk_execute.cpp -/src/tests/unit/execution/bulk_guarantee.cpp -/src/tests/unit/execution/connect.cpp -/src/tests/unit/execution/context_as.cpp -/src/tests/unit/execution_context.cpp -/src/tests/unit/execution/execute.cpp -/src/tests/unit/execution/executor.cpp -/src/tests/unit/execution/invocable_archetype.cpp -/src/tests/unit/execution/mapping.cpp -/src/tests/unit/execution/operation_state.cpp -/src/tests/unit/execution/outstanding_work.cpp -/src/tests/unit/execution/prefer_only.cpp -/src/tests/unit/execution/receiver.cpp -/src/tests/unit/execution/relationship.cpp -/src/tests/unit/execution/schedule.cpp -/src/tests/unit/execution/scheduler.cpp -/src/tests/unit/execution/sender.cpp -/src/tests/unit/execution/set_done.cpp -/src/tests/unit/execution/set_error.cpp -/src/tests/unit/execution/set_value.cpp -/src/tests/unit/execution/start.cpp -/src/tests/unit/execution/submit.cpp -/src/tests/unit/executor.cpp -/src/tests/unit/executor_work_guard.cpp -/src/tests/unit/experimental/ -/src/tests/unit/experimental/awaitable_operators.cpp -/src/tests/unit/experimental/coro/ -/src/tests/unit/experimental/coro/cancel.cpp -/src/tests/unit/experimental/coro/exception.cpp -/src/tests/unit/experimental/coro/partial.cpp -/src/tests/unit/experimental/coro/simple_test.cpp -/src/tests/unit/experimental/coro/stack_test.cpp -/src/tests/unit/experimental/coro/use_coro.cpp -/src/tests/unit/experimental/deferred.cpp -/src/tests/unit/experimental/promise.cpp -/src/tests/unit/generic/ -/src/tests/unit/generic/basic_endpoint.cpp -/src/tests/unit/generic/datagram_protocol.cpp -/src/tests/unit/generic/raw_protocol.cpp -/src/tests/unit/generic/seq_packet_protocol.cpp -/src/tests/unit/generic/stream_protocol.cpp -/src/tests/unit/high_resolution_timer.cpp -/src/tests/unit/io_context.cpp -/src/tests/unit/io_context_strand.cpp -/src/tests/unit/ip/ -/src/tests/unit/ip/address.cpp -/src/tests/unit/ip/address_v4.cpp -/src/tests/unit/ip/address_v4_iterator.cpp -/src/tests/unit/ip/address_v4_range.cpp -/src/tests/unit/ip/address_v6.cpp -/src/tests/unit/ip/address_v6_iterator.cpp -/src/tests/unit/ip/address_v6_range.cpp -/src/tests/unit/ip/basic_endpoint.cpp -/src/tests/unit/ip/basic_resolver.cpp -/src/tests/unit/ip/basic_resolver_entry.cpp -/src/tests/unit/ip/basic_resolver_iterator.cpp -/src/tests/unit/ip/basic_resolver_query.cpp -/src/tests/unit/ip/host_name.cpp -/src/tests/unit/ip/icmp.cpp -/src/tests/unit/ip/multicast.cpp -/src/tests/unit/ip/network_v4.cpp -/src/tests/unit/ip/network_v6.cpp -/src/tests/unit/ip/resolver_query_base.cpp -/src/tests/unit/ip/tcp.cpp -/src/tests/unit/ip/udp.cpp -/src/tests/unit/ip/unicast.cpp -/src/tests/unit/ip/v6_only.cpp -/src/tests/unit/is_read_buffered.cpp -/src/tests/unit/is_write_buffered.cpp -/src/tests/unit/local/ -/src/tests/unit/local/basic_endpoint.cpp -/src/tests/unit/local/connect_pair.cpp -/src/tests/unit/local/datagram_protocol.cpp -/src/tests/unit/local/stream_protocol.cpp -/src/tests/unit/packaged_task.cpp -/src/tests/unit/placeholders.cpp -/src/tests/unit/posix/ -/src/tests/unit/posix/basic_descriptor.cpp -/src/tests/unit/posix/basic_stream_descriptor.cpp -/src/tests/unit/posix/descriptor_base.cpp -/src/tests/unit/posix/descriptor.cpp -/src/tests/unit/posix/stream_descriptor.cpp -/src/tests/unit/post.cpp -/src/tests/unit/read_at.cpp -/src/tests/unit/read.cpp -/src/tests/unit/read_until.cpp -/src/tests/unit/redirect_error.cpp -/src/tests/unit/serial_port_base.cpp -/src/tests/unit/serial_port.cpp -/src/tests/unit/signal_set.cpp -/src/tests/unit/socket_base.cpp -/src/tests/unit/ssl/ -/src/tests/unit/ssl/context_base.cpp -/src/tests/unit/ssl/context.cpp -/src/tests/unit/ssl/error.cpp -/src/tests/unit/ssl/host_name_verification.cpp -/src/tests/unit/ssl/rfc2818_verification.cpp -/src/tests/unit/ssl/stream_base.cpp -/src/tests/unit/ssl/stream.cpp -/src/tests/unit/static_thread_pool.cpp -/src/tests/unit/steady_timer.cpp -/src/tests/unit/strand.cpp -/src/tests/unit/streambuf.cpp -/src/tests/unit/system_context.cpp -/src/tests/unit/system_executor.cpp -/src/tests/unit/system_timer.cpp -/src/tests/unit/this_coro.cpp -/src/tests/unit/thread.cpp -/src/tests/unit/thread_pool.cpp -/src/tests/unit/time_traits.cpp -/src/tests/unit/ts/ -/src/tests/unit/ts/buffer.cpp -/src/tests/unit/ts/executor.cpp -/src/tests/unit/ts/internet.cpp -/src/tests/unit/ts/io_context.cpp -/src/tests/unit/ts/net.cpp -/src/tests/unit/ts/netfwd.cpp -/src/tests/unit/ts/socket.cpp -/src/tests/unit/ts/timer.cpp -/src/tests/unit/unit_test.hpp -/src/tests/unit/use_awaitable.cpp -/src/tests/unit/use_future.cpp -/src/tests/unit/uses_executor.cpp -/src/tests/unit/wait_traits.cpp -/src/tests/unit/windows/ -/src/tests/unit/windows/basic_object_handle.cpp -/src/tests/unit/windows/basic_overlapped_handle.cpp -/src/tests/unit/windows/basic_random_access_handle.cpp -/src/tests/unit/windows/basic_stream_handle.cpp -/src/tests/unit/windows/object_handle.cpp -/src/tests/unit/windows/overlapped_handle.cpp -/src/tests/unit/windows/overlapped_ptr.cpp -/src/tests/unit/windows/random_access_handle.cpp -/src/tests/unit/windows/stream_handle.cpp -/src/tests/unit/write_at.cpp -/src/tests/unit/write.cpp -/src/tools/ -/src/tools/handlerlive.pl -/src/tools/handlertree.pl -/src/tools/handlerviz.pl -/test-driver diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/autogen.sh b/Plugins/GameLiftServerSDK/ThirdParty/asio/autogen.sh deleted file mode 100644 index 42075e32..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/autogen.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh - -# Helps bootstrapping the application when checked out from CVS. -# Requires GNU autoconf, GNU automake and GNU which. -# -# Copyright (C) 2004, by -# -# Carlo Wood, Run on IRC -# RSA-1024 0x624ACAD5 1997-01-26 Sign & Encrypt -# Fingerprint16 = 32 EC A7 B6 AC DB 65 A6 F6 F6 55 DD 1C DC FF 61 -# - -# Do sanity checks. -# Directory check. -if [ ! -f autogen.sh ]; then - echo "Run ./autogen.sh from the directory it exists in." - exit 1 -fi - -AUTOMAKE=${AUTOMAKE:-automake} -ACLOCAL=${ACLOCAL:-aclocal} -AUTOCONF=${AUTOCONF:-autoconf} - -($AUTOCONF --version) >/dev/null 2>/dev/null || (echo "You need GNU autoconf to install from CVS (ftp://ftp.gnu.org/gnu/autoconf/)"; exit 1) || exit 1 -($AUTOMAKE --version) >/dev/null 2>/dev/null || (echo "You need GNU automake 1.7 or higher to install from CVS (ftp://ftp.gnu.org/gnu/automake/)"; exit 1) || exit 1 - -# Determine the version of automake. -automake_version=`$AUTOMAKE --version | head -n 1 | sed -e 's/[^12]*\([12]\.[0-9][^ ]*\).*/\1/'` -automake_major=`echo $automake_version | cut -f1 -d.` -automake_minor=`echo $automake_version | cut -f2 -d.` -automake_version_number=`expr "$automake_major" \* 1000 \+ "$automake_minor"` - -# Require automake 1.7. -if expr "1007" \> "$automake_version_number" >/dev/null; then - $AUTOMAKE --version | head -n 1 - echo "" - echo "Fatal error: automake 1.7 or higher is required. Please set \$AUTOMAKE" - echo "to point to a newer automake, or upgrade." - echo "" - exit 1 -fi - -run() -{ - echo "Running $1 ..." - $1 -} - -# This is needed when someone just upgraded automake and this cache is still generated by an old version. -rm -rf autom4te.cache config.cache - -run "$ACLOCAL" -run "$AUTOCONF" -run "$AUTOMAKE --add-missing --foreign" - diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/boost_asio.manifest b/Plugins/GameLiftServerSDK/ThirdParty/asio/boost_asio.manifest deleted file mode 100644 index 858a6fac..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/boost_asio.manifest +++ /dev/null @@ -1,6498 +0,0 @@ -/ -/boost/ -/boost/asio/ -/boost/asio/any_io_executor.hpp -/boost/asio/associated_allocator.hpp -/boost/asio/associated_cancellation_slot.hpp -/boost/asio/associated_executor.hpp -/boost/asio/associator.hpp -/boost/asio/async_result.hpp -/boost/asio/awaitable.hpp -/boost/asio/basic_datagram_socket.hpp -/boost/asio/basic_deadline_timer.hpp -/boost/asio/basic_io_object.hpp -/boost/asio/basic_raw_socket.hpp -/boost/asio/basic_seq_packet_socket.hpp -/boost/asio/basic_serial_port.hpp -/boost/asio/basic_signal_set.hpp -/boost/asio/basic_socket_acceptor.hpp -/boost/asio/basic_socket.hpp -/boost/asio/basic_socket_iostream.hpp -/boost/asio/basic_socket_streambuf.hpp -/boost/asio/basic_streambuf_fwd.hpp -/boost/asio/basic_streambuf.hpp -/boost/asio/basic_stream_socket.hpp -/boost/asio/basic_waitable_timer.hpp -/boost/asio/bind_cancellation_slot.hpp -/boost/asio/bind_executor.hpp -/boost/asio/buffered_read_stream_fwd.hpp -/boost/asio/buffered_read_stream.hpp -/boost/asio/buffered_stream_fwd.hpp -/boost/asio/buffered_stream.hpp -/boost/asio/buffered_write_stream_fwd.hpp -/boost/asio/buffered_write_stream.hpp -/boost/asio/buffer.hpp -/boost/asio/buffers_iterator.hpp -/boost/asio/cancellation_signal.hpp -/boost/asio/cancellation_state.hpp -/boost/asio/cancellation_type.hpp -/boost/asio/completion_condition.hpp -/boost/asio/compose.hpp -/boost/asio/connect.hpp -/boost/asio/coroutine.hpp -/boost/asio/co_spawn.hpp -/boost/asio/deadline_timer.hpp -/boost/asio/defer.hpp -/boost/asio/detached.hpp -/boost/asio/detail/ -/boost/asio/detail/array_fwd.hpp -/boost/asio/detail/array.hpp -/boost/asio/detail/assert.hpp -/boost/asio/detail/atomic_count.hpp -/boost/asio/detail/base_from_cancellation_state.hpp -/boost/asio/detail/base_from_completion_cond.hpp -/boost/asio/detail/bind_handler.hpp -/boost/asio/detail/blocking_executor_op.hpp -/boost/asio/detail/buffered_stream_storage.hpp -/boost/asio/detail/buffer_resize_guard.hpp -/boost/asio/detail/buffer_sequence_adapter.hpp -/boost/asio/detail/bulk_executor_op.hpp -/boost/asio/detail/call_stack.hpp -/boost/asio/detail/chrono.hpp -/boost/asio/detail/chrono_time_traits.hpp -/boost/asio/detail/completion_handler.hpp -/boost/asio/detail/concurrency_hint.hpp -/boost/asio/detail/conditionally_enabled_event.hpp -/boost/asio/detail/conditionally_enabled_mutex.hpp -/boost/asio/detail/config.hpp -/boost/asio/detail/consuming_buffers.hpp -/boost/asio/detail/cstddef.hpp -/boost/asio/detail/cstdint.hpp -/boost/asio/detail/date_time_fwd.hpp -/boost/asio/detail/deadline_timer_service.hpp -/boost/asio/detail/dependent_type.hpp -/boost/asio/detail/descriptor_ops.hpp -/boost/asio/detail/descriptor_read_op.hpp -/boost/asio/detail/descriptor_write_op.hpp -/boost/asio/detail/dev_poll_reactor.hpp -/boost/asio/detail/epoll_reactor.hpp -/boost/asio/detail/eventfd_select_interrupter.hpp -/boost/asio/detail/event.hpp -/boost/asio/detail/executor_function.hpp -/boost/asio/detail/executor_op.hpp -/boost/asio/detail/fd_set_adapter.hpp -/boost/asio/detail/fenced_block.hpp -/boost/asio/detail/functional.hpp -/boost/asio/detail/future.hpp -/boost/asio/detail/gcc_arm_fenced_block.hpp -/boost/asio/detail/gcc_hppa_fenced_block.hpp -/boost/asio/detail/gcc_sync_fenced_block.hpp -/boost/asio/detail/gcc_x86_fenced_block.hpp -/boost/asio/detail/global.hpp -/boost/asio/detail/handler_alloc_helpers.hpp -/boost/asio/detail/handler_cont_helpers.hpp -/boost/asio/detail/handler_invoke_helpers.hpp -/boost/asio/detail/handler_tracking.hpp -/boost/asio/detail/handler_type_requirements.hpp -/boost/asio/detail/handler_work.hpp -/boost/asio/detail/hash_map.hpp -/boost/asio/detail/impl/ -/boost/asio/detail/impl/buffer_sequence_adapter.ipp -/boost/asio/detail/impl/descriptor_ops.ipp -/boost/asio/detail/impl/dev_poll_reactor.hpp -/boost/asio/detail/impl/dev_poll_reactor.ipp -/boost/asio/detail/impl/epoll_reactor.hpp -/boost/asio/detail/impl/epoll_reactor.ipp -/boost/asio/detail/impl/eventfd_select_interrupter.ipp -/boost/asio/detail/impl/handler_tracking.ipp -/boost/asio/detail/impl/kqueue_reactor.hpp -/boost/asio/detail/impl/kqueue_reactor.ipp -/boost/asio/detail/impl/null_event.ipp -/boost/asio/detail/impl/pipe_select_interrupter.ipp -/boost/asio/detail/impl/posix_event.ipp -/boost/asio/detail/impl/posix_mutex.ipp -/boost/asio/detail/impl/posix_thread.ipp -/boost/asio/detail/impl/posix_tss_ptr.ipp -/boost/asio/detail/impl/reactive_descriptor_service.ipp -/boost/asio/detail/impl/reactive_serial_port_service.ipp -/boost/asio/detail/impl/reactive_socket_service_base.ipp -/boost/asio/detail/impl/resolver_service_base.ipp -/boost/asio/detail/impl/scheduler.ipp -/boost/asio/detail/impl/select_reactor.hpp -/boost/asio/detail/impl/select_reactor.ipp -/boost/asio/detail/impl/service_registry.hpp -/boost/asio/detail/impl/service_registry.ipp -/boost/asio/detail/impl/signal_set_service.ipp -/boost/asio/detail/impl/socket_ops.ipp -/boost/asio/detail/impl/socket_select_interrupter.ipp -/boost/asio/detail/impl/strand_executor_service.hpp -/boost/asio/detail/impl/strand_executor_service.ipp -/boost/asio/detail/impl/strand_service.hpp -/boost/asio/detail/impl/strand_service.ipp -/boost/asio/detail/impl/thread_context.ipp -/boost/asio/detail/impl/throw_error.ipp -/boost/asio/detail/impl/timer_queue_ptime.ipp -/boost/asio/detail/impl/timer_queue_set.ipp -/boost/asio/detail/impl/win_event.ipp -/boost/asio/detail/impl/win_iocp_handle_service.ipp -/boost/asio/detail/impl/win_iocp_io_context.hpp -/boost/asio/detail/impl/win_iocp_io_context.ipp -/boost/asio/detail/impl/win_iocp_serial_port_service.ipp -/boost/asio/detail/impl/win_iocp_socket_service_base.ipp -/boost/asio/detail/impl/win_mutex.ipp -/boost/asio/detail/impl/win_object_handle_service.ipp -/boost/asio/detail/impl/winrt_ssocket_service_base.ipp -/boost/asio/detail/impl/winrt_timer_scheduler.hpp -/boost/asio/detail/impl/winrt_timer_scheduler.ipp -/boost/asio/detail/impl/winsock_init.ipp -/boost/asio/detail/impl/win_static_mutex.ipp -/boost/asio/detail/impl/win_thread.ipp -/boost/asio/detail/impl/win_tss_ptr.ipp -/boost/asio/detail/io_control.hpp -/boost/asio/detail/io_object_impl.hpp -/boost/asio/detail/is_buffer_sequence.hpp -/boost/asio/detail/is_executor.hpp -/boost/asio/detail/keyword_tss_ptr.hpp -/boost/asio/detail/kqueue_reactor.hpp -/boost/asio/detail/limits.hpp -/boost/asio/detail/local_free_on_block_exit.hpp -/boost/asio/detail/macos_fenced_block.hpp -/boost/asio/detail/memory.hpp -/boost/asio/detail/mutex.hpp -/boost/asio/detail/non_const_lvalue.hpp -/boost/asio/detail/noncopyable.hpp -/boost/asio/detail/null_event.hpp -/boost/asio/detail/null_fenced_block.hpp -/boost/asio/detail/null_global.hpp -/boost/asio/detail/null_mutex.hpp -/boost/asio/detail/null_reactor.hpp -/boost/asio/detail/null_signal_blocker.hpp -/boost/asio/detail/null_socket_service.hpp -/boost/asio/detail/null_static_mutex.hpp -/boost/asio/detail/null_thread.hpp -/boost/asio/detail/null_tss_ptr.hpp -/boost/asio/detail/object_pool.hpp -/boost/asio/detail/old_win_sdk_compat.hpp -/boost/asio/detail/operation.hpp -/boost/asio/detail/op_queue.hpp -/boost/asio/detail/pipe_select_interrupter.hpp -/boost/asio/detail/pop_options.hpp -/boost/asio/detail/posix_event.hpp -/boost/asio/detail/posix_fd_set_adapter.hpp -/boost/asio/detail/posix_global.hpp -/boost/asio/detail/posix_mutex.hpp -/boost/asio/detail/posix_signal_blocker.hpp -/boost/asio/detail/posix_static_mutex.hpp -/boost/asio/detail/posix_thread.hpp -/boost/asio/detail/posix_tss_ptr.hpp -/boost/asio/detail/push_options.hpp -/boost/asio/detail/reactive_descriptor_service.hpp -/boost/asio/detail/reactive_null_buffers_op.hpp -/boost/asio/detail/reactive_serial_port_service.hpp -/boost/asio/detail/reactive_socket_accept_op.hpp -/boost/asio/detail/reactive_socket_connect_op.hpp -/boost/asio/detail/reactive_socket_recvfrom_op.hpp -/boost/asio/detail/reactive_socket_recvmsg_op.hpp -/boost/asio/detail/reactive_socket_recv_op.hpp -/boost/asio/detail/reactive_socket_send_op.hpp -/boost/asio/detail/reactive_socket_sendto_op.hpp -/boost/asio/detail/reactive_socket_service_base.hpp -/boost/asio/detail/reactive_socket_service.hpp -/boost/asio/detail/reactive_wait_op.hpp -/boost/asio/detail/reactor_fwd.hpp -/boost/asio/detail/reactor.hpp -/boost/asio/detail/reactor_op.hpp -/boost/asio/detail/reactor_op_queue.hpp -/boost/asio/detail/recycling_allocator.hpp -/boost/asio/detail/regex_fwd.hpp -/boost/asio/detail/resolve_endpoint_op.hpp -/boost/asio/detail/resolve_op.hpp -/boost/asio/detail/resolve_query_op.hpp -/boost/asio/detail/resolver_service_base.hpp -/boost/asio/detail/resolver_service.hpp -/boost/asio/detail/scheduler.hpp -/boost/asio/detail/scheduler_operation.hpp -/boost/asio/detail/scheduler_thread_info.hpp -/boost/asio/detail/scoped_lock.hpp -/boost/asio/detail/scoped_ptr.hpp -/boost/asio/detail/select_interrupter.hpp -/boost/asio/detail/select_reactor.hpp -/boost/asio/detail/service_registry.hpp -/boost/asio/detail/signal_blocker.hpp -/boost/asio/detail/signal_handler.hpp -/boost/asio/detail/signal_init.hpp -/boost/asio/detail/signal_op.hpp -/boost/asio/detail/signal_set_service.hpp -/boost/asio/detail/socket_holder.hpp -/boost/asio/detail/socket_ops.hpp -/boost/asio/detail/socket_option.hpp -/boost/asio/detail/socket_select_interrupter.hpp -/boost/asio/detail/socket_types.hpp -/boost/asio/detail/solaris_fenced_block.hpp -/boost/asio/detail/source_location.hpp -/boost/asio/detail/static_mutex.hpp -/boost/asio/detail/std_event.hpp -/boost/asio/detail/std_fenced_block.hpp -/boost/asio/detail/std_global.hpp -/boost/asio/detail/std_mutex.hpp -/boost/asio/detail/std_static_mutex.hpp -/boost/asio/detail/std_thread.hpp -/boost/asio/detail/strand_executor_service.hpp -/boost/asio/detail/strand_service.hpp -/boost/asio/detail/string_view.hpp -/boost/asio/detail/thread_context.hpp -/boost/asio/detail/thread_group.hpp -/boost/asio/detail/thread.hpp -/boost/asio/detail/thread_info_base.hpp -/boost/asio/detail/throw_error.hpp -/boost/asio/detail/throw_exception.hpp -/boost/asio/detail/timer_queue_base.hpp -/boost/asio/detail/timer_queue.hpp -/boost/asio/detail/timer_queue_ptime.hpp -/boost/asio/detail/timer_queue_set.hpp -/boost/asio/detail/timer_scheduler_fwd.hpp -/boost/asio/detail/timer_scheduler.hpp -/boost/asio/detail/tss_ptr.hpp -/boost/asio/detail/type_traits.hpp -/boost/asio/detail/variadic_templates.hpp -/boost/asio/detail/wait_handler.hpp -/boost/asio/detail/wait_op.hpp -/boost/asio/detail/winapp_thread.hpp -/boost/asio/detail/wince_thread.hpp -/boost/asio/detail/win_event.hpp -/boost/asio/detail/win_fd_set_adapter.hpp -/boost/asio/detail/win_fenced_block.hpp -/boost/asio/detail/win_global.hpp -/boost/asio/detail/win_iocp_handle_read_op.hpp -/boost/asio/detail/win_iocp_handle_service.hpp -/boost/asio/detail/win_iocp_handle_write_op.hpp -/boost/asio/detail/win_iocp_io_context.hpp -/boost/asio/detail/win_iocp_null_buffers_op.hpp -/boost/asio/detail/win_iocp_operation.hpp -/boost/asio/detail/win_iocp_overlapped_op.hpp -/boost/asio/detail/win_iocp_overlapped_ptr.hpp -/boost/asio/detail/win_iocp_serial_port_service.hpp -/boost/asio/detail/win_iocp_socket_accept_op.hpp -/boost/asio/detail/win_iocp_socket_connect_op.hpp -/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp -/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp -/boost/asio/detail/win_iocp_socket_recv_op.hpp -/boost/asio/detail/win_iocp_socket_send_op.hpp -/boost/asio/detail/win_iocp_socket_service_base.hpp -/boost/asio/detail/win_iocp_socket_service.hpp -/boost/asio/detail/win_iocp_thread_info.hpp -/boost/asio/detail/win_iocp_wait_op.hpp -/boost/asio/detail/win_mutex.hpp -/boost/asio/detail/win_object_handle_service.hpp -/boost/asio/detail/winrt_async_manager.hpp -/boost/asio/detail/winrt_async_op.hpp -/boost/asio/detail/winrt_resolve_op.hpp -/boost/asio/detail/winrt_resolver_service.hpp -/boost/asio/detail/winrt_socket_connect_op.hpp -/boost/asio/detail/winrt_socket_recv_op.hpp -/boost/asio/detail/winrt_socket_send_op.hpp -/boost/asio/detail/winrt_ssocket_service_base.hpp -/boost/asio/detail/winrt_ssocket_service.hpp -/boost/asio/detail/winrt_timer_scheduler.hpp -/boost/asio/detail/winrt_utils.hpp -/boost/asio/detail/winsock_init.hpp -/boost/asio/detail/win_static_mutex.hpp -/boost/asio/detail/win_thread.hpp -/boost/asio/detail/win_tss_ptr.hpp -/boost/asio/detail/work_dispatcher.hpp -/boost/asio/detail/wrapped_handler.hpp -/boost/asio/dispatch.hpp -/boost/asio/error.hpp -/boost/asio/execution/ -/boost/asio/execution/allocator.hpp -/boost/asio/execution/any_executor.hpp -/boost/asio/execution/bad_executor.hpp -/boost/asio/execution/blocking_adaptation.hpp -/boost/asio/execution/blocking.hpp -/boost/asio/execution/bulk_execute.hpp -/boost/asio/execution/bulk_guarantee.hpp -/boost/asio/execution/connect.hpp -/boost/asio/execution/context_as.hpp -/boost/asio/execution/context.hpp -/boost/asio/execution_context.hpp -/boost/asio/execution/detail/ -/boost/asio/execution/detail/as_invocable.hpp -/boost/asio/execution/detail/as_operation.hpp -/boost/asio/execution/detail/as_receiver.hpp -/boost/asio/execution/detail/bulk_sender.hpp -/boost/asio/execution/detail/submit_receiver.hpp -/boost/asio/execution/detail/void_receiver.hpp -/boost/asio/execution/execute.hpp -/boost/asio/execution/executor.hpp -/boost/asio/execution.hpp -/boost/asio/execution/impl/ -/boost/asio/execution/impl/bad_executor.ipp -/boost/asio/execution/impl/receiver_invocation_error.ipp -/boost/asio/execution/invocable_archetype.hpp -/boost/asio/execution/mapping.hpp -/boost/asio/execution/occupancy.hpp -/boost/asio/execution/operation_state.hpp -/boost/asio/execution/outstanding_work.hpp -/boost/asio/execution/prefer_only.hpp -/boost/asio/execution/receiver.hpp -/boost/asio/execution/receiver_invocation_error.hpp -/boost/asio/execution/relationship.hpp -/boost/asio/execution/schedule.hpp -/boost/asio/execution/scheduler.hpp -/boost/asio/execution/sender.hpp -/boost/asio/execution/set_done.hpp -/boost/asio/execution/set_error.hpp -/boost/asio/execution/set_value.hpp -/boost/asio/execution/start.hpp -/boost/asio/execution/submit.hpp -/boost/asio/executor.hpp -/boost/asio/executor_work_guard.hpp -/boost/asio/experimental/ -/boost/asio/experimental/append.hpp -/boost/asio/experimental/as_single.hpp -/boost/asio/experimental/as_tuple.hpp -/boost/asio/experimental/awaitable_operators.hpp -/boost/asio/experimental/cancellation_condition.hpp -/boost/asio/experimental/coro.hpp -/boost/asio/experimental/deferred.hpp -/boost/asio/experimental/detail/ -/boost/asio/experimental/detail/completion_handler_erasure.hpp -/boost/asio/experimental/detail/coro_promise_allocator.hpp -/boost/asio/experimental/detail/coro_traits.hpp -/boost/asio/experimental/detail/partial_promise.hpp -/boost/asio/experimental/impl/ -/boost/asio/experimental/impl/append.hpp -/boost/asio/experimental/impl/as_single.hpp -/boost/asio/experimental/impl/as_tuple.hpp -/boost/asio/experimental/impl/deferred.hpp -/boost/asio/experimental/impl/parallel_group.hpp -/boost/asio/experimental/impl/prepend.hpp -/boost/asio/experimental/impl/promise.hpp -/boost/asio/experimental/parallel_group.hpp -/boost/asio/experimental/prepend.hpp -/boost/asio/experimental/promise.hpp -/boost/asio/experimental/use_coro.hpp -/boost/asio/generic/ -/boost/asio/generic/basic_endpoint.hpp -/boost/asio/generic/datagram_protocol.hpp -/boost/asio/generic/detail/ -/boost/asio/generic/detail/endpoint.hpp -/boost/asio/generic/detail/impl/ -/boost/asio/generic/detail/impl/endpoint.ipp -/boost/asio/generic/raw_protocol.hpp -/boost/asio/generic/seq_packet_protocol.hpp -/boost/asio/generic/stream_protocol.hpp -/boost/asio/handler_alloc_hook.hpp -/boost/asio/handler_continuation_hook.hpp -/boost/asio/handler_invoke_hook.hpp -/boost/asio/high_resolution_timer.hpp -/boost/asio.hpp -/boost/asio/impl/ -/boost/asio/impl/awaitable.hpp -/boost/asio/impl/buffered_read_stream.hpp -/boost/asio/impl/buffered_write_stream.hpp -/boost/asio/impl/compose.hpp -/boost/asio/impl/connect.hpp -/boost/asio/impl/co_spawn.hpp -/boost/asio/impl/defer.hpp -/boost/asio/impl/detached.hpp -/boost/asio/impl/dispatch.hpp -/boost/asio/impl/error.ipp -/boost/asio/impl/execution_context.hpp -/boost/asio/impl/execution_context.ipp -/boost/asio/impl/executor.hpp -/boost/asio/impl/executor.ipp -/boost/asio/impl/handler_alloc_hook.ipp -/boost/asio/impl/io_context.hpp -/boost/asio/impl/io_context.ipp -/boost/asio/impl/multiple_exceptions.ipp -/boost/asio/impl/post.hpp -/boost/asio/impl/read_at.hpp -/boost/asio/impl/read.hpp -/boost/asio/impl/read_until.hpp -/boost/asio/impl/redirect_error.hpp -/boost/asio/impl/serial_port_base.hpp -/boost/asio/impl/serial_port_base.ipp -/boost/asio/impl/spawn.hpp -/boost/asio/impl/src.hpp -/boost/asio/impl/system_context.hpp -/boost/asio/impl/system_context.ipp -/boost/asio/impl/system_executor.hpp -/boost/asio/impl/thread_pool.hpp -/boost/asio/impl/thread_pool.ipp -/boost/asio/impl/use_awaitable.hpp -/boost/asio/impl/use_future.hpp -/boost/asio/impl/write_at.hpp -/boost/asio/impl/write.hpp -/boost/asio/io_context.hpp -/boost/asio/io_context_strand.hpp -/boost/asio/io_service.hpp -/boost/asio/io_service_strand.hpp -/boost/asio/ip/ -/boost/asio/ip/address.hpp -/boost/asio/ip/address_v4.hpp -/boost/asio/ip/address_v4_iterator.hpp -/boost/asio/ip/address_v4_range.hpp -/boost/asio/ip/address_v6.hpp -/boost/asio/ip/address_v6_iterator.hpp -/boost/asio/ip/address_v6_range.hpp -/boost/asio/ip/bad_address_cast.hpp -/boost/asio/ip/basic_endpoint.hpp -/boost/asio/ip/basic_resolver_entry.hpp -/boost/asio/ip/basic_resolver.hpp -/boost/asio/ip/basic_resolver_iterator.hpp -/boost/asio/ip/basic_resolver_query.hpp -/boost/asio/ip/basic_resolver_results.hpp -/boost/asio/ip/detail/ -/boost/asio/ip/detail/endpoint.hpp -/boost/asio/ip/detail/impl/ -/boost/asio/ip/detail/impl/endpoint.ipp -/boost/asio/ip/detail/socket_option.hpp -/boost/asio/ip/host_name.hpp -/boost/asio/ip/icmp.hpp -/boost/asio/ip/impl/ -/boost/asio/ip/impl/address.hpp -/boost/asio/ip/impl/address.ipp -/boost/asio/ip/impl/address_v4.hpp -/boost/asio/ip/impl/address_v4.ipp -/boost/asio/ip/impl/address_v6.hpp -/boost/asio/ip/impl/address_v6.ipp -/boost/asio/ip/impl/basic_endpoint.hpp -/boost/asio/ip/impl/host_name.ipp -/boost/asio/ip/impl/network_v4.hpp -/boost/asio/ip/impl/network_v4.ipp -/boost/asio/ip/impl/network_v6.hpp -/boost/asio/ip/impl/network_v6.ipp -/boost/asio/ip/multicast.hpp -/boost/asio/ip/network_v4.hpp -/boost/asio/ip/network_v6.hpp -/boost/asio/ip/resolver_base.hpp -/boost/asio/ip/resolver_query_base.hpp -/boost/asio/ip/tcp.hpp -/boost/asio/ip/udp.hpp -/boost/asio/ip/unicast.hpp -/boost/asio/ip/v6_only.hpp -/boost/asio/is_applicable_property.hpp -/boost/asio/is_executor.hpp -/boost/asio/is_read_buffered.hpp -/boost/asio/is_write_buffered.hpp -/boost/asio/local/ -/boost/asio/local/basic_endpoint.hpp -/boost/asio/local/connect_pair.hpp -/boost/asio/local/datagram_protocol.hpp -/boost/asio/local/detail/ -/boost/asio/local/detail/endpoint.hpp -/boost/asio/local/detail/impl/ -/boost/asio/local/detail/impl/endpoint.ipp -/boost/asio/local/stream_protocol.hpp -/boost/asio/multiple_exceptions.hpp -/boost/asio/packaged_task.hpp -/boost/asio/placeholders.hpp -/boost/asio/posix/ -/boost/asio/posix/basic_descriptor.hpp -/boost/asio/posix/basic_stream_descriptor.hpp -/boost/asio/posix/descriptor_base.hpp -/boost/asio/posix/descriptor.hpp -/boost/asio/posix/stream_descriptor.hpp -/boost/asio/post.hpp -/boost/asio/prefer.hpp -/boost/asio/query.hpp -/boost/asio/read_at.hpp -/boost/asio/read.hpp -/boost/asio/read_until.hpp -/boost/asio/redirect_error.hpp -/boost/asio/require_concept.hpp -/boost/asio/require.hpp -/boost/asio/serial_port_base.hpp -/boost/asio/serial_port.hpp -/boost/asio/signal_set.hpp -/boost/asio/socket_base.hpp -/boost/asio/spawn.hpp -/boost/asio/ssl/ -/boost/asio/ssl/context_base.hpp -/boost/asio/ssl/context.hpp -/boost/asio/ssl/detail/ -/boost/asio/ssl/detail/buffered_handshake_op.hpp -/boost/asio/ssl/detail/engine.hpp -/boost/asio/ssl/detail/handshake_op.hpp -/boost/asio/ssl/detail/impl/ -/boost/asio/ssl/detail/impl/engine.ipp -/boost/asio/ssl/detail/impl/openssl_init.ipp -/boost/asio/ssl/detail/io.hpp -/boost/asio/ssl/detail/openssl_init.hpp -/boost/asio/ssl/detail/openssl_types.hpp -/boost/asio/ssl/detail/password_callback.hpp -/boost/asio/ssl/detail/read_op.hpp -/boost/asio/ssl/detail/shutdown_op.hpp -/boost/asio/ssl/detail/stream_core.hpp -/boost/asio/ssl/detail/verify_callback.hpp -/boost/asio/ssl/detail/write_op.hpp -/boost/asio/ssl/error.hpp -/boost/asio/ssl/host_name_verification.hpp -/boost/asio/ssl.hpp -/boost/asio/ssl/impl/ -/boost/asio/ssl/impl/context.hpp -/boost/asio/ssl/impl/context.ipp -/boost/asio/ssl/impl/error.ipp -/boost/asio/ssl/impl/host_name_verification.ipp -/boost/asio/ssl/impl/rfc2818_verification.ipp -/boost/asio/ssl/impl/src.hpp -/boost/asio/ssl/rfc2818_verification.hpp -/boost/asio/ssl/stream_base.hpp -/boost/asio/ssl/stream.hpp -/boost/asio/ssl/verify_context.hpp -/boost/asio/ssl/verify_mode.hpp -/boost/asio/static_thread_pool.hpp -/boost/asio/steady_timer.hpp -/boost/asio/strand.hpp -/boost/asio/streambuf.hpp -/boost/asio/system_context.hpp -/boost/asio/system_executor.hpp -/boost/asio/system_timer.hpp -/boost/asio/this_coro.hpp -/boost/asio/thread_pool.hpp -/boost/asio/time_traits.hpp -/boost/asio/traits/ -/boost/asio/traits/bulk_execute_free.hpp -/boost/asio/traits/bulk_execute_member.hpp -/boost/asio/traits/connect_free.hpp -/boost/asio/traits/connect_member.hpp -/boost/asio/traits/equality_comparable.hpp -/boost/asio/traits/execute_free.hpp -/boost/asio/traits/execute_member.hpp -/boost/asio/traits/prefer_free.hpp -/boost/asio/traits/prefer_member.hpp -/boost/asio/traits/query_free.hpp -/boost/asio/traits/query_member.hpp -/boost/asio/traits/query_static_constexpr_member.hpp -/boost/asio/traits/require_concept_free.hpp -/boost/asio/traits/require_concept_member.hpp -/boost/asio/traits/require_free.hpp -/boost/asio/traits/require_member.hpp -/boost/asio/traits/schedule_free.hpp -/boost/asio/traits/schedule_member.hpp -/boost/asio/traits/set_done_free.hpp -/boost/asio/traits/set_done_member.hpp -/boost/asio/traits/set_error_free.hpp -/boost/asio/traits/set_error_member.hpp -/boost/asio/traits/set_value_free.hpp -/boost/asio/traits/set_value_member.hpp -/boost/asio/traits/start_free.hpp -/boost/asio/traits/start_member.hpp -/boost/asio/traits/static_query.hpp -/boost/asio/traits/static_require_concept.hpp -/boost/asio/traits/static_require.hpp -/boost/asio/traits/submit_free.hpp -/boost/asio/traits/submit_member.hpp -/boost/asio/ts/ -/boost/asio/ts/buffer.hpp -/boost/asio/ts/executor.hpp -/boost/asio/ts/internet.hpp -/boost/asio/ts/io_context.hpp -/boost/asio/ts/netfwd.hpp -/boost/asio/ts/net.hpp -/boost/asio/ts/socket.hpp -/boost/asio/ts/timer.hpp -/boost/asio/unyield.hpp -/boost/asio/use_awaitable.hpp -/boost/asio/use_future.hpp -/boost/asio/uses_executor.hpp -/boost/asio/version.hpp -/boost/asio/wait_traits.hpp -/boost/asio/windows/ -/boost/asio/windows/basic_object_handle.hpp -/boost/asio/windows/basic_overlapped_handle.hpp -/boost/asio/windows/basic_random_access_handle.hpp -/boost/asio/windows/basic_stream_handle.hpp -/boost/asio/windows/object_handle.hpp -/boost/asio/windows/overlapped_handle.hpp -/boost/asio/windows/overlapped_ptr.hpp -/boost/asio/windows/random_access_handle.hpp -/boost/asio/windows/stream_handle.hpp -/boost/asio/write_at.hpp -/boost/asio/write.hpp -/boost/asio/yield.hpp -/boost/cerrno.hpp -/boost/config/ -/boost/config/warning_disable.hpp -/boost/system/ -/boost/system/api_config.hpp -/boost/system/config.hpp -/boost/system/cygwin_error.hpp -/boost/system/detail/ -/boost/system/detail/cerrno.hpp -/boost/system/detail/config.hpp -/boost/system/detail/enable_if.hpp -/boost/system/detail/errc.hpp -/boost/system/detail/error_category.hpp -/boost/system/detail/error_category_impl.hpp -/boost/system/detail/error_code.hpp -/boost/system/detail/error_condition.hpp -/boost/system/detail/generic_category.hpp -/boost/system/detail/generic_category_message.hpp -/boost/system/detail/interop_category.hpp -/boost/system/detail/is_same.hpp -/boost/system/detail/snprintf.hpp -/boost/system/detail/std_category.hpp -/boost/system/detail/system_category_condition_win32.hpp -/boost/system/detail/system_category.hpp -/boost/system/detail/system_category_impl.hpp -/boost/system/detail/system_category_message_win32.hpp -/boost/system/detail/throws.hpp -/boost/system/errc.hpp -/boost/system/error_category.hpp -/boost/system/error_code.hpp -/boost/system/error_condition.hpp -/boost/system/generic_category.hpp -/boost/system/is_error_code_enum.hpp -/boost/system/is_error_condition_enum.hpp -/boost/system/linux_error.hpp -/boost/system/system_category.hpp -/boost/system/system_error.hpp -/boost/system/windows_error.hpp -/doc/ -/doc/html/ -/doc/html/boost_asio/ -/doc/html/boost_asio/async_op1.png -/doc/html/boost_asio/async_op2.png -/doc/html/boost_asio/example/ -/doc/html/boost_asio/example/cpp03/ -/doc/html/boost_asio/example/cpp03/allocation/ -/doc/html/boost_asio/example/cpp03/allocation/server.cpp -/doc/html/boost_asio/example/cpp03/buffers/ -/doc/html/boost_asio/example/cpp03/buffers/reference_counted.cpp -/doc/html/boost_asio/example/cpp03/chat/ -/doc/html/boost_asio/example/cpp03/chat/chat_client.cpp -/doc/html/boost_asio/example/cpp03/chat/chat_message.hpp -/doc/html/boost_asio/example/cpp03/chat/chat_server.cpp -/doc/html/boost_asio/example/cpp03/chat/posix_chat_client.cpp -/doc/html/boost_asio/example/cpp03/echo/ -/doc/html/boost_asio/example/cpp03/echo/async_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp03/echo/async_udp_echo_server.cpp -/doc/html/boost_asio/example/cpp03/echo/blocking_tcp_echo_client.cpp -/doc/html/boost_asio/example/cpp03/echo/blocking_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp03/echo/blocking_udp_echo_client.cpp -/doc/html/boost_asio/example/cpp03/echo/blocking_udp_echo_server.cpp -/doc/html/boost_asio/example/cpp03/fork/ -/doc/html/boost_asio/example/cpp03/fork/daemon.cpp -/doc/html/boost_asio/example/cpp03/fork/process_per_connection.cpp -/doc/html/boost_asio/example/cpp03/http/ -/doc/html/boost_asio/example/cpp03/http/client/ -/doc/html/boost_asio/example/cpp03/http/client/async_client.cpp -/doc/html/boost_asio/example/cpp03/http/client/sync_client.cpp -/doc/html/boost_asio/example/cpp03/http/server/ -/doc/html/boost_asio/example/cpp03/http/server2/ -/doc/html/boost_asio/example/cpp03/http/server2/connection.cpp -/doc/html/boost_asio/example/cpp03/http/server2/connection.hpp -/doc/html/boost_asio/example/cpp03/http/server2/header.hpp -/doc/html/boost_asio/example/cpp03/http/server2/io_context_pool.cpp -/doc/html/boost_asio/example/cpp03/http/server2/io_context_pool.hpp -/doc/html/boost_asio/example/cpp03/http/server2/main.cpp -/doc/html/boost_asio/example/cpp03/http/server2/mime_types.cpp -/doc/html/boost_asio/example/cpp03/http/server2/mime_types.hpp -/doc/html/boost_asio/example/cpp03/http/server2/reply.cpp -/doc/html/boost_asio/example/cpp03/http/server2/reply.hpp -/doc/html/boost_asio/example/cpp03/http/server2/request_handler.cpp -/doc/html/boost_asio/example/cpp03/http/server2/request_handler.hpp -/doc/html/boost_asio/example/cpp03/http/server2/request.hpp -/doc/html/boost_asio/example/cpp03/http/server2/request_parser.cpp -/doc/html/boost_asio/example/cpp03/http/server2/request_parser.hpp -/doc/html/boost_asio/example/cpp03/http/server2/server.cpp -/doc/html/boost_asio/example/cpp03/http/server2/server.hpp -/doc/html/boost_asio/example/cpp03/http/server3/ -/doc/html/boost_asio/example/cpp03/http/server3/connection.cpp -/doc/html/boost_asio/example/cpp03/http/server3/connection.hpp -/doc/html/boost_asio/example/cpp03/http/server3/header.hpp -/doc/html/boost_asio/example/cpp03/http/server3/main.cpp -/doc/html/boost_asio/example/cpp03/http/server3/mime_types.cpp -/doc/html/boost_asio/example/cpp03/http/server3/mime_types.hpp -/doc/html/boost_asio/example/cpp03/http/server3/reply.cpp -/doc/html/boost_asio/example/cpp03/http/server3/reply.hpp -/doc/html/boost_asio/example/cpp03/http/server3/request_handler.cpp -/doc/html/boost_asio/example/cpp03/http/server3/request_handler.hpp -/doc/html/boost_asio/example/cpp03/http/server3/request.hpp -/doc/html/boost_asio/example/cpp03/http/server3/request_parser.cpp -/doc/html/boost_asio/example/cpp03/http/server3/request_parser.hpp -/doc/html/boost_asio/example/cpp03/http/server3/server.cpp -/doc/html/boost_asio/example/cpp03/http/server3/server.hpp -/doc/html/boost_asio/example/cpp03/http/server4/ -/doc/html/boost_asio/example/cpp03/http/server4/file_handler.cpp -/doc/html/boost_asio/example/cpp03/http/server4/file_handler.hpp -/doc/html/boost_asio/example/cpp03/http/server4/header.hpp -/doc/html/boost_asio/example/cpp03/http/server4/main.cpp -/doc/html/boost_asio/example/cpp03/http/server4/mime_types.cpp -/doc/html/boost_asio/example/cpp03/http/server4/mime_types.hpp -/doc/html/boost_asio/example/cpp03/http/server4/reply.cpp -/doc/html/boost_asio/example/cpp03/http/server4/reply.hpp -/doc/html/boost_asio/example/cpp03/http/server4/request.hpp -/doc/html/boost_asio/example/cpp03/http/server4/request_parser.cpp -/doc/html/boost_asio/example/cpp03/http/server4/request_parser.hpp -/doc/html/boost_asio/example/cpp03/http/server4/server.cpp -/doc/html/boost_asio/example/cpp03/http/server4/server.hpp -/doc/html/boost_asio/example/cpp03/http/server/connection.cpp -/doc/html/boost_asio/example/cpp03/http/server/connection.hpp -/doc/html/boost_asio/example/cpp03/http/server/connection_manager.cpp -/doc/html/boost_asio/example/cpp03/http/server/connection_manager.hpp -/doc/html/boost_asio/example/cpp03/http/server/header.hpp -/doc/html/boost_asio/example/cpp03/http/server/main.cpp -/doc/html/boost_asio/example/cpp03/http/server/mime_types.cpp -/doc/html/boost_asio/example/cpp03/http/server/mime_types.hpp -/doc/html/boost_asio/example/cpp03/http/server/reply.cpp -/doc/html/boost_asio/example/cpp03/http/server/reply.hpp -/doc/html/boost_asio/example/cpp03/http/server/request_handler.cpp -/doc/html/boost_asio/example/cpp03/http/server/request_handler.hpp -/doc/html/boost_asio/example/cpp03/http/server/request.hpp -/doc/html/boost_asio/example/cpp03/http/server/request_parser.cpp -/doc/html/boost_asio/example/cpp03/http/server/request_parser.hpp -/doc/html/boost_asio/example/cpp03/http/server/server.cpp -/doc/html/boost_asio/example/cpp03/http/server/server.hpp -/doc/html/boost_asio/example/cpp03/icmp/ -/doc/html/boost_asio/example/cpp03/icmp/icmp_header.hpp -/doc/html/boost_asio/example/cpp03/icmp/ipv4_header.hpp -/doc/html/boost_asio/example/cpp03/icmp/ping.cpp -/doc/html/boost_asio/example/cpp03/invocation/ -/doc/html/boost_asio/example/cpp03/invocation/prioritised_handlers.cpp -/doc/html/boost_asio/example/cpp03/iostreams/ -/doc/html/boost_asio/example/cpp03/iostreams/daytime_client.cpp -/doc/html/boost_asio/example/cpp03/iostreams/daytime_server.cpp -/doc/html/boost_asio/example/cpp03/iostreams/http_client.cpp -/doc/html/boost_asio/example/cpp03/local/ -/doc/html/boost_asio/example/cpp03/local/connect_pair.cpp -/doc/html/boost_asio/example/cpp03/local/iostream_client.cpp -/doc/html/boost_asio/example/cpp03/local/stream_client.cpp -/doc/html/boost_asio/example/cpp03/local/stream_server.cpp -/doc/html/boost_asio/example/cpp03/multicast/ -/doc/html/boost_asio/example/cpp03/multicast/receiver.cpp -/doc/html/boost_asio/example/cpp03/multicast/sender.cpp -/doc/html/boost_asio/example/cpp03/nonblocking/ -/doc/html/boost_asio/example/cpp03/nonblocking/third_party_lib.cpp -/doc/html/boost_asio/example/cpp03/porthopper/ -/doc/html/boost_asio/example/cpp03/porthopper/client.cpp -/doc/html/boost_asio/example/cpp03/porthopper/protocol.hpp -/doc/html/boost_asio/example/cpp03/porthopper/server.cpp -/doc/html/boost_asio/example/cpp03/serialization/ -/doc/html/boost_asio/example/cpp03/serialization/client.cpp -/doc/html/boost_asio/example/cpp03/serialization/connection.hpp -/doc/html/boost_asio/example/cpp03/serialization/server.cpp -/doc/html/boost_asio/example/cpp03/serialization/stock.hpp -/doc/html/boost_asio/example/cpp03/services/ -/doc/html/boost_asio/example/cpp03/services/basic_logger.hpp -/doc/html/boost_asio/example/cpp03/services/daytime_client.cpp -/doc/html/boost_asio/example/cpp03/services/logger.hpp -/doc/html/boost_asio/example/cpp03/services/logger_service.cpp -/doc/html/boost_asio/example/cpp03/services/logger_service.hpp -/doc/html/boost_asio/example/cpp03/socks4/ -/doc/html/boost_asio/example/cpp03/socks4/socks4.hpp -/doc/html/boost_asio/example/cpp03/socks4/sync_client.cpp -/doc/html/boost_asio/example/cpp03/spawn/ -/doc/html/boost_asio/example/cpp03/spawn/echo_server.cpp -/doc/html/boost_asio/example/cpp03/spawn/parallel_grep.cpp -/doc/html/boost_asio/example/cpp03/ssl/ -/doc/html/boost_asio/example/cpp03/ssl/client.cpp -/doc/html/boost_asio/example/cpp03/ssl/server.cpp -/doc/html/boost_asio/example/cpp03/timeouts/ -/doc/html/boost_asio/example/cpp03/timeouts/async_tcp_client.cpp -/doc/html/boost_asio/example/cpp03/timeouts/blocking_tcp_client.cpp -/doc/html/boost_asio/example/cpp03/timeouts/blocking_token_tcp_client.cpp -/doc/html/boost_asio/example/cpp03/timeouts/blocking_udp_client.cpp -/doc/html/boost_asio/example/cpp03/timeouts/server.cpp -/doc/html/boost_asio/example/cpp03/timers/ -/doc/html/boost_asio/example/cpp03/timers/time_t_timer.cpp -/doc/html/boost_asio/example/cpp03/windows/ -/doc/html/boost_asio/example/cpp03/windows/transmit_file.cpp -/doc/html/boost_asio/example/cpp11/ -/doc/html/boost_asio/example/cpp11/allocation/ -/doc/html/boost_asio/example/cpp11/allocation/server.cpp -/doc/html/boost_asio/example/cpp11/buffers/ -/doc/html/boost_asio/example/cpp11/buffers/reference_counted.cpp -/doc/html/boost_asio/example/cpp11/chat/ -/doc/html/boost_asio/example/cpp11/chat/chat_client.cpp -/doc/html/boost_asio/example/cpp11/chat/chat_message.hpp -/doc/html/boost_asio/example/cpp11/chat/chat_server.cpp -/doc/html/boost_asio/example/cpp11/echo/ -/doc/html/boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/echo/async_udp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/echo/blocking_tcp_echo_client.cpp -/doc/html/boost_asio/example/cpp11/echo/blocking_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/echo/blocking_udp_echo_client.cpp -/doc/html/boost_asio/example/cpp11/echo/blocking_udp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/executors/ -/doc/html/boost_asio/example/cpp11/executors/actor.cpp -/doc/html/boost_asio/example/cpp11/executors/bank_account_1.cpp -/doc/html/boost_asio/example/cpp11/executors/bank_account_2.cpp -/doc/html/boost_asio/example/cpp11/executors/fork_join.cpp -/doc/html/boost_asio/example/cpp11/executors/pipeline.cpp -/doc/html/boost_asio/example/cpp11/executors/priority_scheduler.cpp -/doc/html/boost_asio/example/cpp11/fork/ -/doc/html/boost_asio/example/cpp11/fork/daemon.cpp -/doc/html/boost_asio/example/cpp11/fork/process_per_connection.cpp -/doc/html/boost_asio/example/cpp11/futures/ -/doc/html/boost_asio/example/cpp11/futures/daytime_client.cpp -/doc/html/boost_asio/example/cpp11/handler_tracking/ -/doc/html/boost_asio/example/cpp11/handler_tracking/async_tcp_echo_server.cpp -/doc/html/boost_asio/example/cpp11/handler_tracking/custom_tracking.hpp -/doc/html/boost_asio/example/cpp11/http/ -/doc/html/boost_asio/example/cpp11/http/server/ -/doc/html/boost_asio/example/cpp11/http/server/connection.cpp -/doc/html/boost_asio/example/cpp11/http/server/connection.hpp -/doc/html/boost_asio/example/cpp11/http/server/connection_manager.cpp -/doc/html/boost_asio/example/cpp11/http/server/connection_manager.hpp -/doc/html/boost_asio/example/cpp11/http/server/header.hpp -/doc/html/boost_asio/example/cpp11/http/server/main.cpp -/doc/html/boost_asio/example/cpp11/http/server/mime_types.cpp -/doc/html/boost_asio/example/cpp11/http/server/mime_types.hpp -/doc/html/boost_asio/example/cpp11/http/server/reply.cpp -/doc/html/boost_asio/example/cpp11/http/server/reply.hpp -/doc/html/boost_asio/example/cpp11/http/server/request_handler.cpp -/doc/html/boost_asio/example/cpp11/http/server/request_handler.hpp -/doc/html/boost_asio/example/cpp11/http/server/request.hpp -/doc/html/boost_asio/example/cpp11/http/server/request_parser.cpp -/doc/html/boost_asio/example/cpp11/http/server/request_parser.hpp -/doc/html/boost_asio/example/cpp11/http/server/server.cpp -/doc/html/boost_asio/example/cpp11/http/server/server.hpp -/doc/html/boost_asio/example/cpp11/invocation/ -/doc/html/boost_asio/example/cpp11/invocation/prioritised_handlers.cpp -/doc/html/boost_asio/example/cpp11/local/ -/doc/html/boost_asio/example/cpp11/local/connect_pair.cpp -/doc/html/boost_asio/example/cpp11/local/iostream_client.cpp -/doc/html/boost_asio/example/cpp11/local/stream_client.cpp -/doc/html/boost_asio/example/cpp11/local/stream_server.cpp -/doc/html/boost_asio/example/cpp11/multicast/ -/doc/html/boost_asio/example/cpp11/multicast/receiver.cpp -/doc/html/boost_asio/example/cpp11/multicast/sender.cpp -/doc/html/boost_asio/example/cpp11/nonblocking/ -/doc/html/boost_asio/example/cpp11/nonblocking/third_party_lib.cpp -/doc/html/boost_asio/example/cpp11/operations/ -/doc/html/boost_asio/example/cpp11/operations/composed_1.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_2.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_3.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_4.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_5.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_6.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_7.cpp -/doc/html/boost_asio/example/cpp11/operations/composed_8.cpp -/doc/html/boost_asio/example/cpp11/socks4/ -/doc/html/boost_asio/example/cpp11/socks4/socks4.hpp -/doc/html/boost_asio/example/cpp11/socks4/sync_client.cpp -/doc/html/boost_asio/example/cpp11/spawn/ -/doc/html/boost_asio/example/cpp11/spawn/echo_server.cpp -/doc/html/boost_asio/example/cpp11/spawn/parallel_grep.cpp -/doc/html/boost_asio/example/cpp11/ssl/ -/doc/html/boost_asio/example/cpp11/ssl/client.cpp -/doc/html/boost_asio/example/cpp11/ssl/server.cpp -/doc/html/boost_asio/example/cpp11/timeouts/ -/doc/html/boost_asio/example/cpp11/timeouts/async_tcp_client.cpp -/doc/html/boost_asio/example/cpp11/timeouts/blocking_tcp_client.cpp -/doc/html/boost_asio/example/cpp11/timeouts/blocking_token_tcp_client.cpp -/doc/html/boost_asio/example/cpp11/timeouts/blocking_udp_client.cpp -/doc/html/boost_asio/example/cpp11/timeouts/server.cpp -/doc/html/boost_asio/example/cpp11/timers/ -/doc/html/boost_asio/example/cpp11/timers/time_t_timer.cpp -/doc/html/boost_asio/example/cpp14/ -/doc/html/boost_asio/example/cpp14/deferred/ -/doc/html/boost_asio/example/cpp14/deferred/deferred_1.cpp -/doc/html/boost_asio/example/cpp14/deferred/deferred_2.cpp -/doc/html/boost_asio/example/cpp14/deferred/deferred_3.cpp -/doc/html/boost_asio/example/cpp14/deferred/deferred_4.cpp -/doc/html/boost_asio/example/cpp14/deferred/deferred_5.cpp -/doc/html/boost_asio/example/cpp14/deferred/deferred_6.cpp -/doc/html/boost_asio/example/cpp14/deferred/deferred_7.cpp -/doc/html/boost_asio/example/cpp14/executors/ -/doc/html/boost_asio/example/cpp14/executors/actor.cpp -/doc/html/boost_asio/example/cpp14/executors/async_1.cpp -/doc/html/boost_asio/example/cpp14/executors/async_2.cpp -/doc/html/boost_asio/example/cpp14/executors/bank_account_1.cpp -/doc/html/boost_asio/example/cpp14/executors/bank_account_2.cpp -/doc/html/boost_asio/example/cpp14/executors/fork_join.cpp -/doc/html/boost_asio/example/cpp14/executors/pipeline.cpp -/doc/html/boost_asio/example/cpp14/executors/priority_scheduler.cpp -/doc/html/boost_asio/example/cpp14/iostreams/ -/doc/html/boost_asio/example/cpp14/iostreams/http_client.cpp -/doc/html/boost_asio/example/cpp14/operations/ -/doc/html/boost_asio/example/cpp14/operations/composed_1.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_2.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_3.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_4.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_5.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_6.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_7.cpp -/doc/html/boost_asio/example/cpp14/operations/composed_8.cpp -/doc/html/boost_asio/example/cpp14/parallel_group/ -/doc/html/boost_asio/example/cpp14/parallel_group/parallel_sort.cpp -/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_all.cpp -/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one.cpp -/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one_error.cpp -/doc/html/boost_asio/example/cpp14/parallel_group/wait_for_one_success.cpp -/doc/html/boost_asio/example/cpp17/ -/doc/html/boost_asio/example/cpp17/coroutines_ts/ -/doc/html/boost_asio/example/cpp17/coroutines_ts/chat_server.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/range_based_for.cpp -/doc/html/boost_asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp -/doc/html/boost_asio/examples/ -/doc/html/boost_asio/examples/cpp03_examples.html -/doc/html/boost_asio/examples/cpp11_examples.html -/doc/html/boost_asio/examples/cpp14_examples.html -/doc/html/boost_asio/examples/cpp17_examples.html -/doc/html/boost_asio/examples.html -/doc/html/boost_asio/history.html -/doc/html/boost_asio.html -/doc/html/boost_asio/index.html -/doc/html/boost_asio/net_ts.html -/doc/html/boost_asio/overview/ -/doc/html/boost_asio/overview/core/ -/doc/html/boost_asio/overview/core/allocation.html -/doc/html/boost_asio/overview/core/async.html -/doc/html/boost_asio/overview/core/basics.html -/doc/html/boost_asio/overview/core/buffers.html -/doc/html/boost_asio/overview/core/cancellation.html -/doc/html/boost_asio/overview/core/concurrency_hint.html -/doc/html/boost_asio/overview/core/coroutine.html -/doc/html/boost_asio/overview/core/cpp20_coroutines.html -/doc/html/boost_asio/overview/core/handler_tracking.html -/doc/html/boost_asio/overview/core.html -/doc/html/boost_asio/overview/core/line_based.html -/doc/html/boost_asio/overview/core/reactor.html -/doc/html/boost_asio/overview/core/spawn.html -/doc/html/boost_asio/overview/core/strands.html -/doc/html/boost_asio/overview/core/streams.html -/doc/html/boost_asio/overview/core/threads.html -/doc/html/boost_asio/overview/cpp2011/ -/doc/html/boost_asio/overview/cpp2011/array.html -/doc/html/boost_asio/overview/cpp2011/atomic.html -/doc/html/boost_asio/overview/cpp2011/chrono.html -/doc/html/boost_asio/overview/cpp2011/futures.html -/doc/html/boost_asio/overview/cpp2011.html -/doc/html/boost_asio/overview/cpp2011/move_handlers.html -/doc/html/boost_asio/overview/cpp2011/move_objects.html -/doc/html/boost_asio/overview/cpp2011/shared_ptr.html -/doc/html/boost_asio/overview/cpp2011/variadic.html -/doc/html/boost_asio/overview.html -/doc/html/boost_asio/overview/implementation.html -/doc/html/boost_asio/overview/networking/ -/doc/html/boost_asio/overview/networking/bsd_sockets.html -/doc/html/boost_asio/overview/networking.html -/doc/html/boost_asio/overview/networking/iostreams.html -/doc/html/boost_asio/overview/networking/other_protocols.html -/doc/html/boost_asio/overview/networking/protocols.html -/doc/html/boost_asio/overview/posix/ -/doc/html/boost_asio/overview/posix/fork.html -/doc/html/boost_asio/overview/posix.html -/doc/html/boost_asio/overview/posix/local.html -/doc/html/boost_asio/overview/posix/stream_descriptor.html -/doc/html/boost_asio/overview/rationale.html -/doc/html/boost_asio/overview/serial_ports.html -/doc/html/boost_asio/overview/signals.html -/doc/html/boost_asio/overview/ssl.html -/doc/html/boost_asio/overview/timers.html -/doc/html/boost_asio/overview/windows/ -/doc/html/boost_asio/overview/windows.html -/doc/html/boost_asio/overview/windows/object_handle.html -/doc/html/boost_asio/overview/windows/random_access_handle.html -/doc/html/boost_asio/overview/windows/stream_handle.html -/doc/html/boost_asio/proactor.png -/doc/html/boost_asio/reference/ -/doc/html/boost_asio/reference/AcceptableProtocol.html -/doc/html/boost_asio/reference/AcceptHandler.html -/doc/html/boost_asio/reference/any_io_executor/ -/doc/html/boost_asio/reference/any_io_executor/any_io_executor/ -/doc/html/boost_asio/reference/any_io_executor/_any_io_executor.html -/doc/html/boost_asio/reference/any_io_executor/any_io_executor.html -/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload1.html -/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload2.html -/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload3.html -/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload4.html -/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload5.html -/doc/html/boost_asio/reference/any_io_executor/any_io_executor/overload6.html -/doc/html/boost_asio/reference/any_io_executor/context.html -/doc/html/boost_asio/reference/any_io_executor/execute.html -/doc/html/boost_asio/reference/any_io_executor.html -/doc/html/boost_asio/reference/any_io_executor/operator_bool.html -/doc/html/boost_asio/reference/any_io_executor/operator_eq_/ -/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/ -/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_.html -/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload1.html -/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload2.html -/doc/html/boost_asio/reference/any_io_executor/operator_eq__eq_/overload3.html -/doc/html/boost_asio/reference/any_io_executor/operator_eq_.html -/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload1.html -/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload2.html -/doc/html/boost_asio/reference/any_io_executor/operator_eq_/overload3.html -/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/ -/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_.html -/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload1.html -/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload2.html -/doc/html/boost_asio/reference/any_io_executor/operator_not__eq_/overload3.html -/doc/html/boost_asio/reference/any_io_executor/prefer/ -/doc/html/boost_asio/reference/any_io_executor/prefer.html -/doc/html/boost_asio/reference/any_io_executor/prefer/overload1.html -/doc/html/boost_asio/reference/any_io_executor/prefer/overload2.html -/doc/html/boost_asio/reference/any_io_executor/query.html -/doc/html/boost_asio/reference/any_io_executor/require/ -/doc/html/boost_asio/reference/any_io_executor/require.html -/doc/html/boost_asio/reference/any_io_executor/require/overload1.html -/doc/html/boost_asio/reference/any_io_executor/require/overload2.html -/doc/html/boost_asio/reference/any_io_executor/swap/ -/doc/html/boost_asio/reference/any_io_executor/swap.html -/doc/html/boost_asio/reference/any_io_executor/swap/overload1.html -/doc/html/boost_asio/reference/any_io_executor/swap/overload2.html -/doc/html/boost_asio/reference/any_io_executor/target/ -/doc/html/boost_asio/reference/any_io_executor/target.html -/doc/html/boost_asio/reference/any_io_executor/target/overload1.html -/doc/html/boost_asio/reference/any_io_executor/target/overload2.html -/doc/html/boost_asio/reference/any_io_executor/target_type.html -/doc/html/boost_asio/reference/asio_handler_allocate.html -/doc/html/boost_asio/reference/asio_handler_deallocate.html -/doc/html/boost_asio/reference/asio_handler_invoke/ -/doc/html/boost_asio/reference/asio_handler_invoke.html -/doc/html/boost_asio/reference/asio_handler_invoke/overload1.html -/doc/html/boost_asio/reference/asio_handler_invoke/overload2.html -/doc/html/boost_asio/reference/asio_handler_is_continuation.html -/doc/html/boost_asio/reference/associated_allocator/ -/doc/html/boost_asio/reference/associated_allocator/get.html -/doc/html/boost_asio/reference/associated_allocator.html -/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/ -/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/get.html -/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_.html -/doc/html/boost_asio/reference/associated_allocator_lt__reference_wrapper_lt__T__gt__comma__Allocator__gt_/type.html -/doc/html/boost_asio/reference/associated_allocator/type.html -/doc/html/boost_asio/reference/associated_cancellation_slot/ -/doc/html/boost_asio/reference/associated_cancellation_slot/get.html -/doc/html/boost_asio/reference/associated_cancellation_slot.html -/doc/html/boost_asio/reference/associated_cancellation_slot/type.html -/doc/html/boost_asio/reference/associated_executor/ -/doc/html/boost_asio/reference/associated_executor/get.html -/doc/html/boost_asio/reference/associated_executor.html -/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/ -/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/get.html -/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_.html -/doc/html/boost_asio/reference/associated_executor_lt__reference_wrapper_lt__T__gt__comma__Executor__gt_/type.html -/doc/html/boost_asio/reference/associated_executor/type.html -/doc/html/boost_asio/reference/associator.html -/doc/html/boost_asio/reference/async_completion/ -/doc/html/boost_asio/reference/async_completion/async_completion.html -/doc/html/boost_asio/reference/async_completion/completion_handler.html -/doc/html/boost_asio/reference/async_completion/completion_handler_type.html -/doc/html/boost_asio/reference/async_completion.html -/doc/html/boost_asio/reference/async_completion/result.html -/doc/html/boost_asio/reference/async_compose.html -/doc/html/boost_asio/reference/async_connect/ -/doc/html/boost_asio/reference/async_connect.html -/doc/html/boost_asio/reference/async_connect/overload1.html -/doc/html/boost_asio/reference/async_connect/overload2.html -/doc/html/boost_asio/reference/async_connect/overload3.html -/doc/html/boost_asio/reference/async_connect/overload4.html -/doc/html/boost_asio/reference/async_connect/overload5.html -/doc/html/boost_asio/reference/async_connect/overload6.html -/doc/html/boost_asio/reference/asynchronous_operations.html -/doc/html/boost_asio/reference/asynchronous_socket_operations.html -/doc/html/boost_asio/reference/async_initiate.html -/doc/html/boost_asio/reference/AsyncRandomAccessReadDevice.html -/doc/html/boost_asio/reference/AsyncRandomAccessWriteDevice.html -/doc/html/boost_asio/reference/async_read/ -/doc/html/boost_asio/reference/async_read_at/ -/doc/html/boost_asio/reference/async_read_at.html -/doc/html/boost_asio/reference/async_read_at/overload1.html -/doc/html/boost_asio/reference/async_read_at/overload2.html -/doc/html/boost_asio/reference/async_read_at/overload3.html -/doc/html/boost_asio/reference/async_read_at/overload4.html -/doc/html/boost_asio/reference/async_read.html -/doc/html/boost_asio/reference/async_read/overload1.html -/doc/html/boost_asio/reference/async_read/overload2.html -/doc/html/boost_asio/reference/async_read/overload3.html -/doc/html/boost_asio/reference/async_read/overload4.html -/doc/html/boost_asio/reference/async_read/overload5.html -/doc/html/boost_asio/reference/async_read/overload6.html -/doc/html/boost_asio/reference/async_read/overload7.html -/doc/html/boost_asio/reference/async_read/overload8.html -/doc/html/boost_asio/reference/AsyncReadStream.html -/doc/html/boost_asio/reference/async_read_until/ -/doc/html/boost_asio/reference/async_read_until.html -/doc/html/boost_asio/reference/async_read_until/overload10.html -/doc/html/boost_asio/reference/async_read_until/overload11.html -/doc/html/boost_asio/reference/async_read_until/overload12.html -/doc/html/boost_asio/reference/async_read_until/overload1.html -/doc/html/boost_asio/reference/async_read_until/overload2.html -/doc/html/boost_asio/reference/async_read_until/overload3.html -/doc/html/boost_asio/reference/async_read_until/overload4.html -/doc/html/boost_asio/reference/async_read_until/overload5.html -/doc/html/boost_asio/reference/async_read_until/overload6.html -/doc/html/boost_asio/reference/async_read_until/overload7.html -/doc/html/boost_asio/reference/async_read_until/overload8.html -/doc/html/boost_asio/reference/async_read_until/overload9.html -/doc/html/boost_asio/reference/async_result/ -/doc/html/boost_asio/reference/async_result/async_result.html -/doc/html/boost_asio/reference/async_result/completion_handler_type.html -/doc/html/boost_asio/reference/async_result/get.html -/doc/html/boost_asio/reference/async_result.html -/doc/html/boost_asio/reference/async_result/initiate.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/ -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/async_result.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/completion_handler_type.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/get.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_.html -/doc/html/boost_asio/reference/async_result_lt__std__packaged_task_lt__Result_lp_Args_ellipsis__rp__gt__comma__Signature__gt_/return_type.html -/doc/html/boost_asio/reference/async_result/return_type.html -/doc/html/boost_asio/reference/async_write/ -/doc/html/boost_asio/reference/async_write_at/ -/doc/html/boost_asio/reference/async_write_at.html -/doc/html/boost_asio/reference/async_write_at/overload1.html -/doc/html/boost_asio/reference/async_write_at/overload2.html -/doc/html/boost_asio/reference/async_write_at/overload3.html -/doc/html/boost_asio/reference/async_write_at/overload4.html -/doc/html/boost_asio/reference/async_write.html -/doc/html/boost_asio/reference/async_write/overload1.html -/doc/html/boost_asio/reference/async_write/overload2.html -/doc/html/boost_asio/reference/async_write/overload3.html -/doc/html/boost_asio/reference/async_write/overload4.html -/doc/html/boost_asio/reference/async_write/overload5.html -/doc/html/boost_asio/reference/async_write/overload6.html -/doc/html/boost_asio/reference/async_write/overload7.html -/doc/html/boost_asio/reference/async_write/overload8.html -/doc/html/boost_asio/reference/AsyncWriteStream.html -/doc/html/boost_asio/reference/awaitable/ -/doc/html/boost_asio/reference/awaitable/awaitable/ -/doc/html/boost_asio/reference/awaitable/_awaitable.html -/doc/html/boost_asio/reference/awaitable/awaitable.html -/doc/html/boost_asio/reference/awaitable/awaitable/overload1.html -/doc/html/boost_asio/reference/awaitable/awaitable/overload2.html -/doc/html/boost_asio/reference/awaitable/executor_type.html -/doc/html/boost_asio/reference/awaitable.html -/doc/html/boost_asio/reference/awaitable/valid.html -/doc/html/boost_asio/reference/awaitable/value_type.html -/doc/html/boost_asio/reference/bad_executor/ -/doc/html/boost_asio/reference/bad_executor/bad_executor.html -/doc/html/boost_asio/reference/bad_executor.html -/doc/html/boost_asio/reference/bad_executor/what.html -/doc/html/boost_asio/reference/basic_datagram_socket/ -/doc/html/boost_asio/reference/basic_datagram_socket/assign/ -/doc/html/boost_asio/reference/basic_datagram_socket/assign.html -/doc/html/boost_asio/reference/basic_datagram_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_connect.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive/ -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive_from/ -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive_from.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive_from/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive_from/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_receive/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send/ -/doc/html/boost_asio/reference/basic_datagram_socket/async_send.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to/ -/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/async_wait.html -/doc/html/boost_asio/reference/basic_datagram_socket/at_mark/ -/doc/html/boost_asio/reference/basic_datagram_socket/at_mark.html -/doc/html/boost_asio/reference/basic_datagram_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/available/ -/doc/html/boost_asio/reference/basic_datagram_socket/available.html -/doc/html/boost_asio/reference/basic_datagram_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/ -/doc/html/boost_asio/reference/basic_datagram_socket/_basic_datagram_socket.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload10.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload4.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload5.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload6.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload7.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload8.html -/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket/overload9.html -/doc/html/boost_asio/reference/basic_datagram_socket/bind/ -/doc/html/boost_asio/reference/basic_datagram_socket/bind.html -/doc/html/boost_asio/reference/basic_datagram_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/broadcast.html -/doc/html/boost_asio/reference/basic_datagram_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_datagram_socket/cancel/ -/doc/html/boost_asio/reference/basic_datagram_socket/cancel.html -/doc/html/boost_asio/reference/basic_datagram_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/close/ -/doc/html/boost_asio/reference/basic_datagram_socket/close.html -/doc/html/boost_asio/reference/basic_datagram_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/connect/ -/doc/html/boost_asio/reference/basic_datagram_socket/connect.html -/doc/html/boost_asio/reference/basic_datagram_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/debug.html -/doc/html/boost_asio/reference/basic_datagram_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_datagram_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_datagram_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/executor_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/get_executor.html -/doc/html/boost_asio/reference/basic_datagram_socket/get_option/ -/doc/html/boost_asio/reference/basic_datagram_socket/get_option.html -/doc/html/boost_asio/reference/basic_datagram_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket.html -/doc/html/boost_asio/reference/basic_datagram_socket/io_control/ -/doc/html/boost_asio/reference/basic_datagram_socket/io_control.html -/doc/html/boost_asio/reference/basic_datagram_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/is_open.html -/doc/html/boost_asio/reference/basic_datagram_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_datagram_socket/linger.html -/doc/html/boost_asio/reference/basic_datagram_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_datagram_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_datagram_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/max_connections.html -/doc/html/boost_asio/reference/basic_datagram_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_flags.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_datagram_socket/message_peek.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_handle.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/open/ -/doc/html/boost_asio/reference/basic_datagram_socket/open.html -/doc/html/boost_asio/reference/basic_datagram_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_datagram_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_datagram_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_datagram_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_datagram_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_datagram_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_datagram_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive/ -/doc/html/boost_asio/reference/basic_datagram_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from/ -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_from/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/receive/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/release/ -/doc/html/boost_asio/reference/basic_datagram_socket/release.html -/doc/html/boost_asio/reference/basic_datagram_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_datagram_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_datagram_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_datagram_socket/send/ -/doc/html/boost_asio/reference/basic_datagram_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_datagram_socket/send.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_datagram_socket/send/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/send/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/send/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_to/ -/doc/html/boost_asio/reference/basic_datagram_socket/send_to.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_to/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_to/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/send_to/overload3.html -/doc/html/boost_asio/reference/basic_datagram_socket/set_option/ -/doc/html/boost_asio/reference/basic_datagram_socket/set_option.html -/doc/html/boost_asio/reference/basic_datagram_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown/ -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown.html -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_datagram_socket/wait/ -/doc/html/boost_asio/reference/basic_datagram_socket/wait.html -/doc/html/boost_asio/reference/basic_datagram_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_datagram_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_datagram_socket/wait_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/ -/doc/html/boost_asio/reference/basic_deadline_timer/async_wait.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/ -/doc/html/boost_asio/reference/basic_deadline_timer/_basic_deadline_timer.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload3.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload4.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload5.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload6.html -/doc/html/boost_asio/reference/basic_deadline_timer/basic_deadline_timer/overload7.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel/ -/doc/html/boost_asio/reference/basic_deadline_timer/cancel.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel_one/ -/doc/html/boost_asio/reference/basic_deadline_timer/cancel_one.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel_one/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel_one/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/cancel/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/duration_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/executor_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at/ -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_at/overload3.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now/ -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now/overload2.html -/doc/html/boost_asio/reference/basic_deadline_timer/expires_from_now/overload3.html -/doc/html/boost_asio/reference/basic_deadline_timer/get_executor.html -/doc/html/boost_asio/reference/basic_deadline_timer.html -/doc/html/boost_asio/reference/basic_deadline_timer/operator_eq_.html -/doc/html/boost_asio/reference/basic_deadline_timer__rebind_executor/ -/doc/html/boost_asio/reference/basic_deadline_timer__rebind_executor.html -/doc/html/boost_asio/reference/basic_deadline_timer__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_deadline_timer/time_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/traits_type.html -/doc/html/boost_asio/reference/basic_deadline_timer/wait/ -/doc/html/boost_asio/reference/basic_deadline_timer/wait.html -/doc/html/boost_asio/reference/basic_deadline_timer/wait/overload1.html -/doc/html/boost_asio/reference/basic_deadline_timer/wait/overload2.html -/doc/html/boost_asio/reference/basic_io_object/ -/doc/html/boost_asio/reference/basic_io_object/basic_io_object/ -/doc/html/boost_asio/reference/basic_io_object/_basic_io_object.html -/doc/html/boost_asio/reference/basic_io_object/basic_io_object.html -/doc/html/boost_asio/reference/basic_io_object/basic_io_object/overload1.html -/doc/html/boost_asio/reference/basic_io_object/basic_io_object/overload2.html -/doc/html/boost_asio/reference/basic_io_object/basic_io_object/overload3.html -/doc/html/boost_asio/reference/basic_io_object/executor_type.html -/doc/html/boost_asio/reference/basic_io_object/get_executor.html -/doc/html/boost_asio/reference/basic_io_object/get_implementation/ -/doc/html/boost_asio/reference/basic_io_object/get_implementation.html -/doc/html/boost_asio/reference/basic_io_object/get_implementation/overload1.html -/doc/html/boost_asio/reference/basic_io_object/get_implementation/overload2.html -/doc/html/boost_asio/reference/basic_io_object/get_io_context.html -/doc/html/boost_asio/reference/basic_io_object/get_io_service.html -/doc/html/boost_asio/reference/basic_io_object/get_service/ -/doc/html/boost_asio/reference/basic_io_object/get_service.html -/doc/html/boost_asio/reference/basic_io_object/get_service/overload1.html -/doc/html/boost_asio/reference/basic_io_object/get_service/overload2.html -/doc/html/boost_asio/reference/basic_io_object.html -/doc/html/boost_asio/reference/basic_io_object/implementation_type.html -/doc/html/boost_asio/reference/basic_io_object/operator_eq_.html -/doc/html/boost_asio/reference/basic_io_object/service_type.html -/doc/html/boost_asio/reference/basic_raw_socket/ -/doc/html/boost_asio/reference/basic_raw_socket/assign/ -/doc/html/boost_asio/reference/basic_raw_socket/assign.html -/doc/html/boost_asio/reference/basic_raw_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_connect.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive/ -/doc/html/boost_asio/reference/basic_raw_socket/async_receive_from/ -/doc/html/boost_asio/reference/basic_raw_socket/async_receive_from.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive_from/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive_from/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/async_receive/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send/ -/doc/html/boost_asio/reference/basic_raw_socket/async_send.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send_to/ -/doc/html/boost_asio/reference/basic_raw_socket/async_send_to.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send_to/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/async_send_to/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/async_wait.html -/doc/html/boost_asio/reference/basic_raw_socket/at_mark/ -/doc/html/boost_asio/reference/basic_raw_socket/at_mark.html -/doc/html/boost_asio/reference/basic_raw_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/available/ -/doc/html/boost_asio/reference/basic_raw_socket/available.html -/doc/html/boost_asio/reference/basic_raw_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/ -/doc/html/boost_asio/reference/basic_raw_socket/_basic_raw_socket.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload10.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload4.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload5.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload6.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload7.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload8.html -/doc/html/boost_asio/reference/basic_raw_socket/basic_raw_socket/overload9.html -/doc/html/boost_asio/reference/basic_raw_socket/bind/ -/doc/html/boost_asio/reference/basic_raw_socket/bind.html -/doc/html/boost_asio/reference/basic_raw_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/broadcast.html -/doc/html/boost_asio/reference/basic_raw_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_raw_socket/cancel/ -/doc/html/boost_asio/reference/basic_raw_socket/cancel.html -/doc/html/boost_asio/reference/basic_raw_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/close/ -/doc/html/boost_asio/reference/basic_raw_socket/close.html -/doc/html/boost_asio/reference/basic_raw_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/connect/ -/doc/html/boost_asio/reference/basic_raw_socket/connect.html -/doc/html/boost_asio/reference/basic_raw_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/debug.html -/doc/html/boost_asio/reference/basic_raw_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_raw_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_raw_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_raw_socket/executor_type.html -/doc/html/boost_asio/reference/basic_raw_socket/get_executor.html -/doc/html/boost_asio/reference/basic_raw_socket/get_option/ -/doc/html/boost_asio/reference/basic_raw_socket/get_option.html -/doc/html/boost_asio/reference/basic_raw_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket.html -/doc/html/boost_asio/reference/basic_raw_socket/io_control/ -/doc/html/boost_asio/reference/basic_raw_socket/io_control.html -/doc/html/boost_asio/reference/basic_raw_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/is_open.html -/doc/html/boost_asio/reference/basic_raw_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_raw_socket/linger.html -/doc/html/boost_asio/reference/basic_raw_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_raw_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_raw_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_raw_socket/max_connections.html -/doc/html/boost_asio/reference/basic_raw_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_raw_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_raw_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_raw_socket/message_flags.html -/doc/html/boost_asio/reference/basic_raw_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_raw_socket/message_peek.html -/doc/html/boost_asio/reference/basic_raw_socket/native_handle.html -/doc/html/boost_asio/reference/basic_raw_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/open/ -/doc/html/boost_asio/reference/basic_raw_socket/open.html -/doc/html/boost_asio/reference/basic_raw_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_raw_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_raw_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_raw_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_raw_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_raw_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_raw_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_raw_socket/receive/ -/doc/html/boost_asio/reference/basic_raw_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_from/ -/doc/html/boost_asio/reference/basic_raw_socket/receive_from.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_from/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_from/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_from/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/receive.html -/doc/html/boost_asio/reference/basic_raw_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_raw_socket/receive/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/receive/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/receive/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/release/ -/doc/html/boost_asio/reference/basic_raw_socket/release.html -/doc/html/boost_asio/reference/basic_raw_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_raw_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_raw_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_raw_socket/send/ -/doc/html/boost_asio/reference/basic_raw_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_raw_socket/send.html -/doc/html/boost_asio/reference/basic_raw_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_raw_socket/send/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/send/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/send/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/send_to/ -/doc/html/boost_asio/reference/basic_raw_socket/send_to.html -/doc/html/boost_asio/reference/basic_raw_socket/send_to/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/send_to/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/send_to/overload3.html -/doc/html/boost_asio/reference/basic_raw_socket/set_option/ -/doc/html/boost_asio/reference/basic_raw_socket/set_option.html -/doc/html/boost_asio/reference/basic_raw_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/shutdown/ -/doc/html/boost_asio/reference/basic_raw_socket/shutdown.html -/doc/html/boost_asio/reference/basic_raw_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_raw_socket/wait/ -/doc/html/boost_asio/reference/basic_raw_socket/wait.html -/doc/html/boost_asio/reference/basic_raw_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_raw_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_raw_socket/wait_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/assign/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/assign.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_connect.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_receive/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_receive.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_receive/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_receive/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_send.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/async_wait.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/at_mark/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/at_mark.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/available/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/available.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/_basic_seq_packet_socket.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload10.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload3.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload4.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload5.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload6.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload7.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload8.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/basic_seq_packet_socket/overload9.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/bind/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/bind.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/broadcast.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/cancel/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/cancel.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/close/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/close.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/connect/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/connect.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/debug.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/executor_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_executor.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_option.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/io_control.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/is_open.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/linger.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/max_connections.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_flags.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/message_peek.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_handle.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/open/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/open.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_seq_packet_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_seq_packet_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/receive/overload3.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/release/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/release.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/send/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/set_option/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/set_option.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait/ -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_seq_packet_socket/wait_type.html -/doc/html/boost_asio/reference/basic_serial_port/ -/doc/html/boost_asio/reference/basic_serial_port/assign/ -/doc/html/boost_asio/reference/basic_serial_port/assign.html -/doc/html/boost_asio/reference/basic_serial_port/assign/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/assign/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/async_read_some.html -/doc/html/boost_asio/reference/basic_serial_port/async_write_some.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/ -/doc/html/boost_asio/reference/basic_serial_port/_basic_serial_port.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload3.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload4.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload5.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload6.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload7.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload8.html -/doc/html/boost_asio/reference/basic_serial_port/basic_serial_port/overload9.html -/doc/html/boost_asio/reference/basic_serial_port/cancel/ -/doc/html/boost_asio/reference/basic_serial_port/cancel.html -/doc/html/boost_asio/reference/basic_serial_port/cancel/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/cancel/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/close/ -/doc/html/boost_asio/reference/basic_serial_port/close.html -/doc/html/boost_asio/reference/basic_serial_port/close/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/close/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/executor_type.html -/doc/html/boost_asio/reference/basic_serial_port/get_executor.html -/doc/html/boost_asio/reference/basic_serial_port/get_option/ -/doc/html/boost_asio/reference/basic_serial_port/get_option.html -/doc/html/boost_asio/reference/basic_serial_port/get_option/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/get_option/overload2.html -/doc/html/boost_asio/reference/basic_serial_port.html -/doc/html/boost_asio/reference/basic_serial_port/is_open.html -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer/ -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer.html -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_serial_port/native_handle.html -/doc/html/boost_asio/reference/basic_serial_port/native_handle_type.html -/doc/html/boost_asio/reference/basic_serial_port/open/ -/doc/html/boost_asio/reference/basic_serial_port/open.html -/doc/html/boost_asio/reference/basic_serial_port/open/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/open/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/operator_eq_.html -/doc/html/boost_asio/reference/basic_serial_port/read_some/ -/doc/html/boost_asio/reference/basic_serial_port/read_some.html -/doc/html/boost_asio/reference/basic_serial_port/read_some/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/read_some/overload2.html -/doc/html/boost_asio/reference/basic_serial_port__rebind_executor/ -/doc/html/boost_asio/reference/basic_serial_port__rebind_executor.html -/doc/html/boost_asio/reference/basic_serial_port__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_serial_port/send_break/ -/doc/html/boost_asio/reference/basic_serial_port/send_break.html -/doc/html/boost_asio/reference/basic_serial_port/send_break/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/send_break/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/set_option/ -/doc/html/boost_asio/reference/basic_serial_port/set_option.html -/doc/html/boost_asio/reference/basic_serial_port/set_option/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/set_option/overload2.html -/doc/html/boost_asio/reference/basic_serial_port/write_some/ -/doc/html/boost_asio/reference/basic_serial_port/write_some.html -/doc/html/boost_asio/reference/basic_serial_port/write_some/overload1.html -/doc/html/boost_asio/reference/basic_serial_port/write_some/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/ -/doc/html/boost_asio/reference/basic_signal_set/add/ -/doc/html/boost_asio/reference/basic_signal_set/add.html -/doc/html/boost_asio/reference/basic_signal_set/add/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/add/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/async_wait.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/ -/doc/html/boost_asio/reference/basic_signal_set/_basic_signal_set.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload3.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload4.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload5.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload6.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload7.html -/doc/html/boost_asio/reference/basic_signal_set/basic_signal_set/overload8.html -/doc/html/boost_asio/reference/basic_signal_set/cancel/ -/doc/html/boost_asio/reference/basic_signal_set/cancel.html -/doc/html/boost_asio/reference/basic_signal_set/cancel/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/cancel/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/clear/ -/doc/html/boost_asio/reference/basic_signal_set/clear.html -/doc/html/boost_asio/reference/basic_signal_set/clear/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/clear/overload2.html -/doc/html/boost_asio/reference/basic_signal_set/executor_type.html -/doc/html/boost_asio/reference/basic_signal_set/get_executor.html -/doc/html/boost_asio/reference/basic_signal_set.html -/doc/html/boost_asio/reference/basic_signal_set__rebind_executor/ -/doc/html/boost_asio/reference/basic_signal_set__rebind_executor.html -/doc/html/boost_asio/reference/basic_signal_set__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_signal_set/remove/ -/doc/html/boost_asio/reference/basic_signal_set/remove.html -/doc/html/boost_asio/reference/basic_signal_set/remove/overload1.html -/doc/html/boost_asio/reference/basic_signal_set/remove/overload2.html -/doc/html/boost_asio/reference/basic_socket/ -/doc/html/boost_asio/reference/basic_socket_acceptor/ -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/ -/doc/html/boost_asio/reference/basic_socket_acceptor/accept.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload10.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload11.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload12.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload13.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload14.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload15.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload16.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload4.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload5.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload6.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload7.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload8.html -/doc/html/boost_asio/reference/basic_socket_acceptor/accept/overload9.html -/doc/html/boost_asio/reference/basic_socket_acceptor/assign/ -/doc/html/boost_asio/reference/basic_socket_acceptor/assign.html -/doc/html/boost_asio/reference/basic_socket_acceptor/assign/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/assign/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/ -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload4.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload5.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload6.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload7.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_accept/overload8.html -/doc/html/boost_asio/reference/basic_socket_acceptor/async_wait.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/ -/doc/html/boost_asio/reference/basic_socket_acceptor/_basic_socket_acceptor.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload10.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload4.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload5.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload6.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload7.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload8.html -/doc/html/boost_asio/reference/basic_socket_acceptor/basic_socket_acceptor/overload9.html -/doc/html/boost_asio/reference/basic_socket_acceptor/bind/ -/doc/html/boost_asio/reference/basic_socket_acceptor/bind.html -/doc/html/boost_asio/reference/basic_socket_acceptor/bind/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/bind/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/broadcast.html -/doc/html/boost_asio/reference/basic_socket_acceptor/bytes_readable.html -/doc/html/boost_asio/reference/basic_socket_acceptor/cancel/ -/doc/html/boost_asio/reference/basic_socket_acceptor/cancel.html -/doc/html/boost_asio/reference/basic_socket_acceptor/cancel/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/cancel/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/close/ -/doc/html/boost_asio/reference/basic_socket_acceptor/close.html -/doc/html/boost_asio/reference/basic_socket_acceptor/close/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/close/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/debug.html -/doc/html/boost_asio/reference/basic_socket_acceptor/do_not_route.html -/doc/html/boost_asio/reference/basic_socket_acceptor/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_socket_acceptor/endpoint_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor/executor_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor/get_executor.html -/doc/html/boost_asio/reference/basic_socket_acceptor/get_option/ -/doc/html/boost_asio/reference/basic_socket_acceptor/get_option.html -/doc/html/boost_asio/reference/basic_socket_acceptor/get_option/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/get_option/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor.html -/doc/html/boost_asio/reference/basic_socket_acceptor/io_control/ -/doc/html/boost_asio/reference/basic_socket_acceptor/io_control.html -/doc/html/boost_asio/reference/basic_socket_acceptor/io_control/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/io_control/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/is_open.html -/doc/html/boost_asio/reference/basic_socket_acceptor/keep_alive.html -/doc/html/boost_asio/reference/basic_socket_acceptor/linger.html -/doc/html/boost_asio/reference/basic_socket_acceptor/listen/ -/doc/html/boost_asio/reference/basic_socket_acceptor/listen.html -/doc/html/boost_asio/reference/basic_socket_acceptor/listen/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/listen/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/local_endpoint/ -/doc/html/boost_asio/reference/basic_socket_acceptor/local_endpoint.html -/doc/html/boost_asio/reference/basic_socket_acceptor/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/max_connections.html -/doc/html/boost_asio/reference/basic_socket_acceptor/max_listen_connections.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_do_not_route.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_end_of_record.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_flags.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_out_of_band.html -/doc/html/boost_asio/reference/basic_socket_acceptor/message_peek.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_handle.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_handle_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking/ -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking/ -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking.html -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_socket_acceptor/open/ -/doc/html/boost_asio/reference/basic_socket_acceptor/open.html -/doc/html/boost_asio/reference/basic_socket_acceptor/open/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/open/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/operator_eq_/ -/doc/html/boost_asio/reference/basic_socket_acceptor/operator_eq_.html -/doc/html/boost_asio/reference/basic_socket_acceptor/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_socket_acceptor/protocol_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor__rebind_executor/ -/doc/html/boost_asio/reference/basic_socket_acceptor__rebind_executor.html -/doc/html/boost_asio/reference/basic_socket_acceptor__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_socket_acceptor/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_socket_acceptor/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_socket_acceptor/release/ -/doc/html/boost_asio/reference/basic_socket_acceptor/release.html -/doc/html/boost_asio/reference/basic_socket_acceptor/release/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/release/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/reuse_address.html -/doc/html/boost_asio/reference/basic_socket_acceptor/send_buffer_size.html -/doc/html/boost_asio/reference/basic_socket_acceptor/send_low_watermark.html -/doc/html/boost_asio/reference/basic_socket_acceptor/set_option/ -/doc/html/boost_asio/reference/basic_socket_acceptor/set_option.html -/doc/html/boost_asio/reference/basic_socket_acceptor/set_option/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/set_option/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/shutdown_type.html -/doc/html/boost_asio/reference/basic_socket_acceptor/wait/ -/doc/html/boost_asio/reference/basic_socket_acceptor/wait.html -/doc/html/boost_asio/reference/basic_socket_acceptor/wait/overload1.html -/doc/html/boost_asio/reference/basic_socket_acceptor/wait/overload2.html -/doc/html/boost_asio/reference/basic_socket_acceptor/wait_type.html -/doc/html/boost_asio/reference/basic_socket/assign/ -/doc/html/boost_asio/reference/basic_socket/assign.html -/doc/html/boost_asio/reference/basic_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_socket/async_connect.html -/doc/html/boost_asio/reference/basic_socket/async_wait.html -/doc/html/boost_asio/reference/basic_socket/at_mark/ -/doc/html/boost_asio/reference/basic_socket/at_mark.html -/doc/html/boost_asio/reference/basic_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_socket/available/ -/doc/html/boost_asio/reference/basic_socket/available.html -/doc/html/boost_asio/reference/basic_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/ -/doc/html/boost_asio/reference/basic_socket/_basic_socket.html -/doc/html/boost_asio/reference/basic_socket/basic_socket.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload10.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload1.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload2.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload3.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload4.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload5.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload6.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload7.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload8.html -/doc/html/boost_asio/reference/basic_socket/basic_socket/overload9.html -/doc/html/boost_asio/reference/basic_socket/bind/ -/doc/html/boost_asio/reference/basic_socket/bind.html -/doc/html/boost_asio/reference/basic_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_socket/broadcast.html -/doc/html/boost_asio/reference/basic_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_socket/cancel/ -/doc/html/boost_asio/reference/basic_socket/cancel.html -/doc/html/boost_asio/reference/basic_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_socket/close/ -/doc/html/boost_asio/reference/basic_socket/close.html -/doc/html/boost_asio/reference/basic_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_socket/connect/ -/doc/html/boost_asio/reference/basic_socket/connect.html -/doc/html/boost_asio/reference/basic_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_socket/debug.html -/doc/html/boost_asio/reference/basic_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_socket/executor_type.html -/doc/html/boost_asio/reference/basic_socket/get_executor.html -/doc/html/boost_asio/reference/basic_socket/get_option/ -/doc/html/boost_asio/reference/basic_socket/get_option.html -/doc/html/boost_asio/reference/basic_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_socket.html -/doc/html/boost_asio/reference/basic_socket/io_control/ -/doc/html/boost_asio/reference/basic_socket/io_control.html -/doc/html/boost_asio/reference/basic_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_socket_iostream/ -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/ -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream.html -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/overload1.html -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/overload2.html -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/overload3.html -/doc/html/boost_asio/reference/basic_socket_iostream/basic_socket_iostream/overload4.html -/doc/html/boost_asio/reference/basic_socket_iostream/clock_type.html -/doc/html/boost_asio/reference/basic_socket_iostream/close.html -/doc/html/boost_asio/reference/basic_socket_iostream/connect.html -/doc/html/boost_asio/reference/basic_socket_iostream/duration.html -/doc/html/boost_asio/reference/basic_socket_iostream/duration_type.html -/doc/html/boost_asio/reference/basic_socket_iostream/endpoint_type.html -/doc/html/boost_asio/reference/basic_socket_iostream/error.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_after.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_at/ -/doc/html/boost_asio/reference/basic_socket_iostream/expires_at.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_at/overload1.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_at/overload2.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_from_now/ -/doc/html/boost_asio/reference/basic_socket_iostream/expires_from_now.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_from_now/overload1.html -/doc/html/boost_asio/reference/basic_socket_iostream/expires_from_now/overload2.html -/doc/html/boost_asio/reference/basic_socket_iostream/expiry.html -/doc/html/boost_asio/reference/basic_socket_iostream.html -/doc/html/boost_asio/reference/basic_socket_iostream/operator_eq_.html -/doc/html/boost_asio/reference/basic_socket_iostream/protocol_type.html -/doc/html/boost_asio/reference/basic_socket_iostream/rdbuf.html -/doc/html/boost_asio/reference/basic_socket_iostream/socket.html -/doc/html/boost_asio/reference/basic_socket_iostream/time_point.html -/doc/html/boost_asio/reference/basic_socket_iostream/time_type.html -/doc/html/boost_asio/reference/basic_socket/is_open.html -/doc/html/boost_asio/reference/basic_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_socket/linger.html -/doc/html/boost_asio/reference/basic_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_socket/max_connections.html -/doc/html/boost_asio/reference/basic_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_socket/message_flags.html -/doc/html/boost_asio/reference/basic_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_socket/message_peek.html -/doc/html/boost_asio/reference/basic_socket/native_handle.html -/doc/html/boost_asio/reference/basic_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_socket/open/ -/doc/html/boost_asio/reference/basic_socket/open.html -/doc/html/boost_asio/reference/basic_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_socket/release/ -/doc/html/boost_asio/reference/basic_socket/release.html -/doc/html/boost_asio/reference/basic_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_socket/set_option/ -/doc/html/boost_asio/reference/basic_socket/set_option.html -/doc/html/boost_asio/reference/basic_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_socket/shutdown/ -/doc/html/boost_asio/reference/basic_socket/shutdown.html -/doc/html/boost_asio/reference/basic_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/ -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf/ -/doc/html/boost_asio/reference/basic_socket_streambuf/_basic_socket_streambuf.html -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf.html -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload1.html -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload2.html -/doc/html/boost_asio/reference/basic_socket_streambuf/basic_socket_streambuf/overload3.html -/doc/html/boost_asio/reference/basic_socket_streambuf/clock_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/close.html -/doc/html/boost_asio/reference/basic_socket_streambuf/connect/ -/doc/html/boost_asio/reference/basic_socket_streambuf/connect.html -/doc/html/boost_asio/reference/basic_socket_streambuf/connect/overload1.html -/doc/html/boost_asio/reference/basic_socket_streambuf/connect/overload2.html -/doc/html/boost_asio/reference/basic_socket_streambuf/duration.html -/doc/html/boost_asio/reference/basic_socket_streambuf/duration_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/endpoint_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/error.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_after.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_at/ -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_at.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_at/overload1.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_at/overload2.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_from_now/ -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_from_now.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_from_now/overload1.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expires_from_now/overload2.html -/doc/html/boost_asio/reference/basic_socket_streambuf/expiry.html -/doc/html/boost_asio/reference/basic_socket_streambuf.html -/doc/html/boost_asio/reference/basic_socket_streambuf/operator_eq_.html -/doc/html/boost_asio/reference/basic_socket_streambuf/overflow.html -/doc/html/boost_asio/reference/basic_socket_streambuf/protocol_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/puberror.html -/doc/html/boost_asio/reference/basic_socket_streambuf/setbuf.html -/doc/html/boost_asio/reference/basic_socket_streambuf/socket.html -/doc/html/boost_asio/reference/basic_socket_streambuf/sync.html -/doc/html/boost_asio/reference/basic_socket_streambuf/time_point.html -/doc/html/boost_asio/reference/basic_socket_streambuf/time_type.html -/doc/html/boost_asio/reference/basic_socket_streambuf/underflow.html -/doc/html/boost_asio/reference/basic_socket/wait/ -/doc/html/boost_asio/reference/basic_socket/wait.html -/doc/html/boost_asio/reference/basic_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_socket/wait_type.html -/doc/html/boost_asio/reference/basic_streambuf/ -/doc/html/boost_asio/reference/basic_streambuf/basic_streambuf.html -/doc/html/boost_asio/reference/basic_streambuf/capacity.html -/doc/html/boost_asio/reference/basic_streambuf/commit.html -/doc/html/boost_asio/reference/basic_streambuf/const_buffers_type.html -/doc/html/boost_asio/reference/basic_streambuf/consume.html -/doc/html/boost_asio/reference/basic_streambuf/data.html -/doc/html/boost_asio/reference/basic_streambuf.html -/doc/html/boost_asio/reference/basic_streambuf/max_size.html -/doc/html/boost_asio/reference/basic_streambuf/mutable_buffers_type.html -/doc/html/boost_asio/reference/basic_streambuf/overflow.html -/doc/html/boost_asio/reference/basic_streambuf/prepare.html -/doc/html/boost_asio/reference/basic_streambuf_ref/ -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref/ -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref.html -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload1.html -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload2.html -/doc/html/boost_asio/reference/basic_streambuf_ref/basic_streambuf_ref/overload3.html -/doc/html/boost_asio/reference/basic_streambuf_ref/capacity.html -/doc/html/boost_asio/reference/basic_streambuf_ref/commit.html -/doc/html/boost_asio/reference/basic_streambuf_ref/const_buffers_type.html -/doc/html/boost_asio/reference/basic_streambuf_ref/consume.html -/doc/html/boost_asio/reference/basic_streambuf_ref/data.html -/doc/html/boost_asio/reference/basic_streambuf_ref.html -/doc/html/boost_asio/reference/basic_streambuf_ref/max_size.html -/doc/html/boost_asio/reference/basic_streambuf_ref/mutable_buffers_type.html -/doc/html/boost_asio/reference/basic_streambuf_ref/prepare.html -/doc/html/boost_asio/reference/basic_streambuf_ref/size.html -/doc/html/boost_asio/reference/basic_streambuf/reserve.html -/doc/html/boost_asio/reference/basic_streambuf/size.html -/doc/html/boost_asio/reference/basic_streambuf/underflow.html -/doc/html/boost_asio/reference/basic_stream_socket/ -/doc/html/boost_asio/reference/basic_stream_socket/assign/ -/doc/html/boost_asio/reference/basic_stream_socket/assign.html -/doc/html/boost_asio/reference/basic_stream_socket/assign/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/assign/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/async_connect.html -/doc/html/boost_asio/reference/basic_stream_socket/async_read_some.html -/doc/html/boost_asio/reference/basic_stream_socket/async_receive/ -/doc/html/boost_asio/reference/basic_stream_socket/async_receive.html -/doc/html/boost_asio/reference/basic_stream_socket/async_receive/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/async_receive/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/async_send/ -/doc/html/boost_asio/reference/basic_stream_socket/async_send.html -/doc/html/boost_asio/reference/basic_stream_socket/async_send/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/async_send/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/async_wait.html -/doc/html/boost_asio/reference/basic_stream_socket/async_write_some.html -/doc/html/boost_asio/reference/basic_stream_socket/at_mark/ -/doc/html/boost_asio/reference/basic_stream_socket/at_mark.html -/doc/html/boost_asio/reference/basic_stream_socket/at_mark/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/at_mark/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/available/ -/doc/html/boost_asio/reference/basic_stream_socket/available.html -/doc/html/boost_asio/reference/basic_stream_socket/available/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/available/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/ -/doc/html/boost_asio/reference/basic_stream_socket/_basic_stream_socket.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload10.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload4.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload5.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload6.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload7.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload8.html -/doc/html/boost_asio/reference/basic_stream_socket/basic_stream_socket/overload9.html -/doc/html/boost_asio/reference/basic_stream_socket/bind/ -/doc/html/boost_asio/reference/basic_stream_socket/bind.html -/doc/html/boost_asio/reference/basic_stream_socket/bind/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/bind/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/broadcast.html -/doc/html/boost_asio/reference/basic_stream_socket/bytes_readable.html -/doc/html/boost_asio/reference/basic_stream_socket/cancel/ -/doc/html/boost_asio/reference/basic_stream_socket/cancel.html -/doc/html/boost_asio/reference/basic_stream_socket/cancel/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/cancel/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/close/ -/doc/html/boost_asio/reference/basic_stream_socket/close.html -/doc/html/boost_asio/reference/basic_stream_socket/close/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/close/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/connect/ -/doc/html/boost_asio/reference/basic_stream_socket/connect.html -/doc/html/boost_asio/reference/basic_stream_socket/connect/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/connect/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/debug.html -/doc/html/boost_asio/reference/basic_stream_socket/do_not_route.html -/doc/html/boost_asio/reference/basic_stream_socket/enable_connection_aborted.html -/doc/html/boost_asio/reference/basic_stream_socket/endpoint_type.html -/doc/html/boost_asio/reference/basic_stream_socket/executor_type.html -/doc/html/boost_asio/reference/basic_stream_socket/get_executor.html -/doc/html/boost_asio/reference/basic_stream_socket/get_option/ -/doc/html/boost_asio/reference/basic_stream_socket/get_option.html -/doc/html/boost_asio/reference/basic_stream_socket/get_option/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/get_option/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket.html -/doc/html/boost_asio/reference/basic_stream_socket/io_control/ -/doc/html/boost_asio/reference/basic_stream_socket/io_control.html -/doc/html/boost_asio/reference/basic_stream_socket/io_control/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/io_control/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/is_open.html -/doc/html/boost_asio/reference/basic_stream_socket/keep_alive.html -/doc/html/boost_asio/reference/basic_stream_socket/linger.html -/doc/html/boost_asio/reference/basic_stream_socket/local_endpoint/ -/doc/html/boost_asio/reference/basic_stream_socket/local_endpoint.html -/doc/html/boost_asio/reference/basic_stream_socket/local_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/local_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer/ -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer.html -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/lowest_layer_type.html -/doc/html/boost_asio/reference/basic_stream_socket/max_connections.html -/doc/html/boost_asio/reference/basic_stream_socket/max_listen_connections.html -/doc/html/boost_asio/reference/basic_stream_socket/message_do_not_route.html -/doc/html/boost_asio/reference/basic_stream_socket/message_end_of_record.html -/doc/html/boost_asio/reference/basic_stream_socket/message_flags.html -/doc/html/boost_asio/reference/basic_stream_socket/message_out_of_band.html -/doc/html/boost_asio/reference/basic_stream_socket/message_peek.html -/doc/html/boost_asio/reference/basic_stream_socket/native_handle.html -/doc/html/boost_asio/reference/basic_stream_socket/native_handle_type.html -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking/ -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking.html -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking/ -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking.html -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/non_blocking/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/open/ -/doc/html/boost_asio/reference/basic_stream_socket/open.html -/doc/html/boost_asio/reference/basic_stream_socket/open/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/open/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/operator_eq_/ -/doc/html/boost_asio/reference/basic_stream_socket/operator_eq_.html -/doc/html/boost_asio/reference/basic_stream_socket/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/out_of_band_inline.html -/doc/html/boost_asio/reference/basic_stream_socket/protocol_type.html -/doc/html/boost_asio/reference/basic_stream_socket/read_some/ -/doc/html/boost_asio/reference/basic_stream_socket/read_some.html -/doc/html/boost_asio/reference/basic_stream_socket/read_some/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/read_some/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket__rebind_executor/ -/doc/html/boost_asio/reference/basic_stream_socket__rebind_executor.html -/doc/html/boost_asio/reference/basic_stream_socket__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_stream_socket/receive/ -/doc/html/boost_asio/reference/basic_stream_socket/receive_buffer_size.html -/doc/html/boost_asio/reference/basic_stream_socket/receive.html -/doc/html/boost_asio/reference/basic_stream_socket/receive_low_watermark.html -/doc/html/boost_asio/reference/basic_stream_socket/receive/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/receive/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/receive/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/release/ -/doc/html/boost_asio/reference/basic_stream_socket/release.html -/doc/html/boost_asio/reference/basic_stream_socket/release/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/release/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/remote_endpoint/ -/doc/html/boost_asio/reference/basic_stream_socket/remote_endpoint.html -/doc/html/boost_asio/reference/basic_stream_socket/remote_endpoint/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/remote_endpoint/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/reuse_address.html -/doc/html/boost_asio/reference/basic_stream_socket/send/ -/doc/html/boost_asio/reference/basic_stream_socket/send_buffer_size.html -/doc/html/boost_asio/reference/basic_stream_socket/send.html -/doc/html/boost_asio/reference/basic_stream_socket/send_low_watermark.html -/doc/html/boost_asio/reference/basic_stream_socket/send/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/send/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/send/overload3.html -/doc/html/boost_asio/reference/basic_stream_socket/set_option/ -/doc/html/boost_asio/reference/basic_stream_socket/set_option.html -/doc/html/boost_asio/reference/basic_stream_socket/set_option/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/set_option/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/shutdown/ -/doc/html/boost_asio/reference/basic_stream_socket/shutdown.html -/doc/html/boost_asio/reference/basic_stream_socket/shutdown/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/shutdown/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/shutdown_type.html -/doc/html/boost_asio/reference/basic_stream_socket/wait/ -/doc/html/boost_asio/reference/basic_stream_socket/wait.html -/doc/html/boost_asio/reference/basic_stream_socket/wait/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/wait/overload2.html -/doc/html/boost_asio/reference/basic_stream_socket/wait_type.html -/doc/html/boost_asio/reference/basic_stream_socket/write_some/ -/doc/html/boost_asio/reference/basic_stream_socket/write_some.html -/doc/html/boost_asio/reference/basic_stream_socket/write_some/overload1.html -/doc/html/boost_asio/reference/basic_stream_socket/write_some/overload2.html -/doc/html/boost_asio/reference/basic_system_executor/ -/doc/html/boost_asio/reference/basic_system_executor/basic_system_executor.html -/doc/html/boost_asio/reference/basic_system_executor/context.html -/doc/html/boost_asio/reference/basic_system_executor/defer.html -/doc/html/boost_asio/reference/basic_system_executor/dispatch.html -/doc/html/boost_asio/reference/basic_system_executor/execute.html -/doc/html/boost_asio/reference/basic_system_executor.html -/doc/html/boost_asio/reference/basic_system_executor/on_work_finished.html -/doc/html/boost_asio/reference/basic_system_executor/on_work_started.html -/doc/html/boost_asio/reference/basic_system_executor/operator_eq__eq_.html -/doc/html/boost_asio/reference/basic_system_executor/operator_not__eq_.html -/doc/html/boost_asio/reference/basic_system_executor/post.html -/doc/html/boost_asio/reference/basic_system_executor/query/ -/doc/html/boost_asio/reference/basic_system_executor/query.html -/doc/html/boost_asio/reference/basic_system_executor/query/overload1.html -/doc/html/boost_asio/reference/basic_system_executor/query/overload2.html -/doc/html/boost_asio/reference/basic_system_executor/query/overload3.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/ -/doc/html/boost_asio/reference/basic_system_executor/query__static.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/overload1.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/overload2.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/overload3.html -/doc/html/boost_asio/reference/basic_system_executor/query__static/overload4.html -/doc/html/boost_asio/reference/basic_system_executor/require/ -/doc/html/boost_asio/reference/basic_system_executor/require.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload1.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload2.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload3.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload4.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload5.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload6.html -/doc/html/boost_asio/reference/basic_system_executor/require/overload7.html -/doc/html/boost_asio/reference/basic_waitable_timer/ -/doc/html/boost_asio/reference/basic_waitable_timer/async_wait.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/ -/doc/html/boost_asio/reference/basic_waitable_timer/_basic_waitable_timer.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload3.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload4.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload5.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload6.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload7.html -/doc/html/boost_asio/reference/basic_waitable_timer/basic_waitable_timer/overload8.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel/ -/doc/html/boost_asio/reference/basic_waitable_timer/cancel.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel_one/ -/doc/html/boost_asio/reference/basic_waitable_timer/cancel_one.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel_one/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel_one/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/cancel/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/clock_type.html -/doc/html/boost_asio/reference/basic_waitable_timer/duration.html -/doc/html/boost_asio/reference/basic_waitable_timer/executor_type.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_after.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at/ -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_at/overload3.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now/ -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer/expires_from_now/overload3.html -/doc/html/boost_asio/reference/basic_waitable_timer/expiry.html -/doc/html/boost_asio/reference/basic_waitable_timer/get_executor.html -/doc/html/boost_asio/reference/basic_waitable_timer.html -/doc/html/boost_asio/reference/basic_waitable_timer/operator_eq_/ -/doc/html/boost_asio/reference/basic_waitable_timer/operator_eq_.html -/doc/html/boost_asio/reference/basic_waitable_timer/operator_eq_/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/operator_eq_/overload2.html -/doc/html/boost_asio/reference/basic_waitable_timer__rebind_executor/ -/doc/html/boost_asio/reference/basic_waitable_timer__rebind_executor.html -/doc/html/boost_asio/reference/basic_waitable_timer__rebind_executor/other.html -/doc/html/boost_asio/reference/basic_waitable_timer/time_point.html -/doc/html/boost_asio/reference/basic_waitable_timer/traits_type.html -/doc/html/boost_asio/reference/basic_waitable_timer/wait/ -/doc/html/boost_asio/reference/basic_waitable_timer/wait.html -/doc/html/boost_asio/reference/basic_waitable_timer/wait/overload1.html -/doc/html/boost_asio/reference/basic_waitable_timer/wait/overload2.html -/doc/html/boost_asio/reference/basic_yield_context/ -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/ -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context.html -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/overload1.html -/doc/html/boost_asio/reference/basic_yield_context/basic_yield_context/overload2.html -/doc/html/boost_asio/reference/basic_yield_context/callee_type.html -/doc/html/boost_asio/reference/basic_yield_context/caller_type.html -/doc/html/boost_asio/reference/basic_yield_context.html -/doc/html/boost_asio/reference/basic_yield_context/operator_lb__rb_.html -/doc/html/boost_asio/reference/bind_cancellation_slot.html -/doc/html/boost_asio/reference/bind_executor/ -/doc/html/boost_asio/reference/bind_executor.html -/doc/html/boost_asio/reference/bind_executor/overload1.html -/doc/html/boost_asio/reference/bind_executor/overload2.html -/doc/html/boost_asio/reference/buffer/ -/doc/html/boost_asio/reference/buffer_cast/ -/doc/html/boost_asio/reference/buffer_cast.html -/doc/html/boost_asio/reference/buffer_cast/overload1.html -/doc/html/boost_asio/reference/buffer_cast/overload2.html -/doc/html/boost_asio/reference/buffer_copy/ -/doc/html/boost_asio/reference/buffer_copy.html -/doc/html/boost_asio/reference/buffer_copy/overload1.html -/doc/html/boost_asio/reference/buffer_copy/overload2.html -/doc/html/boost_asio/reference/BufferedHandshakeHandler.html -/doc/html/boost_asio/reference/buffered_read_stream/ -/doc/html/boost_asio/reference/buffered_read_stream/async_fill.html -/doc/html/boost_asio/reference/buffered_read_stream/async_read_some.html -/doc/html/boost_asio/reference/buffered_read_stream/async_write_some.html -/doc/html/boost_asio/reference/buffered_read_stream/buffered_read_stream/ -/doc/html/boost_asio/reference/buffered_read_stream/buffered_read_stream.html -/doc/html/boost_asio/reference/buffered_read_stream/buffered_read_stream/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/buffered_read_stream/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/close/ -/doc/html/boost_asio/reference/buffered_read_stream/close.html -/doc/html/boost_asio/reference/buffered_read_stream/close/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/close/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/default_buffer_size.html -/doc/html/boost_asio/reference/buffered_read_stream/executor_type.html -/doc/html/boost_asio/reference/buffered_read_stream/fill/ -/doc/html/boost_asio/reference/buffered_read_stream/fill.html -/doc/html/boost_asio/reference/buffered_read_stream/fill/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/fill/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/get_executor.html -/doc/html/boost_asio/reference/buffered_read_stream.html -/doc/html/boost_asio/reference/buffered_read_stream/in_avail/ -/doc/html/boost_asio/reference/buffered_read_stream/in_avail.html -/doc/html/boost_asio/reference/buffered_read_stream/in_avail/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/in_avail/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer/ -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer.html -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/lowest_layer_type.html -/doc/html/boost_asio/reference/buffered_read_stream/next_layer.html -/doc/html/boost_asio/reference/buffered_read_stream/next_layer_type.html -/doc/html/boost_asio/reference/buffered_read_stream/peek/ -/doc/html/boost_asio/reference/buffered_read_stream/peek.html -/doc/html/boost_asio/reference/buffered_read_stream/peek/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/peek/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/read_some/ -/doc/html/boost_asio/reference/buffered_read_stream/read_some.html -/doc/html/boost_asio/reference/buffered_read_stream/read_some/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/read_some/overload2.html -/doc/html/boost_asio/reference/buffered_read_stream/write_some/ -/doc/html/boost_asio/reference/buffered_read_stream/write_some.html -/doc/html/boost_asio/reference/buffered_read_stream/write_some/overload1.html -/doc/html/boost_asio/reference/buffered_read_stream/write_some/overload2.html -/doc/html/boost_asio/reference/buffered_stream/ -/doc/html/boost_asio/reference/buffered_stream/async_fill.html -/doc/html/boost_asio/reference/buffered_stream/async_flush.html -/doc/html/boost_asio/reference/buffered_stream/async_read_some.html -/doc/html/boost_asio/reference/buffered_stream/async_write_some.html -/doc/html/boost_asio/reference/buffered_stream/buffered_stream/ -/doc/html/boost_asio/reference/buffered_stream/buffered_stream.html -/doc/html/boost_asio/reference/buffered_stream/buffered_stream/overload1.html -/doc/html/boost_asio/reference/buffered_stream/buffered_stream/overload2.html -/doc/html/boost_asio/reference/buffered_stream/close/ -/doc/html/boost_asio/reference/buffered_stream/close.html -/doc/html/boost_asio/reference/buffered_stream/close/overload1.html -/doc/html/boost_asio/reference/buffered_stream/close/overload2.html -/doc/html/boost_asio/reference/buffered_stream/executor_type.html -/doc/html/boost_asio/reference/buffered_stream/fill/ -/doc/html/boost_asio/reference/buffered_stream/fill.html -/doc/html/boost_asio/reference/buffered_stream/fill/overload1.html -/doc/html/boost_asio/reference/buffered_stream/fill/overload2.html -/doc/html/boost_asio/reference/buffered_stream/flush/ -/doc/html/boost_asio/reference/buffered_stream/flush.html -/doc/html/boost_asio/reference/buffered_stream/flush/overload1.html -/doc/html/boost_asio/reference/buffered_stream/flush/overload2.html -/doc/html/boost_asio/reference/buffered_stream/get_executor.html -/doc/html/boost_asio/reference/buffered_stream.html -/doc/html/boost_asio/reference/buffered_stream/in_avail/ -/doc/html/boost_asio/reference/buffered_stream/in_avail.html -/doc/html/boost_asio/reference/buffered_stream/in_avail/overload1.html -/doc/html/boost_asio/reference/buffered_stream/in_avail/overload2.html -/doc/html/boost_asio/reference/buffered_stream/lowest_layer/ -/doc/html/boost_asio/reference/buffered_stream/lowest_layer.html -/doc/html/boost_asio/reference/buffered_stream/lowest_layer/overload1.html -/doc/html/boost_asio/reference/buffered_stream/lowest_layer/overload2.html -/doc/html/boost_asio/reference/buffered_stream/lowest_layer_type.html -/doc/html/boost_asio/reference/buffered_stream/next_layer.html -/doc/html/boost_asio/reference/buffered_stream/next_layer_type.html -/doc/html/boost_asio/reference/buffered_stream/peek/ -/doc/html/boost_asio/reference/buffered_stream/peek.html -/doc/html/boost_asio/reference/buffered_stream/peek/overload1.html -/doc/html/boost_asio/reference/buffered_stream/peek/overload2.html -/doc/html/boost_asio/reference/buffered_stream/read_some/ -/doc/html/boost_asio/reference/buffered_stream/read_some.html -/doc/html/boost_asio/reference/buffered_stream/read_some/overload1.html -/doc/html/boost_asio/reference/buffered_stream/read_some/overload2.html -/doc/html/boost_asio/reference/buffered_stream/write_some/ -/doc/html/boost_asio/reference/buffered_stream/write_some.html -/doc/html/boost_asio/reference/buffered_stream/write_some/overload1.html -/doc/html/boost_asio/reference/buffered_stream/write_some/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/ -/doc/html/boost_asio/reference/buffered_write_stream/async_flush.html -/doc/html/boost_asio/reference/buffered_write_stream/async_read_some.html -/doc/html/boost_asio/reference/buffered_write_stream/async_write_some.html -/doc/html/boost_asio/reference/buffered_write_stream/buffered_write_stream/ -/doc/html/boost_asio/reference/buffered_write_stream/buffered_write_stream.html -/doc/html/boost_asio/reference/buffered_write_stream/buffered_write_stream/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/buffered_write_stream/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/close/ -/doc/html/boost_asio/reference/buffered_write_stream/close.html -/doc/html/boost_asio/reference/buffered_write_stream/close/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/close/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/default_buffer_size.html -/doc/html/boost_asio/reference/buffered_write_stream/executor_type.html -/doc/html/boost_asio/reference/buffered_write_stream/flush/ -/doc/html/boost_asio/reference/buffered_write_stream/flush.html -/doc/html/boost_asio/reference/buffered_write_stream/flush/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/flush/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/get_executor.html -/doc/html/boost_asio/reference/buffered_write_stream.html -/doc/html/boost_asio/reference/buffered_write_stream/in_avail/ -/doc/html/boost_asio/reference/buffered_write_stream/in_avail.html -/doc/html/boost_asio/reference/buffered_write_stream/in_avail/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/in_avail/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer/ -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer.html -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/lowest_layer_type.html -/doc/html/boost_asio/reference/buffered_write_stream/next_layer.html -/doc/html/boost_asio/reference/buffered_write_stream/next_layer_type.html -/doc/html/boost_asio/reference/buffered_write_stream/peek/ -/doc/html/boost_asio/reference/buffered_write_stream/peek.html -/doc/html/boost_asio/reference/buffered_write_stream/peek/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/peek/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/read_some/ -/doc/html/boost_asio/reference/buffered_write_stream/read_some.html -/doc/html/boost_asio/reference/buffered_write_stream/read_some/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/read_some/overload2.html -/doc/html/boost_asio/reference/buffered_write_stream/write_some/ -/doc/html/boost_asio/reference/buffered_write_stream/write_some.html -/doc/html/boost_asio/reference/buffered_write_stream/write_some/overload1.html -/doc/html/boost_asio/reference/buffered_write_stream/write_some/overload2.html -/doc/html/boost_asio/reference/buffer.html -/doc/html/boost_asio/reference/buffer/overload10.html -/doc/html/boost_asio/reference/buffer/overload11.html -/doc/html/boost_asio/reference/buffer/overload12.html -/doc/html/boost_asio/reference/buffer/overload13.html -/doc/html/boost_asio/reference/buffer/overload14.html -/doc/html/boost_asio/reference/buffer/overload15.html -/doc/html/boost_asio/reference/buffer/overload16.html -/doc/html/boost_asio/reference/buffer/overload17.html -/doc/html/boost_asio/reference/buffer/overload18.html -/doc/html/boost_asio/reference/buffer/overload19.html -/doc/html/boost_asio/reference/buffer/overload1.html -/doc/html/boost_asio/reference/buffer/overload20.html -/doc/html/boost_asio/reference/buffer/overload21.html -/doc/html/boost_asio/reference/buffer/overload22.html -/doc/html/boost_asio/reference/buffer/overload23.html -/doc/html/boost_asio/reference/buffer/overload24.html -/doc/html/boost_asio/reference/buffer/overload25.html -/doc/html/boost_asio/reference/buffer/overload26.html -/doc/html/boost_asio/reference/buffer/overload27.html -/doc/html/boost_asio/reference/buffer/overload28.html -/doc/html/boost_asio/reference/buffer/overload29.html -/doc/html/boost_asio/reference/buffer/overload2.html -/doc/html/boost_asio/reference/buffer/overload30.html -/doc/html/boost_asio/reference/buffer/overload31.html -/doc/html/boost_asio/reference/buffer/overload32.html -/doc/html/boost_asio/reference/buffer/overload3.html -/doc/html/boost_asio/reference/buffer/overload4.html -/doc/html/boost_asio/reference/buffer/overload5.html -/doc/html/boost_asio/reference/buffer/overload6.html -/doc/html/boost_asio/reference/buffer/overload7.html -/doc/html/boost_asio/reference/buffer/overload8.html -/doc/html/boost_asio/reference/buffer/overload9.html -/doc/html/boost_asio/reference/buffers_begin.html -/doc/html/boost_asio/reference/buffers_end.html -/doc/html/boost_asio/reference/buffer_sequence_begin/ -/doc/html/boost_asio/reference/buffer_sequence_begin.html -/doc/html/boost_asio/reference/buffer_sequence_begin/overload1.html -/doc/html/boost_asio/reference/buffer_sequence_begin/overload2.html -/doc/html/boost_asio/reference/buffer_sequence_begin/overload3.html -/doc/html/boost_asio/reference/buffer_sequence_begin/overload4.html -/doc/html/boost_asio/reference/buffer_sequence_end/ -/doc/html/boost_asio/reference/buffer_sequence_end.html -/doc/html/boost_asio/reference/buffer_sequence_end/overload1.html -/doc/html/boost_asio/reference/buffer_sequence_end/overload2.html -/doc/html/boost_asio/reference/buffer_sequence_end/overload3.html -/doc/html/boost_asio/reference/buffer_sequence_end/overload4.html -/doc/html/boost_asio/reference/buffers_iterator/ -/doc/html/boost_asio/reference/buffers_iterator/begin.html -/doc/html/boost_asio/reference/buffers_iterator/buffers_iterator.html -/doc/html/boost_asio/reference/buffers_iterator/difference_type.html -/doc/html/boost_asio/reference/buffers_iterator/end.html -/doc/html/boost_asio/reference/buffers_iterator.html -/doc/html/boost_asio/reference/buffers_iterator/iterator_category.html -/doc/html/boost_asio/reference/buffers_iterator/operator_arrow_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_eq__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_gt__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_gt_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_lb__rb_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_lt__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_lt_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus_/ -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__minus_/ -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__minus_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__minus_/overload1.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus__minus_/overload2.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus_/overload1.html -/doc/html/boost_asio/reference/buffers_iterator/operator_minus_/overload2.html -/doc/html/boost_asio/reference/buffers_iterator/operator_not__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus_/ -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__eq_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus_/overload1.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus_/overload2.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__plus_/ -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__plus_.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/buffers_iterator/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/buffers_iterator/operator__star_.html -/doc/html/boost_asio/reference/buffers_iterator/pointer.html -/doc/html/boost_asio/reference/buffers_iterator/reference.html -/doc/html/boost_asio/reference/buffers_iterator/value_type.html -/doc/html/boost_asio/reference/buffer_size.html -/doc/html/boost_asio/reference/cancellation_filter/ -/doc/html/boost_asio/reference/cancellation_filter.html -/doc/html/boost_asio/reference/cancellation_filter/operator_lp__rp_.html -/doc/html/boost_asio/reference/CancellationHandler.html -/doc/html/boost_asio/reference/cancellation_signal/ -/doc/html/boost_asio/reference/cancellation_signal/_cancellation_signal.html -/doc/html/boost_asio/reference/cancellation_signal/cancellation_signal.html -/doc/html/boost_asio/reference/cancellation_signal/emit.html -/doc/html/boost_asio/reference/cancellation_signal.html -/doc/html/boost_asio/reference/cancellation_signal/slot.html -/doc/html/boost_asio/reference/cancellation_slot/ -/doc/html/boost_asio/reference/cancellation_slot/assign.html -/doc/html/boost_asio/reference/cancellation_slot_binder/ -/doc/html/boost_asio/reference/cancellation_slot_binder/argument_type.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/ -/doc/html/boost_asio/reference/cancellation_slot_binder/_cancellation_slot_binder.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload1.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload2.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload3.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload4.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload5.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload6.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload7.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload8.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_binder/overload9.html -/doc/html/boost_asio/reference/cancellation_slot_binder/cancellation_slot_type.html -/doc/html/boost_asio/reference/cancellation_slot_binder/first_argument_type.html -/doc/html/boost_asio/reference/cancellation_slot_binder/get/ -/doc/html/boost_asio/reference/cancellation_slot_binder/get_cancellation_slot.html -/doc/html/boost_asio/reference/cancellation_slot_binder/get.html -/doc/html/boost_asio/reference/cancellation_slot_binder/get/overload1.html -/doc/html/boost_asio/reference/cancellation_slot_binder/get/overload2.html -/doc/html/boost_asio/reference/cancellation_slot_binder.html -/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/ -/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_.html -/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/overload1.html -/doc/html/boost_asio/reference/cancellation_slot_binder/operator_lp__rp_/overload2.html -/doc/html/boost_asio/reference/cancellation_slot_binder/result_type.html -/doc/html/boost_asio/reference/cancellation_slot_binder/second_argument_type.html -/doc/html/boost_asio/reference/cancellation_slot_binder/target_type.html -/doc/html/boost_asio/reference/cancellation_slot/cancellation_slot.html -/doc/html/boost_asio/reference/cancellation_slot/clear.html -/doc/html/boost_asio/reference/cancellation_slot/emplace.html -/doc/html/boost_asio/reference/cancellation_slot/has_handler.html -/doc/html/boost_asio/reference/CancellationSlot.html -/doc/html/boost_asio/reference/cancellation_slot.html -/doc/html/boost_asio/reference/cancellation_slot/is_connected.html -/doc/html/boost_asio/reference/cancellation_slot/operator_eq__eq_.html -/doc/html/boost_asio/reference/cancellation_slot/operator_not__eq_.html -/doc/html/boost_asio/reference/cancellation_state/ -/doc/html/boost_asio/reference/cancellation_state/cancellation_state/ -/doc/html/boost_asio/reference/cancellation_state/cancellation_state.html -/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload1.html -/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload2.html -/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload3.html -/doc/html/boost_asio/reference/cancellation_state/cancellation_state/overload4.html -/doc/html/boost_asio/reference/cancellation_state/cancelled.html -/doc/html/boost_asio/reference/cancellation_state/clear.html -/doc/html/boost_asio/reference/cancellation_state.html -/doc/html/boost_asio/reference/cancellation_state/slot.html -/doc/html/boost_asio/reference/cancellation_type.html -/doc/html/boost_asio/reference/cancellation_type_t.html -/doc/html/boost_asio/reference/can_prefer.html -/doc/html/boost_asio/reference/can_query.html -/doc/html/boost_asio/reference/can_require_concept.html -/doc/html/boost_asio/reference/can_require.html -/doc/html/boost_asio/reference/CompletionCondition.html -/doc/html/boost_asio/reference/CompletionHandler.html -/doc/html/boost_asio/reference/connect/ -/doc/html/boost_asio/reference/ConnectCondition.html -/doc/html/boost_asio/reference/ConnectHandler.html -/doc/html/boost_asio/reference/connect.html -/doc/html/boost_asio/reference/connect/overload10.html -/doc/html/boost_asio/reference/connect/overload11.html -/doc/html/boost_asio/reference/connect/overload12.html -/doc/html/boost_asio/reference/connect/overload1.html -/doc/html/boost_asio/reference/connect/overload2.html -/doc/html/boost_asio/reference/connect/overload3.html -/doc/html/boost_asio/reference/connect/overload4.html -/doc/html/boost_asio/reference/connect/overload5.html -/doc/html/boost_asio/reference/connect/overload6.html -/doc/html/boost_asio/reference/connect/overload7.html -/doc/html/boost_asio/reference/connect/overload8.html -/doc/html/boost_asio/reference/connect/overload9.html -/doc/html/boost_asio/reference/const_buffer/ -/doc/html/boost_asio/reference/const_buffer/const_buffer/ -/doc/html/boost_asio/reference/const_buffer/const_buffer.html -/doc/html/boost_asio/reference/const_buffer/const_buffer/overload1.html -/doc/html/boost_asio/reference/const_buffer/const_buffer/overload2.html -/doc/html/boost_asio/reference/const_buffer/const_buffer/overload3.html -/doc/html/boost_asio/reference/const_buffer/data.html -/doc/html/boost_asio/reference/const_buffer.html -/doc/html/boost_asio/reference/const_buffer/operator_plus_/ -/doc/html/boost_asio/reference/const_buffer/operator_plus__eq_.html -/doc/html/boost_asio/reference/const_buffer/operator_plus_.html -/doc/html/boost_asio/reference/const_buffer/operator_plus_/overload1.html -/doc/html/boost_asio/reference/const_buffer/operator_plus_/overload2.html -/doc/html/boost_asio/reference/const_buffers_1/ -/doc/html/boost_asio/reference/const_buffers_1/begin.html -/doc/html/boost_asio/reference/const_buffers_1/const_buffers_1/ -/doc/html/boost_asio/reference/const_buffers_1/const_buffers_1.html -/doc/html/boost_asio/reference/const_buffers_1/const_buffers_1/overload1.html -/doc/html/boost_asio/reference/const_buffers_1/const_buffers_1/overload2.html -/doc/html/boost_asio/reference/const_buffers_1/const_iterator.html -/doc/html/boost_asio/reference/const_buffers_1/data.html -/doc/html/boost_asio/reference/const_buffers_1/end.html -/doc/html/boost_asio/reference/const_buffers_1.html -/doc/html/boost_asio/reference/const_buffers_1/operator_plus_/ -/doc/html/boost_asio/reference/const_buffers_1/operator_plus__eq_.html -/doc/html/boost_asio/reference/const_buffers_1/operator_plus_.html -/doc/html/boost_asio/reference/const_buffers_1/operator_plus_/overload1.html -/doc/html/boost_asio/reference/const_buffers_1/operator_plus_/overload2.html -/doc/html/boost_asio/reference/const_buffers_1/size.html -/doc/html/boost_asio/reference/const_buffers_1/value_type.html -/doc/html/boost_asio/reference/ConstBufferSequence.html -/doc/html/boost_asio/reference/const_buffer/size.html -/doc/html/boost_asio/reference/coroutine/ -/doc/html/boost_asio/reference/coroutine/coroutine.html -/doc/html/boost_asio/reference/coroutine.html -/doc/html/boost_asio/reference/coroutine/is_child.html -/doc/html/boost_asio/reference/coroutine/is_complete.html -/doc/html/boost_asio/reference/coroutine/is_parent.html -/doc/html/boost_asio/reference/co_spawn/ -/doc/html/boost_asio/reference/co_spawn.html -/doc/html/boost_asio/reference/co_spawn/overload1.html -/doc/html/boost_asio/reference/co_spawn/overload2.html -/doc/html/boost_asio/reference/co_spawn/overload3.html -/doc/html/boost_asio/reference/co_spawn/overload4.html -/doc/html/boost_asio/reference/co_spawn/overload5.html -/doc/html/boost_asio/reference/co_spawn/overload6.html -/doc/html/boost_asio/reference/deadline_timer.html -/doc/html/boost_asio/reference/default_completion_token/ -/doc/html/boost_asio/reference/default_completion_token.html -/doc/html/boost_asio/reference/default_completion_token/type.html -/doc/html/boost_asio/reference/defer/ -/doc/html/boost_asio/reference/defer.html -/doc/html/boost_asio/reference/defer/overload1.html -/doc/html/boost_asio/reference/defer/overload2.html -/doc/html/boost_asio/reference/defer/overload3.html -/doc/html/boost_asio/reference/detached.html -/doc/html/boost_asio/reference/detached_t/ -/doc/html/boost_asio/reference/detached_t/as_default_on.html -/doc/html/boost_asio/reference/detached_t/detached_t.html -/doc/html/boost_asio/reference/detached_t__executor_with_default/ -/doc/html/boost_asio/reference/detached_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default/ -/doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default/overload1.html -/doc/html/boost_asio/reference/detached_t__executor_with_default/executor_with_default/overload2.html -/doc/html/boost_asio/reference/detached_t__executor_with_default.html -/doc/html/boost_asio/reference/detached_t.html -/doc/html/boost_asio/reference/disable_cancellation.html -/doc/html/boost_asio/reference/dispatch/ -/doc/html/boost_asio/reference/dispatch.html -/doc/html/boost_asio/reference/dispatch/overload1.html -/doc/html/boost_asio/reference/dispatch/overload2.html -/doc/html/boost_asio/reference/dispatch/overload3.html -/doc/html/boost_asio/reference/dynamic_buffer/ -/doc/html/boost_asio/reference/DynamicBuffer.html -/doc/html/boost_asio/reference/dynamic_buffer.html -/doc/html/boost_asio/reference/dynamic_buffer/overload1.html -/doc/html/boost_asio/reference/dynamic_buffer/overload2.html -/doc/html/boost_asio/reference/dynamic_buffer/overload3.html -/doc/html/boost_asio/reference/dynamic_buffer/overload4.html -/doc/html/boost_asio/reference/DynamicBuffer_v1.html -/doc/html/boost_asio/reference/DynamicBuffer_v2.html -/doc/html/boost_asio/reference/dynamic_string_buffer/ -/doc/html/boost_asio/reference/dynamic_string_buffer/capacity.html -/doc/html/boost_asio/reference/dynamic_string_buffer/commit.html -/doc/html/boost_asio/reference/dynamic_string_buffer/const_buffers_type.html -/doc/html/boost_asio/reference/dynamic_string_buffer/consume.html -/doc/html/boost_asio/reference/dynamic_string_buffer/data/ -/doc/html/boost_asio/reference/dynamic_string_buffer/data.html -/doc/html/boost_asio/reference/dynamic_string_buffer/data/overload1.html -/doc/html/boost_asio/reference/dynamic_string_buffer/data/overload2.html -/doc/html/boost_asio/reference/dynamic_string_buffer/data/overload3.html -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer/ -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer.html -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload1.html -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload2.html -/doc/html/boost_asio/reference/dynamic_string_buffer/dynamic_string_buffer/overload3.html -/doc/html/boost_asio/reference/dynamic_string_buffer/grow.html -/doc/html/boost_asio/reference/dynamic_string_buffer.html -/doc/html/boost_asio/reference/dynamic_string_buffer/max_size.html -/doc/html/boost_asio/reference/dynamic_string_buffer/mutable_buffers_type.html -/doc/html/boost_asio/reference/dynamic_string_buffer/prepare.html -/doc/html/boost_asio/reference/dynamic_string_buffer/shrink.html -/doc/html/boost_asio/reference/dynamic_string_buffer/size.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/ -/doc/html/boost_asio/reference/dynamic_vector_buffer/capacity.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/commit.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/const_buffers_type.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/consume.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/data/ -/doc/html/boost_asio/reference/dynamic_vector_buffer/data.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/data/overload1.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/data/overload2.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/data/overload3.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/ -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload1.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload2.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/dynamic_vector_buffer/overload3.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/grow.html -/doc/html/boost_asio/reference/dynamic_vector_buffer.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/max_size.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/mutable_buffers_type.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/prepare.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/shrink.html -/doc/html/boost_asio/reference/dynamic_vector_buffer/size.html -/doc/html/boost_asio/reference/enable_partial_cancellation.html -/doc/html/boost_asio/reference/enable_terminal_cancellation.html -/doc/html/boost_asio/reference/enable_total_cancellation.html -/doc/html/boost_asio/reference/Endpoint.html -/doc/html/boost_asio/reference/EndpointSequence.html -/doc/html/boost_asio/reference/error__addrinfo_category.html -/doc/html/boost_asio/reference/error__addrinfo_errors.html -/doc/html/boost_asio/reference/error__basic_errors.html -/doc/html/boost_asio/reference/error__get_addrinfo_category.html -/doc/html/boost_asio/reference/error__get_misc_category.html -/doc/html/boost_asio/reference/error__get_netdb_category.html -/doc/html/boost_asio/reference/error__get_ssl_category.html -/doc/html/boost_asio/reference/error__get_system_category.html -/doc/html/boost_asio/reference/error__make_error_code/ -/doc/html/boost_asio/reference/error__make_error_code.html -/doc/html/boost_asio/reference/error__make_error_code/overload1.html -/doc/html/boost_asio/reference/error__make_error_code/overload2.html -/doc/html/boost_asio/reference/error__make_error_code/overload3.html -/doc/html/boost_asio/reference/error__make_error_code/overload4.html -/doc/html/boost_asio/reference/error__make_error_code/overload5.html -/doc/html/boost_asio/reference/error__misc_category.html -/doc/html/boost_asio/reference/error__misc_errors.html -/doc/html/boost_asio/reference/error__netdb_category.html -/doc/html/boost_asio/reference/error__netdb_errors.html -/doc/html/boost_asio/reference/error__ssl_category.html -/doc/html/boost_asio/reference/error__ssl_errors.html -/doc/html/boost_asio/reference/error__system_category.html -/doc/html/boost_asio/reference/execution__allocator.html -/doc/html/boost_asio/reference/execution__allocator_t/ -/doc/html/boost_asio/reference/execution__allocator_t/allocator_t.html -/doc/html/boost_asio/reference/execution__allocator_t.html -/doc/html/boost_asio/reference/execution__allocator_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__allocator_t/is_preferable.html -/doc/html/boost_asio/reference/execution__allocator_t/is_requirable.html -/doc/html/boost_asio/reference/execution__allocator_t/value.html -/doc/html/boost_asio/reference/execution__any_executor/ -/doc/html/boost_asio/reference/execution__any_executor/any_executor/ -/doc/html/boost_asio/reference/execution__any_executor/_any_executor.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload3.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload4.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload5.html -/doc/html/boost_asio/reference/execution__any_executor/any_executor/overload6.html -/doc/html/boost_asio/reference/execution__any_executor/context.html -/doc/html/boost_asio/reference/execution__any_executor/execute.html -/doc/html/boost_asio/reference/execution__any_executor.html -/doc/html/boost_asio/reference/execution__any_executor/operator_bool.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/ -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_/ -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq__eq_/overload3.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/overload3.html -/doc/html/boost_asio/reference/execution__any_executor/operator_eq_/overload4.html -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_/ -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/operator_not__eq_/overload3.html -/doc/html/boost_asio/reference/execution__any_executor/prefer.html -/doc/html/boost_asio/reference/execution__any_executor/query.html -/doc/html/boost_asio/reference/execution__any_executor/require.html -/doc/html/boost_asio/reference/execution__any_executor/swap.html -/doc/html/boost_asio/reference/execution__any_executor/target/ -/doc/html/boost_asio/reference/execution__any_executor/target.html -/doc/html/boost_asio/reference/execution__any_executor/target/overload1.html -/doc/html/boost_asio/reference/execution__any_executor/target/overload2.html -/doc/html/boost_asio/reference/execution__any_executor/target_type.html -/doc/html/boost_asio/reference/execution__bad_executor/ -/doc/html/boost_asio/reference/execution__bad_executor/bad_executor.html -/doc/html/boost_asio/reference/execution__bad_executor.html -/doc/html/boost_asio/reference/execution__bad_executor/what.html -/doc/html/boost_asio/reference/execution__blocking_adaptation.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/ -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/allowed.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/ -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/allowed_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__allowed_t/value.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/ -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload1.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload2.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/blocking_adaptation_t/overload3.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/disallowed.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/ -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/disallowed_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t__disallowed_t/value.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__blocking_adaptation_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking.html -/doc/html/boost_asio/reference/execution__blocking_t/ -/doc/html/boost_asio/reference/execution__blocking_t/always.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/ -/doc/html/boost_asio/reference/execution__blocking_t__always_t/always_t.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_t__always_t/value.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/ -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/overload1.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/overload2.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/overload3.html -/doc/html/boost_asio/reference/execution__blocking_t/blocking_t/overload4.html -/doc/html/boost_asio/reference/execution__blocking_t.html -/doc/html/boost_asio/reference/execution__blocking_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_t/never.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/ -/doc/html/boost_asio/reference/execution__blocking_t__never_t.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/never_t.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_t__never_t/value.html -/doc/html/boost_asio/reference/execution__blocking_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__blocking_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__blocking_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_t/possibly.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/ -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/is_preferable.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/is_requirable.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/possibly_t.html -/doc/html/boost_asio/reference/execution__blocking_t__possibly_t/value.html -/doc/html/boost_asio/reference/execution__bulk_execute.html -/doc/html/boost_asio/reference/execution__bulk_guarantee.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload1.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload2.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload3.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/bulk_guarantee_t/overload4.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/is_preferable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/is_requirable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/parallel.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/is_preferable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/is_requirable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/parallel_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__parallel_t/value.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/sequenced.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/is_preferable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/is_requirable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/sequenced_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__sequenced_t/value.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t/unsequenced.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/ -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_preferable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/is_requirable.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/unsequenced_t.html -/doc/html/boost_asio/reference/execution__bulk_guarantee_t__unsequenced_t/value.html -/doc/html/boost_asio/reference/execution__can_bulk_execute.html -/doc/html/boost_asio/reference/execution__can_connect.html -/doc/html/boost_asio/reference/execution__can_execute.html -/doc/html/boost_asio/reference/execution__can_schedule.html -/doc/html/boost_asio/reference/execution__can_set_done.html -/doc/html/boost_asio/reference/execution__can_set_error.html -/doc/html/boost_asio/reference/execution__can_set_value.html -/doc/html/boost_asio/reference/execution__can_start.html -/doc/html/boost_asio/reference/execution__can_submit.html -/doc/html/boost_asio/reference/execution__connect.html -/doc/html/boost_asio/reference/execution__connect_result/ -/doc/html/boost_asio/reference/execution__connect_result.html -/doc/html/boost_asio/reference/execution__connect_result/type.html -/doc/html/boost_asio/reference/execution_context/ -/doc/html/boost_asio/reference/execution_context/add_service.html -/doc/html/boost_asio/reference/execution__context_as.html -/doc/html/boost_asio/reference/execution__context_as_t/ -/doc/html/boost_asio/reference/execution__context_as_t.html -/doc/html/boost_asio/reference/execution__context_as_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__context_as_t/is_preferable.html -/doc/html/boost_asio/reference/execution__context_as_t/is_requirable.html -/doc/html/boost_asio/reference/execution__context_as_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution_context/destroy.html -/doc/html/boost_asio/reference/execution_context/_execution_context.html -/doc/html/boost_asio/reference/execution_context/execution_context.html -/doc/html/boost_asio/reference/execution_context/fork_event.html -/doc/html/boost_asio/reference/execution_context/has_service.html -/doc/html/boost_asio/reference/ExecutionContext.html -/doc/html/boost_asio/reference/execution__context.html -/doc/html/boost_asio/reference/execution_context.html -/doc/html/boost_asio/reference/execution_context__id/ -/doc/html/boost_asio/reference/execution_context__id.html -/doc/html/boost_asio/reference/execution_context__id/id.html -/doc/html/boost_asio/reference/execution_context/make_service.html -/doc/html/boost_asio/reference/execution_context/notify_fork.html -/doc/html/boost_asio/reference/execution_context__service/ -/doc/html/boost_asio/reference/execution_context__service/context.html -/doc/html/boost_asio/reference/execution_context__service.html -/doc/html/boost_asio/reference/execution_context__service/notify_fork.html -/doc/html/boost_asio/reference/execution_context__service/_service.html -/doc/html/boost_asio/reference/execution_context__service/service.html -/doc/html/boost_asio/reference/execution_context__service/shutdown.html -/doc/html/boost_asio/reference/execution_context/shutdown.html -/doc/html/boost_asio/reference/execution__context_t/ -/doc/html/boost_asio/reference/execution__context_t.html -/doc/html/boost_asio/reference/execution__context_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__context_t/is_preferable.html -/doc/html/boost_asio/reference/execution__context_t/is_requirable.html -/doc/html/boost_asio/reference/execution__context_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution_context/use_service/ -/doc/html/boost_asio/reference/execution_context/use_service.html -/doc/html/boost_asio/reference/execution_context/use_service/overload1.html -/doc/html/boost_asio/reference/execution_context/use_service/overload2.html -/doc/html/boost_asio/reference/execution__execute.html -/doc/html/boost_asio/reference/execution__executor_index/ -/doc/html/boost_asio/reference/execution__executor_index.html -/doc/html/boost_asio/reference/execution__executor_index/type.html -/doc/html/boost_asio/reference/execution__executor_shape/ -/doc/html/boost_asio/reference/execution__executor_shape.html -/doc/html/boost_asio/reference/execution__executor_shape/type.html -/doc/html/boost_asio/reference/execution__invocable_archetype/ -/doc/html/boost_asio/reference/execution__invocable_archetype.html -/doc/html/boost_asio/reference/execution__invocable_archetype/operator_lp__rp_.html -/doc/html/boost_asio/reference/execution__is_executor.html -/doc/html/boost_asio/reference/execution__is_executor_of.html -/doc/html/boost_asio/reference/execution__is_nothrow_receiver_of.html -/doc/html/boost_asio/reference/execution__is_operation_state.html -/doc/html/boost_asio/reference/execution__is_receiver.html -/doc/html/boost_asio/reference/execution__is_receiver_of.html -/doc/html/boost_asio/reference/execution__is_scheduler.html -/doc/html/boost_asio/reference/execution__is_sender.html -/doc/html/boost_asio/reference/execution__is_sender_to.html -/doc/html/boost_asio/reference/execution__is_typed_sender.html -/doc/html/boost_asio/reference/execution__mapping.html -/doc/html/boost_asio/reference/execution__mapping_t/ -/doc/html/boost_asio/reference/execution__mapping_t.html -/doc/html/boost_asio/reference/execution__mapping_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__mapping_t/is_preferable.html -/doc/html/boost_asio/reference/execution__mapping_t/is_requirable.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/ -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/overload1.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/overload2.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/overload3.html -/doc/html/boost_asio/reference/execution__mapping_t/mapping_t/overload4.html -/doc/html/boost_asio/reference/execution__mapping_t/new_thread.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/ -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/is_preferable.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/is_requirable.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/new_thread_t.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__mapping_t__new_thread_t/value.html -/doc/html/boost_asio/reference/execution__mapping_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__mapping_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__mapping_t/other.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/ -/doc/html/boost_asio/reference/execution__mapping_t__other_t.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/is_preferable.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/is_requirable.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/other_t.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__mapping_t__other_t/value.html -/doc/html/boost_asio/reference/execution__mapping_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__mapping_t/thread.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/ -/doc/html/boost_asio/reference/execution__mapping_t__thread_t.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/is_preferable.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/is_requirable.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/thread_t.html -/doc/html/boost_asio/reference/execution__mapping_t__thread_t/value.html -/doc/html/boost_asio/reference/execution__occupancy.html -/doc/html/boost_asio/reference/execution__occupancy_t/ -/doc/html/boost_asio/reference/execution__occupancy_t.html -/doc/html/boost_asio/reference/execution__occupancy_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__occupancy_t/is_preferable.html -/doc/html/boost_asio/reference/execution__occupancy_t/is_requirable.html -/doc/html/boost_asio/reference/execution__occupancy_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__outstanding_work.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/ -/doc/html/boost_asio/reference/execution__outstanding_work_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/is_preferable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/is_requirable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t/ -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t/overload1.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t/overload2.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/outstanding_work_t/overload3.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/tracked.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/ -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/is_preferable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/is_requirable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/tracked_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__tracked_t/value.html -/doc/html/boost_asio/reference/execution__outstanding_work_t/untracked.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/ -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/is_preferable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/is_requirable.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/untracked_t.html -/doc/html/boost_asio/reference/execution__outstanding_work_t__untracked_t/value.html -/doc/html/boost_asio/reference/execution__prefer_only/ -/doc/html/boost_asio/reference/execution__prefer_only.html -/doc/html/boost_asio/reference/execution__prefer_only/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__prefer_only/is_preferable.html -/doc/html/boost_asio/reference/execution__prefer_only/is_requirable.html -/doc/html/boost_asio/reference/execution__prefer_only/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__receiver_invocation_error/ -/doc/html/boost_asio/reference/execution__receiver_invocation_error.html -/doc/html/boost_asio/reference/execution__receiver_invocation_error/receiver_invocation_error.html -/doc/html/boost_asio/reference/execution__relationship.html -/doc/html/boost_asio/reference/execution__relationship_t/ -/doc/html/boost_asio/reference/execution__relationship_t/continuation.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/ -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/continuation_t.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/is_preferable.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/is_requirable.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__relationship_t__continuation_t/value.html -/doc/html/boost_asio/reference/execution__relationship_t/fork.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/ -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/fork_t.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/is_preferable.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/is_requirable.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__relationship_t__fork_t/value.html -/doc/html/boost_asio/reference/execution__relationship_t.html -/doc/html/boost_asio/reference/execution__relationship_t/is_applicable_property_v.html -/doc/html/boost_asio/reference/execution__relationship_t/is_preferable.html -/doc/html/boost_asio/reference/execution__relationship_t/is_requirable.html -/doc/html/boost_asio/reference/execution__relationship_t/operator_eq__eq_.html -/doc/html/boost_asio/reference/execution__relationship_t/operator_not__eq_.html -/doc/html/boost_asio/reference/execution__relationship_t/polymorphic_query_result_type.html -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t/ -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t.html -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t/overload1.html -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t/overload2.html -/doc/html/boost_asio/reference/execution__relationship_t/relationship_t/overload3.html -/doc/html/boost_asio/reference/execution__schedule.html -/doc/html/boost_asio/reference/execution__sender_base.html -/doc/html/boost_asio/reference/execution__sender_traits.html -/doc/html/boost_asio/reference/execution__set_done.html -/doc/html/boost_asio/reference/execution__set_error.html -/doc/html/boost_asio/reference/execution__set_value.html -/doc/html/boost_asio/reference/execution__start.html -/doc/html/boost_asio/reference/execution__submit.html -/doc/html/boost_asio/reference/executor/ -/doc/html/boost_asio/reference/Executor1.html -/doc/html/boost_asio/reference/executor_arg.html -/doc/html/boost_asio/reference/executor_arg_t/ -/doc/html/boost_asio/reference/executor_arg_t/executor_arg_t.html -/doc/html/boost_asio/reference/executor_arg_t.html -/doc/html/boost_asio/reference/executor_binder/ -/doc/html/boost_asio/reference/executor_binder/argument_type.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/ -/doc/html/boost_asio/reference/executor_binder/_executor_binder.html -/doc/html/boost_asio/reference/executor_binder/executor_binder.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload1.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload2.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload3.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload4.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload5.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload6.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload7.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload8.html -/doc/html/boost_asio/reference/executor_binder/executor_binder/overload9.html -/doc/html/boost_asio/reference/executor_binder/executor_type.html -/doc/html/boost_asio/reference/executor_binder/first_argument_type.html -/doc/html/boost_asio/reference/executor_binder/get/ -/doc/html/boost_asio/reference/executor_binder/get_executor.html -/doc/html/boost_asio/reference/executor_binder/get.html -/doc/html/boost_asio/reference/executor_binder/get/overload1.html -/doc/html/boost_asio/reference/executor_binder/get/overload2.html -/doc/html/boost_asio/reference/executor_binder.html -/doc/html/boost_asio/reference/executor_binder/operator_lp__rp_/ -/doc/html/boost_asio/reference/executor_binder/operator_lp__rp_.html -/doc/html/boost_asio/reference/executor_binder/operator_lp__rp_/overload1.html -/doc/html/boost_asio/reference/executor_binder/operator_lp__rp_/overload2.html -/doc/html/boost_asio/reference/executor_binder/result_type.html -/doc/html/boost_asio/reference/executor_binder/second_argument_type.html -/doc/html/boost_asio/reference/executor_binder/target_type.html -/doc/html/boost_asio/reference/executor/context.html -/doc/html/boost_asio/reference/executor/defer.html -/doc/html/boost_asio/reference/executor/dispatch.html -/doc/html/boost_asio/reference/executor/executor/ -/doc/html/boost_asio/reference/executor/_executor.html -/doc/html/boost_asio/reference/executor/executor.html -/doc/html/boost_asio/reference/executor/executor/overload1.html -/doc/html/boost_asio/reference/executor/executor/overload2.html -/doc/html/boost_asio/reference/executor/executor/overload3.html -/doc/html/boost_asio/reference/executor/executor/overload4.html -/doc/html/boost_asio/reference/executor/executor/overload5.html -/doc/html/boost_asio/reference/executor/executor/overload6.html -/doc/html/boost_asio/reference/executor.html -/doc/html/boost_asio/reference/executor/on_work_finished.html -/doc/html/boost_asio/reference/executor/on_work_started.html -/doc/html/boost_asio/reference/executor/operator_eq_/ -/doc/html/boost_asio/reference/executor/operator_eq__eq_.html -/doc/html/boost_asio/reference/executor/operator_eq_.html -/doc/html/boost_asio/reference/executor/operator_eq_/overload1.html -/doc/html/boost_asio/reference/executor/operator_eq_/overload2.html -/doc/html/boost_asio/reference/executor/operator_eq_/overload3.html -/doc/html/boost_asio/reference/executor/operator_eq_/overload4.html -/doc/html/boost_asio/reference/executor/operator_not__eq_.html -/doc/html/boost_asio/reference/executor/operator_unspecified_bool_type.html -/doc/html/boost_asio/reference/executor/post.html -/doc/html/boost_asio/reference/executor/target/ -/doc/html/boost_asio/reference/executor/target.html -/doc/html/boost_asio/reference/executor/target/overload1.html -/doc/html/boost_asio/reference/executor/target/overload2.html -/doc/html/boost_asio/reference/executor/target_type.html -/doc/html/boost_asio/reference/executor/unspecified_bool_true.html -/doc/html/boost_asio/reference/executor/unspecified_bool_type.html -/doc/html/boost_asio/reference/executor__unspecified_bool_type_t.html -/doc/html/boost_asio/reference/executor_work_guard/ -/doc/html/boost_asio/reference/executor_work_guard/executor_type.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard/ -/doc/html/boost_asio/reference/executor_work_guard/_executor_work_guard.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard/overload1.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard/overload2.html -/doc/html/boost_asio/reference/executor_work_guard/executor_work_guard/overload3.html -/doc/html/boost_asio/reference/executor_work_guard/get_executor.html -/doc/html/boost_asio/reference/executor_work_guard.html -/doc/html/boost_asio/reference/executor_work_guard/owns_work.html -/doc/html/boost_asio/reference/executor_work_guard/reset.html -/doc/html/boost_asio/reference/experimental__append.html -/doc/html/boost_asio/reference/experimental__append_t/ -/doc/html/boost_asio/reference/experimental__append_t/append_t.html -/doc/html/boost_asio/reference/experimental__append_t.html -/doc/html/boost_asio/reference/experimental__append_t/token_.html -/doc/html/boost_asio/reference/experimental__append_t/values_.html -/doc/html/boost_asio/reference/experimental__as_single.html -/doc/html/boost_asio/reference/experimental__as_single_t/ -/doc/html/boost_asio/reference/experimental__as_single_t/as_default_on.html -/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/ -/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t.html -/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/overload1.html -/doc/html/boost_asio/reference/experimental__as_single_t/as_single_t/overload2.html -/doc/html/boost_asio/reference/experimental__as_single_t__default_constructor_tag.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/ -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/ -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload1.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default/executor_with_default/overload2.html -/doc/html/boost_asio/reference/experimental__as_single_t__executor_with_default.html -/doc/html/boost_asio/reference/experimental__as_single_t.html -/doc/html/boost_asio/reference/experimental__as_single_t/token_.html -/doc/html/boost_asio/reference/experimental__as_tuple.html -/doc/html/boost_asio/reference/experimental__as_tuple_t/ -/doc/html/boost_asio/reference/experimental__as_tuple_t/as_default_on.html -/doc/html/boost_asio/reference/experimental__as_tuple_t/as_tuple_t/ -/doc/html/boost_asio/reference/experimental__as_tuple_t/as_tuple_t.html -/doc/html/boost_asio/reference/experimental__as_tuple_t/as_tuple_t/overload1.html -/doc/html/boost_asio/reference/experimental__as_tuple_t/as_tuple_t/overload2.html -/doc/html/boost_asio/reference/experimental__as_tuple_t__default_constructor_tag.html -/doc/html/boost_asio/reference/experimental__as_tuple_t__executor_with_default/ -/doc/html/boost_asio/reference/experimental__as_tuple_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/experimental__as_tuple_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/experimental__as_tuple_t__executor_with_default.html -/doc/html/boost_asio/reference/experimental__as_tuple_t.html -/doc/html/boost_asio/reference/experimental__as_tuple_t/token_.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/ -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload1.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload2.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload3.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload4.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload5.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator__amp__amp_/overload6.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/ -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload1.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload2.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload3.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload4.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload5.html -/doc/html/boost_asio/reference/experimental__awaitable_operators__operator_pipe__pipe_/overload6.html -/doc/html/boost_asio/reference/experimental__coro/ -/doc/html/boost_asio/reference/experimental__coro/async_resume/ -/doc/html/boost_asio/reference/experimental__coro/async_resume.html -/doc/html/boost_asio/reference/experimental__coro/async_resume/overload1.html -/doc/html/boost_asio/reference/experimental__coro/async_resume/overload2.html -/doc/html/boost_asio/reference/experimental__coro__awaitable_t/ -/doc/html/boost_asio/reference/experimental__coro__awaitable_t/await_ready.html -/doc/html/boost_asio/reference/experimental__coro__awaitable_t/await_resume.html -/doc/html/boost_asio/reference/experimental__coro__awaitable_t/await_suspend.html -/doc/html/boost_asio/reference/experimental__coro__awaitable_t/coro_.html -/doc/html/boost_asio/reference/experimental__coro__awaitable_t.html -/doc/html/boost_asio/reference/experimental__coro/cancel.html -/doc/html/boost_asio/reference/experimental__coro/coro/ -/doc/html/boost_asio/reference/experimental__coro/_coro.html -/doc/html/boost_asio/reference/experimental__coro/coro.html -/doc/html/boost_asio/reference/experimental__coro/coro/overload1.html -/doc/html/boost_asio/reference/experimental__coro/coro/overload2.html -/doc/html/boost_asio/reference/experimental__coro/coro/overload3.html -/doc/html/boost_asio/reference/experimental__coro/get_executor.html -/doc/html/boost_asio/reference/experimental__coro.html -/doc/html/boost_asio/reference/experimental__coro/is_noexcept.html -/doc/html/boost_asio/reference/experimental__coro/is_open.html -/doc/html/boost_asio/reference/experimental__coro/operator_bool.html -/doc/html/boost_asio/reference/experimental__coro/operator_co_await.html -/doc/html/boost_asio/reference/experimental__coro/operator_eq_/ -/doc/html/boost_asio/reference/experimental__coro/operator_eq_.html -/doc/html/boost_asio/reference/experimental__coro/operator_eq_/overload1.html -/doc/html/boost_asio/reference/experimental__coro/operator_eq_/overload2.html -/doc/html/boost_asio/reference/experimental__coro/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__deferred_async_operation.html -/doc/html/boost_asio/reference/experimental__deferred_conditional/ -/doc/html/boost_asio/reference/experimental__deferred_conditional/deferred_conditional.html -/doc/html/boost_asio/reference/experimental__deferred_conditional.html -/doc/html/boost_asio/reference/experimental__deferred_conditional/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__deferred_conditional/otherwise.html -/doc/html/boost_asio/reference/experimental__deferred_conditional/then.html -/doc/html/boost_asio/reference/experimental__deferred_function/ -/doc/html/boost_asio/reference/experimental__deferred_function/decltype.html -/doc/html/boost_asio/reference/experimental__deferred_function/deferred_function.html -/doc/html/boost_asio/reference/experimental__deferred_function/function_.html -/doc/html/boost_asio/reference/experimental__deferred_function.html -/doc/html/boost_asio/reference/experimental__deferred.html -/doc/html/boost_asio/reference/experimental__deferred_init_tag.html -/doc/html/boost_asio/reference/experimental__deferred_noop/ -/doc/html/boost_asio/reference/experimental__deferred_noop.html -/doc/html/boost_asio/reference/experimental__deferred_noop/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__deferred_sequence/ -/doc/html/boost_asio/reference/experimental__deferred_sequence/decltype.html -/doc/html/boost_asio/reference/experimental__deferred_sequence/deferred_sequence.html -/doc/html/boost_asio/reference/experimental__deferred_sequence.html -/doc/html/boost_asio/reference/experimental__deferred_sequence__initiate/ -/doc/html/boost_asio/reference/experimental__deferred_sequence__initiate.html -/doc/html/boost_asio/reference/experimental__deferred_sequence__initiate/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__deferred_t/ -/doc/html/boost_asio/reference/experimental__deferred_t/as_default_on.html -/doc/html/boost_asio/reference/experimental__deferred_t/deferred_t.html -/doc/html/boost_asio/reference/experimental__deferred_t__executor_with_default/ -/doc/html/boost_asio/reference/experimental__deferred_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/experimental__deferred_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/experimental__deferred_t__executor_with_default.html -/doc/html/boost_asio/reference/experimental__deferred_t.html -/doc/html/boost_asio/reference/experimental__deferred_t/operator_lp__rp_/ -/doc/html/boost_asio/reference/experimental__deferred_t/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__deferred_t/operator_lp__rp_/overload1.html -/doc/html/boost_asio/reference/experimental__deferred_t/operator_lp__rp_/overload2.html -/doc/html/boost_asio/reference/experimental__deferred_t/values.html -/doc/html/boost_asio/reference/experimental__deferred_t/when.html -/doc/html/boost_asio/reference/experimental__deferred_values.html -/doc/html/boost_asio/reference/experimental__deferred_values__initiate/ -/doc/html/boost_asio/reference/experimental__deferred_values__initiate.html -/doc/html/boost_asio/reference/experimental__deferred_values__initiate/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__is_deferred.html -/doc/html/boost_asio/reference/experimental__is_promise_c.html -/doc/html/boost_asio/reference/experimental__is_promise.html -/doc/html/boost_asio/reference/experimental__is_promise_lt__promise_lt__Ts_ellipsis__gt__gt_.html -/doc/html/boost_asio/reference/experimental__is_promise_v.html -/doc/html/boost_asio/reference/experimental__make_parallel_group.html -/doc/html/boost_asio/reference/experimental__operator_pipe_.html -/doc/html/boost_asio/reference/experimental__parallel_group/ -/doc/html/boost_asio/reference/experimental__parallel_group/async_wait.html -/doc/html/boost_asio/reference/experimental__parallel_group.html -/doc/html/boost_asio/reference/experimental__parallel_group/parallel_group.html -/doc/html/boost_asio/reference/experimental__parallel_group/signature.html -/doc/html/boost_asio/reference/experimental__prepend.html -/doc/html/boost_asio/reference/experimental__prepend_t/ -/doc/html/boost_asio/reference/experimental__prepend_t.html -/doc/html/boost_asio/reference/experimental__prepend_t/prepend_t.html -/doc/html/boost_asio/reference/experimental__prepend_t/token_.html -/doc/html/boost_asio/reference/experimental__prepend_t/values_.html -/doc/html/boost_asio/reference/experimental__promise.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/ -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/ -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/overload1.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/overload2.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/overload3.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/all/overload4.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/async_wait.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/cancel.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/complete.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/get_executor.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise/ -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/_promise.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise/overload1.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise/overload2.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/promise/overload3.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/ -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/overload1.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/overload2.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/overload3.html -/doc/html/boost_asio/reference/experimental__promise_lt__void_lp_Ts_ellipsis__rp__comma__Executor__gt_/race/overload4.html -/doc/html/boost_asio/reference/experimental__promise_value_type.html -/doc/html/boost_asio/reference/experimental__promise_value_type_lt__gt_.html -/doc/html/boost_asio/reference/experimental__promise_value_type_lt__T__gt_.html -/doc/html/boost_asio/reference/experimental__use_coro.html -/doc/html/boost_asio/reference/experimental__use_coro_t.html -/doc/html/boost_asio/reference/experimental__use_promise.html -/doc/html/boost_asio/reference/experimental__use_promise_t.html -/doc/html/boost_asio/reference/experimental__wait_for_all/ -/doc/html/boost_asio/reference/experimental__wait_for_all.html -/doc/html/boost_asio/reference/experimental__wait_for_all/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__wait_for_one/ -/doc/html/boost_asio/reference/experimental__wait_for_one_error/ -/doc/html/boost_asio/reference/experimental__wait_for_one_error.html -/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/ -/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload1.html -/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload2.html -/doc/html/boost_asio/reference/experimental__wait_for_one_error/operator_lp__rp_/overload3.html -/doc/html/boost_asio/reference/experimental__wait_for_one_error/wait_for_one_error.html -/doc/html/boost_asio/reference/experimental__wait_for_one.html -/doc/html/boost_asio/reference/experimental__wait_for_one/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__wait_for_one_success/ -/doc/html/boost_asio/reference/experimental__wait_for_one_success.html -/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/ -/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_.html -/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload1.html -/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload2.html -/doc/html/boost_asio/reference/experimental__wait_for_one_success/operator_lp__rp_/overload3.html -/doc/html/boost_asio/reference/experimental__wait_for_one_success/wait_for_one_success.html -/doc/html/boost_asio/reference/experimental__wait_for_one/wait_for_one.html -/doc/html/boost_asio/reference/generic__basic_endpoint/ -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/ -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint.html -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/overload1.html -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/overload2.html -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/overload3.html -/doc/html/boost_asio/reference/generic__basic_endpoint/basic_endpoint/overload4.html -/doc/html/boost_asio/reference/generic__basic_endpoint/capacity.html -/doc/html/boost_asio/reference/generic__basic_endpoint/data/ -/doc/html/boost_asio/reference/generic__basic_endpoint/data.html -/doc/html/boost_asio/reference/generic__basic_endpoint/data/overload1.html -/doc/html/boost_asio/reference/generic__basic_endpoint/data/overload2.html -/doc/html/boost_asio/reference/generic__basic_endpoint/data_type.html -/doc/html/boost_asio/reference/generic__basic_endpoint.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_gt__eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_gt_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_lt__eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_lt_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__basic_endpoint/protocol.html -/doc/html/boost_asio/reference/generic__basic_endpoint/protocol_type.html -/doc/html/boost_asio/reference/generic__basic_endpoint/resize.html -/doc/html/boost_asio/reference/generic__basic_endpoint/size.html -/doc/html/boost_asio/reference/generic__datagram_protocol/ -/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol/ -/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol.html -/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol/overload1.html -/doc/html/boost_asio/reference/generic__datagram_protocol/datagram_protocol/overload2.html -/doc/html/boost_asio/reference/generic__datagram_protocol/endpoint.html -/doc/html/boost_asio/reference/generic__datagram_protocol/family.html -/doc/html/boost_asio/reference/generic__datagram_protocol.html -/doc/html/boost_asio/reference/generic__datagram_protocol/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__datagram_protocol/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__datagram_protocol/protocol.html -/doc/html/boost_asio/reference/generic__datagram_protocol/socket.html -/doc/html/boost_asio/reference/generic__datagram_protocol/type.html -/doc/html/boost_asio/reference/generic__raw_protocol/ -/doc/html/boost_asio/reference/generic__raw_protocol/endpoint.html -/doc/html/boost_asio/reference/generic__raw_protocol/family.html -/doc/html/boost_asio/reference/generic__raw_protocol.html -/doc/html/boost_asio/reference/generic__raw_protocol/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__raw_protocol/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__raw_protocol/protocol.html -/doc/html/boost_asio/reference/generic__raw_protocol/raw_protocol/ -/doc/html/boost_asio/reference/generic__raw_protocol/raw_protocol.html -/doc/html/boost_asio/reference/generic__raw_protocol/raw_protocol/overload1.html -/doc/html/boost_asio/reference/generic__raw_protocol/raw_protocol/overload2.html -/doc/html/boost_asio/reference/generic__raw_protocol/socket.html -/doc/html/boost_asio/reference/generic__raw_protocol/type.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/ -/doc/html/boost_asio/reference/generic__seq_packet_protocol/endpoint.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/family.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/protocol.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/seq_packet_protocol/ -/doc/html/boost_asio/reference/generic__seq_packet_protocol/seq_packet_protocol.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/seq_packet_protocol/overload1.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/seq_packet_protocol/overload2.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/socket.html -/doc/html/boost_asio/reference/generic__seq_packet_protocol/type.html -/doc/html/boost_asio/reference/generic__stream_protocol/ -/doc/html/boost_asio/reference/generic__stream_protocol/endpoint.html -/doc/html/boost_asio/reference/generic__stream_protocol/family.html -/doc/html/boost_asio/reference/generic__stream_protocol.html -/doc/html/boost_asio/reference/generic__stream_protocol/iostream.html -/doc/html/boost_asio/reference/generic__stream_protocol/operator_eq__eq_.html -/doc/html/boost_asio/reference/generic__stream_protocol/operator_not__eq_.html -/doc/html/boost_asio/reference/generic__stream_protocol/protocol.html -/doc/html/boost_asio/reference/generic__stream_protocol/socket.html -/doc/html/boost_asio/reference/generic__stream_protocol/stream_protocol/ -/doc/html/boost_asio/reference/generic__stream_protocol/stream_protocol.html -/doc/html/boost_asio/reference/generic__stream_protocol/stream_protocol/overload1.html -/doc/html/boost_asio/reference/generic__stream_protocol/stream_protocol/overload2.html -/doc/html/boost_asio/reference/generic__stream_protocol/type.html -/doc/html/boost_asio/reference/get_associated_allocator/ -/doc/html/boost_asio/reference/get_associated_allocator.html -/doc/html/boost_asio/reference/get_associated_allocator/overload1.html -/doc/html/boost_asio/reference/get_associated_allocator/overload2.html -/doc/html/boost_asio/reference/get_associated_cancellation_slot/ -/doc/html/boost_asio/reference/get_associated_cancellation_slot.html -/doc/html/boost_asio/reference/get_associated_cancellation_slot/overload1.html -/doc/html/boost_asio/reference/get_associated_cancellation_slot/overload2.html -/doc/html/boost_asio/reference/get_associated_executor/ -/doc/html/boost_asio/reference/get_associated_executor.html -/doc/html/boost_asio/reference/get_associated_executor/overload1.html -/doc/html/boost_asio/reference/get_associated_executor/overload2.html -/doc/html/boost_asio/reference/get_associated_executor/overload3.html -/doc/html/boost_asio/reference/GettableSerialPortOption.html -/doc/html/boost_asio/reference/GettableSocketOption.html -/doc/html/boost_asio/reference/Handler.html -/doc/html/boost_asio/reference/HandshakeHandler.html -/doc/html/boost_asio/reference/high_resolution_timer.html -/doc/html/boost_asio/reference.html -/doc/html/boost_asio/reference/InternetProtocol.html -/doc/html/boost_asio/reference/invalid_service_owner/ -/doc/html/boost_asio/reference/invalid_service_owner.html -/doc/html/boost_asio/reference/invalid_service_owner/invalid_service_owner.html -/doc/html/boost_asio/reference/io_context/ -/doc/html/boost_asio/reference/io_context/add_service.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/basic_executor_type/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/_basic_executor_type.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/basic_executor_type.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/basic_executor_type/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/basic_executor_type/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/context.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/defer.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/dispatch.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/execute.html -/doc/html/boost_asio/reference/io_context__basic_executor_type.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/on_work_finished.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/on_work_started.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq_/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq__eq_.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq_.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq_/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_eq_/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/operator_not__eq_.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/post.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/query.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload3.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload4.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query/overload5.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query__static/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/query__static.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query__static/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/query__static/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/ -/doc/html/boost_asio/reference/io_context__basic_executor_type/require.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload1.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload2.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload3.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload4.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload5.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload6.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload7.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/require/overload8.html -/doc/html/boost_asio/reference/io_context__basic_executor_type/running_in_this_thread.html -/doc/html/boost_asio/reference/io_context/count_type.html -/doc/html/boost_asio/reference/io_context/destroy.html -/doc/html/boost_asio/reference/io_context/dispatch.html -/doc/html/boost_asio/reference/io_context/executor_type.html -/doc/html/boost_asio/reference/io_context/fork_event.html -/doc/html/boost_asio/reference/io_context/get_executor.html -/doc/html/boost_asio/reference/io_context/has_service.html -/doc/html/boost_asio/reference/io_context.html -/doc/html/boost_asio/reference/io_context/io_context/ -/doc/html/boost_asio/reference/io_context/_io_context.html -/doc/html/boost_asio/reference/io_context/io_context.html -/doc/html/boost_asio/reference/io_context/io_context/overload1.html -/doc/html/boost_asio/reference/io_context/io_context/overload2.html -/doc/html/boost_asio/reference/io_context/make_service.html -/doc/html/boost_asio/reference/io_context/notify_fork.html -/doc/html/boost_asio/reference/io_context/poll/ -/doc/html/boost_asio/reference/io_context/poll.html -/doc/html/boost_asio/reference/io_context/poll_one/ -/doc/html/boost_asio/reference/io_context/poll_one.html -/doc/html/boost_asio/reference/io_context/poll_one/overload1.html -/doc/html/boost_asio/reference/io_context/poll_one/overload2.html -/doc/html/boost_asio/reference/io_context/poll/overload1.html -/doc/html/boost_asio/reference/io_context/poll/overload2.html -/doc/html/boost_asio/reference/io_context/post.html -/doc/html/boost_asio/reference/io_context/reset.html -/doc/html/boost_asio/reference/io_context/restart.html -/doc/html/boost_asio/reference/io_context/run/ -/doc/html/boost_asio/reference/io_context/run_for.html -/doc/html/boost_asio/reference/io_context/run.html -/doc/html/boost_asio/reference/io_context/run_one/ -/doc/html/boost_asio/reference/io_context/run_one_for.html -/doc/html/boost_asio/reference/io_context/run_one.html -/doc/html/boost_asio/reference/io_context/run_one/overload1.html -/doc/html/boost_asio/reference/io_context/run_one/overload2.html -/doc/html/boost_asio/reference/io_context/run_one_until.html -/doc/html/boost_asio/reference/io_context/run/overload1.html -/doc/html/boost_asio/reference/io_context/run/overload2.html -/doc/html/boost_asio/reference/io_context/run_until.html -/doc/html/boost_asio/reference/io_context__service/ -/doc/html/boost_asio/reference/io_context__service/get_io_context.html -/doc/html/boost_asio/reference/io_context__service.html -/doc/html/boost_asio/reference/io_context__service/_service.html -/doc/html/boost_asio/reference/io_context__service/service.html -/doc/html/boost_asio/reference/io_context/shutdown.html -/doc/html/boost_asio/reference/io_context/stop.html -/doc/html/boost_asio/reference/io_context/stopped.html -/doc/html/boost_asio/reference/io_context__strand/ -/doc/html/boost_asio/reference/io_context__strand/context.html -/doc/html/boost_asio/reference/io_context__strand/defer.html -/doc/html/boost_asio/reference/io_context__strand/dispatch/ -/doc/html/boost_asio/reference/io_context__strand/dispatch.html -/doc/html/boost_asio/reference/io_context__strand/dispatch/overload1.html -/doc/html/boost_asio/reference/io_context__strand/dispatch/overload2.html -/doc/html/boost_asio/reference/io_context__strand.html -/doc/html/boost_asio/reference/io_context__strand/on_work_finished.html -/doc/html/boost_asio/reference/io_context__strand/on_work_started.html -/doc/html/boost_asio/reference/io_context__strand/operator_eq__eq_.html -/doc/html/boost_asio/reference/io_context__strand/operator_not__eq_.html -/doc/html/boost_asio/reference/io_context__strand/post/ -/doc/html/boost_asio/reference/io_context__strand/post.html -/doc/html/boost_asio/reference/io_context__strand/post/overload1.html -/doc/html/boost_asio/reference/io_context__strand/post/overload2.html -/doc/html/boost_asio/reference/io_context__strand/running_in_this_thread.html -/doc/html/boost_asio/reference/io_context__strand/_strand.html -/doc/html/boost_asio/reference/io_context__strand/strand.html -/doc/html/boost_asio/reference/io_context__strand/wrap.html -/doc/html/boost_asio/reference/io_context/use_service/ -/doc/html/boost_asio/reference/io_context/use_service.html -/doc/html/boost_asio/reference/io_context/use_service/overload1.html -/doc/html/boost_asio/reference/io_context/use_service/overload2.html -/doc/html/boost_asio/reference/io_context__work/ -/doc/html/boost_asio/reference/io_context__work/get_io_context.html -/doc/html/boost_asio/reference/io_context__work.html -/doc/html/boost_asio/reference/io_context__work/work/ -/doc/html/boost_asio/reference/io_context__work/_work.html -/doc/html/boost_asio/reference/io_context__work/work.html -/doc/html/boost_asio/reference/io_context__work/work/overload1.html -/doc/html/boost_asio/reference/io_context__work/work/overload2.html -/doc/html/boost_asio/reference/io_context/wrap.html -/doc/html/boost_asio/reference/IoControlCommand.html -/doc/html/boost_asio/reference/IoObjectService.html -/doc/html/boost_asio/reference/io_service.html -/doc/html/boost_asio/reference/ip__address/ -/doc/html/boost_asio/reference/ip__address/address/ -/doc/html/boost_asio/reference/ip__address/address.html -/doc/html/boost_asio/reference/ip__address/address/overload1.html -/doc/html/boost_asio/reference/ip__address/address/overload2.html -/doc/html/boost_asio/reference/ip__address/address/overload3.html -/doc/html/boost_asio/reference/ip__address/address/overload4.html -/doc/html/boost_asio/reference/ip__address/from_string/ -/doc/html/boost_asio/reference/ip__address/from_string.html -/doc/html/boost_asio/reference/ip__address/from_string/overload1.html -/doc/html/boost_asio/reference/ip__address/from_string/overload2.html -/doc/html/boost_asio/reference/ip__address/from_string/overload3.html -/doc/html/boost_asio/reference/ip__address/from_string/overload4.html -/doc/html/boost_asio/reference/ip__address.html -/doc/html/boost_asio/reference/ip__address/is_loopback.html -/doc/html/boost_asio/reference/ip__address/is_multicast.html -/doc/html/boost_asio/reference/ip__address/is_unspecified.html -/doc/html/boost_asio/reference/ip__address/is_v4.html -/doc/html/boost_asio/reference/ip__address/is_v6.html -/doc/html/boost_asio/reference/ip__address/make_address/ -/doc/html/boost_asio/reference/ip__address/make_address.html -/doc/html/boost_asio/reference/ip__address/make_address/overload1.html -/doc/html/boost_asio/reference/ip__address/make_address/overload2.html -/doc/html/boost_asio/reference/ip__address/make_address/overload3.html -/doc/html/boost_asio/reference/ip__address/make_address/overload4.html -/doc/html/boost_asio/reference/ip__address/make_address/overload5.html -/doc/html/boost_asio/reference/ip__address/make_address/overload6.html -/doc/html/boost_asio/reference/ip__address/operator_eq_/ -/doc/html/boost_asio/reference/ip__address/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__address/operator_eq_.html -/doc/html/boost_asio/reference/ip__address/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__address/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__address/operator_eq_/overload3.html -/doc/html/boost_asio/reference/ip__address/operator_gt__eq_.html -/doc/html/boost_asio/reference/ip__address/operator_gt_.html -/doc/html/boost_asio/reference/ip__address/operator_lt__eq_.html -/doc/html/boost_asio/reference/ip__address/operator_lt_.html -/doc/html/boost_asio/reference/ip__address/operator_lt__lt_.html -/doc/html/boost_asio/reference/ip__address/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__address/to_string/ -/doc/html/boost_asio/reference/ip__address/to_string.html -/doc/html/boost_asio/reference/ip__address/to_string/overload1.html -/doc/html/boost_asio/reference/ip__address/to_string/overload2.html -/doc/html/boost_asio/reference/ip__address/to_v4.html -/doc/html/boost_asio/reference/ip__address/to_v6.html -/doc/html/boost_asio/reference/ip__address_v4/ -/doc/html/boost_asio/reference/ip__address_v4/address_v4/ -/doc/html/boost_asio/reference/ip__address_v4/address_v4.html -/doc/html/boost_asio/reference/ip__address_v4/address_v4/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/address_v4/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/address_v4/overload3.html -/doc/html/boost_asio/reference/ip__address_v4/address_v4/overload4.html -/doc/html/boost_asio/reference/ip__address_v4/any.html -/doc/html/boost_asio/reference/ip__address_v4/broadcast/ -/doc/html/boost_asio/reference/ip__address_v4/broadcast.html -/doc/html/boost_asio/reference/ip__address_v4/broadcast/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/broadcast/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/bytes_type.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/ -/doc/html/boost_asio/reference/ip__address_v4/from_string.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/overload3.html -/doc/html/boost_asio/reference/ip__address_v4/from_string/overload4.html -/doc/html/boost_asio/reference/ip__address_v4.html -/doc/html/boost_asio/reference/ip__address_v4/is_class_a.html -/doc/html/boost_asio/reference/ip__address_v4/is_class_b.html -/doc/html/boost_asio/reference/ip__address_v4/is_class_c.html -/doc/html/boost_asio/reference/ip__address_v4/is_loopback.html -/doc/html/boost_asio/reference/ip__address_v4/is_multicast.html -/doc/html/boost_asio/reference/ip__address_v4/is_unspecified.html -/doc/html/boost_asio/reference/ip__address_v4_iterator.html -/doc/html/boost_asio/reference/ip__address_v4/loopback.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/ -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload3.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload4.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload5.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload6.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload7.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload8.html -/doc/html/boost_asio/reference/ip__address_v4/make_address_v4/overload9.html -/doc/html/boost_asio/reference/ip__address_v4/make_network_v4/ -/doc/html/boost_asio/reference/ip__address_v4/make_network_v4.html -/doc/html/boost_asio/reference/ip__address_v4/make_network_v4/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/make_network_v4/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/netmask.html -/doc/html/boost_asio/reference/ip__address_v4/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_eq_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_gt__eq_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_gt_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__eq_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__lt_/ -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__lt_.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__lt_/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/operator_lt__lt_/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__address_v4_range.html -/doc/html/boost_asio/reference/ip__address_v4/to_bytes.html -/doc/html/boost_asio/reference/ip__address_v4/to_string/ -/doc/html/boost_asio/reference/ip__address_v4/to_string.html -/doc/html/boost_asio/reference/ip__address_v4/to_string/overload1.html -/doc/html/boost_asio/reference/ip__address_v4/to_string/overload2.html -/doc/html/boost_asio/reference/ip__address_v4/to_uint.html -/doc/html/boost_asio/reference/ip__address_v4/to_ulong.html -/doc/html/boost_asio/reference/ip__address_v4/uint_type.html -/doc/html/boost_asio/reference/ip__address_v6/ -/doc/html/boost_asio/reference/ip__address_v6/address_v6/ -/doc/html/boost_asio/reference/ip__address_v6/address_v6.html -/doc/html/boost_asio/reference/ip__address_v6/address_v6/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/address_v6/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/address_v6/overload3.html -/doc/html/boost_asio/reference/ip__address_v6/any.html -/doc/html/boost_asio/reference/ip__address_v6/bytes_type.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/ -/doc/html/boost_asio/reference/ip__address_v6/from_string.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/overload3.html -/doc/html/boost_asio/reference/ip__address_v6/from_string/overload4.html -/doc/html/boost_asio/reference/ip__address_v6.html -/doc/html/boost_asio/reference/ip__address_v6/is_link_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_loopback.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_global.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_link_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_node_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_org_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_multicast_site_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_site_local.html -/doc/html/boost_asio/reference/ip__address_v6/is_unspecified.html -/doc/html/boost_asio/reference/ip__address_v6/is_v4_compatible.html -/doc/html/boost_asio/reference/ip__address_v6/is_v4_mapped.html -/doc/html/boost_asio/reference/ip__address_v6_iterator.html -/doc/html/boost_asio/reference/ip__address_v6/loopback.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/ -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload3.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload4.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload5.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload6.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload7.html -/doc/html/boost_asio/reference/ip__address_v6/make_address_v6/overload8.html -/doc/html/boost_asio/reference/ip__address_v6/make_network_v6.html -/doc/html/boost_asio/reference/ip__address_v6/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_eq_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_gt__eq_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_gt_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__eq_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__lt_/ -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__lt_.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__lt_/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/operator_lt__lt_/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__address_v6_range.html -/doc/html/boost_asio/reference/ip__address_v6/scope_id/ -/doc/html/boost_asio/reference/ip__address_v6/scope_id.html -/doc/html/boost_asio/reference/ip__address_v6/scope_id/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/scope_id/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/to_bytes.html -/doc/html/boost_asio/reference/ip__address_v6/to_string/ -/doc/html/boost_asio/reference/ip__address_v6/to_string.html -/doc/html/boost_asio/reference/ip__address_v6/to_string/overload1.html -/doc/html/boost_asio/reference/ip__address_v6/to_string/overload2.html -/doc/html/boost_asio/reference/ip__address_v6/to_v4.html -/doc/html/boost_asio/reference/ip__address_v6/v4_compatible.html -/doc/html/boost_asio/reference/ip__address_v6/v4_mapped.html -/doc/html/boost_asio/reference/ip__bad_address_cast/ -/doc/html/boost_asio/reference/ip__bad_address_cast/_bad_address_cast.html -/doc/html/boost_asio/reference/ip__bad_address_cast/bad_address_cast.html -/doc/html/boost_asio/reference/ip__bad_address_cast.html -/doc/html/boost_asio/reference/ip__bad_address_cast/what.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/basic_address_iterator/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/difference_type.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/iterator_category.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_arrow_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_minus__minus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/operator__star_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/pointer.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/reference.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v4__gt_/value_type.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/basic_address_iterator/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/difference_type.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/iterator_category.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_arrow_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_minus__minus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/ -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/operator__star_.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/pointer.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/reference.html -/doc/html/boost_asio/reference/ip__basic_address_iterator_lt__address_v6__gt_/value_type.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/ -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/ -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/basic_address_range/overload3.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/begin.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/empty.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/end.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/find.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/iterator.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v4__gt_/size.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/ -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/ -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload1.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload2.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/basic_address_range/overload3.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/begin.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/empty.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/end.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/find.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/iterator.html -/doc/html/boost_asio/reference/ip__basic_address_range_lt__address_v6__gt_/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/ -/doc/html/boost_asio/reference/ip__basic_endpoint/address/ -/doc/html/boost_asio/reference/ip__basic_endpoint/address.html -/doc/html/boost_asio/reference/ip__basic_endpoint/address/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/address/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/ -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload3.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload4.html -/doc/html/boost_asio/reference/ip__basic_endpoint/basic_endpoint/overload5.html -/doc/html/boost_asio/reference/ip__basic_endpoint/capacity.html -/doc/html/boost_asio/reference/ip__basic_endpoint/data/ -/doc/html/boost_asio/reference/ip__basic_endpoint/data.html -/doc/html/boost_asio/reference/ip__basic_endpoint/data/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/data/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/data_type.html -/doc/html/boost_asio/reference/ip__basic_endpoint.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq_/ -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_gt__eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_gt_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_lt__eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_lt_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_lt__lt_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_endpoint/port/ -/doc/html/boost_asio/reference/ip__basic_endpoint/port.html -/doc/html/boost_asio/reference/ip__basic_endpoint/port/overload1.html -/doc/html/boost_asio/reference/ip__basic_endpoint/port/overload2.html -/doc/html/boost_asio/reference/ip__basic_endpoint/protocol.html -/doc/html/boost_asio/reference/ip__basic_endpoint/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_endpoint/resize.html -/doc/html/boost_asio/reference/ip__basic_endpoint/size.html -/doc/html/boost_asio/reference/ip__basic_resolver/ -/doc/html/boost_asio/reference/ip__basic_resolver/address_configured.html -/doc/html/boost_asio/reference/ip__basic_resolver/all_matching.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/ -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload4.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload5.html -/doc/html/boost_asio/reference/ip__basic_resolver/async_resolve/overload6.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/ -/doc/html/boost_asio/reference/ip__basic_resolver/_basic_resolver.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver/basic_resolver/overload4.html -/doc/html/boost_asio/reference/ip__basic_resolver/cancel.html -/doc/html/boost_asio/reference/ip__basic_resolver/canonical_name.html -/doc/html/boost_asio/reference/ip__basic_resolver/endpoint_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/ -/doc/html/boost_asio/reference/ip__basic_resolver_entry/basic_resolver_entry/ -/doc/html/boost_asio/reference/ip__basic_resolver_entry/basic_resolver_entry.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/basic_resolver_entry/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/basic_resolver_entry/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/endpoint.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/endpoint_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/host_name/ -/doc/html/boost_asio/reference/ip__basic_resolver_entry/host_name.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/host_name/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/host_name/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/operator_endpoint_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/service_name/ -/doc/html/boost_asio/reference/ip__basic_resolver_entry/service_name.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/service_name/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_entry/service_name/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/executor_type.html -/doc/html/boost_asio/reference/ip__basic_resolver/flags.html -/doc/html/boost_asio/reference/ip__basic_resolver/get_executor.html -/doc/html/boost_asio/reference/ip__basic_resolver.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/ -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/ -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/basic_resolver_iterator/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/dereference.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/difference_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/equal.html -/doc/html/boost_asio/reference/ip__basic_resolver/iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/increment.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/index_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/iterator_category.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_arrow_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/ -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_plus__plus_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/operator__star_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/pointer.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/reference.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/values_.html -/doc/html/boost_asio/reference/ip__basic_resolver_iterator/value_type.html -/doc/html/boost_asio/reference/ip__basic_resolver/numeric_host.html -/doc/html/boost_asio/reference/ip__basic_resolver/numeric_service.html -/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/passive.html -/doc/html/boost_asio/reference/ip__basic_resolver/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/ -/doc/html/boost_asio/reference/ip__basic_resolver_query/address_configured.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/all_matching.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/ -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/basic_resolver_query/overload4.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/canonical_name.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/flags.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/hints.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/host_name.html -/doc/html/boost_asio/reference/ip__basic_resolver/query.html -/doc/html/boost_asio/reference/ip__basic_resolver_query.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/numeric_host.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/numeric_service.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/passive.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/service_name.html -/doc/html/boost_asio/reference/ip__basic_resolver_query/v4_mapped.html -/doc/html/boost_asio/reference/ip__basic_resolver__rebind_executor/ -/doc/html/boost_asio/reference/ip__basic_resolver__rebind_executor.html -/doc/html/boost_asio/reference/ip__basic_resolver__rebind_executor/other.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/ -/doc/html/boost_asio/reference/ip__basic_resolver/resolve.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload10.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload11.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload12.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload4.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload5.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload6.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload7.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload8.html -/doc/html/boost_asio/reference/ip__basic_resolver/resolve/overload9.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/basic_resolver_results/overload3.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/begin.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/cbegin.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/cend.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/const_iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/const_reference.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/dereference.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/difference_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/empty.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/end.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/endpoint_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/equal.html -/doc/html/boost_asio/reference/ip__basic_resolver_results.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/increment.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/index_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/iterator_category.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/iterator.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/max_size.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_arrow_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq__eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq__eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq__eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_not__eq_/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_not__eq_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_not__eq_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_plus__plus_/ -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_plus__plus_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_plus__plus_/overload1.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator_plus__plus_/overload2.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/operator__star_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/pointer.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/protocol_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/reference.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/size.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/size_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/swap.html -/doc/html/boost_asio/reference/ip__basic_resolver/results_type.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/values_.html -/doc/html/boost_asio/reference/ip__basic_resolver_results/value_type.html -/doc/html/boost_asio/reference/ip__basic_resolver/v4_mapped.html -/doc/html/boost_asio/reference/ip__host_name/ -/doc/html/boost_asio/reference/ip__host_name.html -/doc/html/boost_asio/reference/ip__host_name/overload1.html -/doc/html/boost_asio/reference/ip__host_name/overload2.html -/doc/html/boost_asio/reference/ip__icmp/ -/doc/html/boost_asio/reference/ip__icmp/endpoint.html -/doc/html/boost_asio/reference/ip__icmp/family.html -/doc/html/boost_asio/reference/ip__icmp.html -/doc/html/boost_asio/reference/ip__icmp/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__icmp/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__icmp/protocol.html -/doc/html/boost_asio/reference/ip__icmp/resolver.html -/doc/html/boost_asio/reference/ip__icmp/socket.html -/doc/html/boost_asio/reference/ip__icmp/type.html -/doc/html/boost_asio/reference/ip__icmp/v4.html -/doc/html/boost_asio/reference/ip__icmp/v6.html -/doc/html/boost_asio/reference/ip__multicast__enable_loopback.html -/doc/html/boost_asio/reference/ip__multicast__hops.html -/doc/html/boost_asio/reference/ip__multicast__join_group.html -/doc/html/boost_asio/reference/ip__multicast__leave_group.html -/doc/html/boost_asio/reference/ip__multicast__outbound_interface.html -/doc/html/boost_asio/reference/ip__network_v4/ -/doc/html/boost_asio/reference/ip__network_v4/address.html -/doc/html/boost_asio/reference/ip__network_v4/broadcast.html -/doc/html/boost_asio/reference/ip__network_v4/canonical.html -/doc/html/boost_asio/reference/ip__network_v4/hosts.html -/doc/html/boost_asio/reference/ip__network_v4.html -/doc/html/boost_asio/reference/ip__network_v4/is_host.html -/doc/html/boost_asio/reference/ip__network_v4/is_subnet_of.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/ -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload1.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload2.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload3.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload4.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload5.html -/doc/html/boost_asio/reference/ip__network_v4/make_network_v4/overload6.html -/doc/html/boost_asio/reference/ip__network_v4/netmask.html -/doc/html/boost_asio/reference/ip__network_v4/network.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/ -/doc/html/boost_asio/reference/ip__network_v4/network_v4.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/overload1.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/overload2.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/overload3.html -/doc/html/boost_asio/reference/ip__network_v4/network_v4/overload4.html -/doc/html/boost_asio/reference/ip__network_v4/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__network_v4/operator_eq_.html -/doc/html/boost_asio/reference/ip__network_v4/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__network_v4/prefix_length.html -/doc/html/boost_asio/reference/ip__network_v4/to_string/ -/doc/html/boost_asio/reference/ip__network_v4/to_string.html -/doc/html/boost_asio/reference/ip__network_v4/to_string/overload1.html -/doc/html/boost_asio/reference/ip__network_v4/to_string/overload2.html -/doc/html/boost_asio/reference/ip__network_v6/ -/doc/html/boost_asio/reference/ip__network_v6/address.html -/doc/html/boost_asio/reference/ip__network_v6/canonical.html -/doc/html/boost_asio/reference/ip__network_v6/hosts.html -/doc/html/boost_asio/reference/ip__network_v6.html -/doc/html/boost_asio/reference/ip__network_v6/is_host.html -/doc/html/boost_asio/reference/ip__network_v6/is_subnet_of.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/ -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload1.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload2.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload3.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload4.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload5.html -/doc/html/boost_asio/reference/ip__network_v6/make_network_v6/overload6.html -/doc/html/boost_asio/reference/ip__network_v6/network.html -/doc/html/boost_asio/reference/ip__network_v6/network_v6/ -/doc/html/boost_asio/reference/ip__network_v6/network_v6.html -/doc/html/boost_asio/reference/ip__network_v6/network_v6/overload1.html -/doc/html/boost_asio/reference/ip__network_v6/network_v6/overload2.html -/doc/html/boost_asio/reference/ip__network_v6/network_v6/overload3.html -/doc/html/boost_asio/reference/ip__network_v6/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__network_v6/operator_eq_.html -/doc/html/boost_asio/reference/ip__network_v6/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__network_v6/prefix_length.html -/doc/html/boost_asio/reference/ip__network_v6/to_string/ -/doc/html/boost_asio/reference/ip__network_v6/to_string.html -/doc/html/boost_asio/reference/ip__network_v6/to_string/overload1.html -/doc/html/boost_asio/reference/ip__network_v6/to_string/overload2.html -/doc/html/boost_asio/reference/ip__port_type.html -/doc/html/boost_asio/reference/ip__resolver_base/ -/doc/html/boost_asio/reference/ip__resolver_base/address_configured.html -/doc/html/boost_asio/reference/ip__resolver_base/all_matching.html -/doc/html/boost_asio/reference/ip__resolver_base/canonical_name.html -/doc/html/boost_asio/reference/ip__resolver_base/flags.html -/doc/html/boost_asio/reference/ip__resolver_base.html -/doc/html/boost_asio/reference/ip__resolver_base/numeric_host.html -/doc/html/boost_asio/reference/ip__resolver_base/numeric_service.html -/doc/html/boost_asio/reference/ip__resolver_base/passive.html -/doc/html/boost_asio/reference/ip__resolver_base/_resolver_base.html -/doc/html/boost_asio/reference/ip__resolver_base/v4_mapped.html -/doc/html/boost_asio/reference/ip__resolver_query_base/ -/doc/html/boost_asio/reference/ip__resolver_query_base/address_configured.html -/doc/html/boost_asio/reference/ip__resolver_query_base/all_matching.html -/doc/html/boost_asio/reference/ip__resolver_query_base/canonical_name.html -/doc/html/boost_asio/reference/ip__resolver_query_base/flags.html -/doc/html/boost_asio/reference/ip__resolver_query_base.html -/doc/html/boost_asio/reference/ip__resolver_query_base/numeric_host.html -/doc/html/boost_asio/reference/ip__resolver_query_base/numeric_service.html -/doc/html/boost_asio/reference/ip__resolver_query_base/passive.html -/doc/html/boost_asio/reference/ip__resolver_query_base/_resolver_query_base.html -/doc/html/boost_asio/reference/ip__resolver_query_base/v4_mapped.html -/doc/html/boost_asio/reference/ip__scope_id_type.html -/doc/html/boost_asio/reference/ip__tcp/ -/doc/html/boost_asio/reference/ip__tcp/acceptor.html -/doc/html/boost_asio/reference/ip__tcp/endpoint.html -/doc/html/boost_asio/reference/ip__tcp/family.html -/doc/html/boost_asio/reference/ip__tcp.html -/doc/html/boost_asio/reference/ip__tcp/iostream.html -/doc/html/boost_asio/reference/ip__tcp/no_delay.html -/doc/html/boost_asio/reference/ip__tcp/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__tcp/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__tcp/protocol.html -/doc/html/boost_asio/reference/ip__tcp/resolver.html -/doc/html/boost_asio/reference/ip__tcp/socket.html -/doc/html/boost_asio/reference/ip__tcp/type.html -/doc/html/boost_asio/reference/ip__tcp/v4.html -/doc/html/boost_asio/reference/ip__tcp/v6.html -/doc/html/boost_asio/reference/ip__udp/ -/doc/html/boost_asio/reference/ip__udp/endpoint.html -/doc/html/boost_asio/reference/ip__udp/family.html -/doc/html/boost_asio/reference/ip__udp.html -/doc/html/boost_asio/reference/ip__udp/operator_eq__eq_.html -/doc/html/boost_asio/reference/ip__udp/operator_not__eq_.html -/doc/html/boost_asio/reference/ip__udp/protocol.html -/doc/html/boost_asio/reference/ip__udp/resolver.html -/doc/html/boost_asio/reference/ip__udp/socket.html -/doc/html/boost_asio/reference/ip__udp/type.html -/doc/html/boost_asio/reference/ip__udp/v4.html -/doc/html/boost_asio/reference/ip__udp/v6.html -/doc/html/boost_asio/reference/ip__unicast__hops.html -/doc/html/boost_asio/reference/ip__v4_mapped_t.html -/doc/html/boost_asio/reference/ip__v6_only.html -/doc/html/boost_asio/reference/is_applicable_property.html -/doc/html/boost_asio/reference/is_const_buffer_sequence.html -/doc/html/boost_asio/reference/is_dynamic_buffer.html -/doc/html/boost_asio/reference/is_dynamic_buffer_v1.html -/doc/html/boost_asio/reference/is_dynamic_buffer_v2.html -/doc/html/boost_asio/reference/is_endpoint_sequence/ -/doc/html/boost_asio/reference/is_endpoint_sequence.html -/doc/html/boost_asio/reference/is_endpoint_sequence/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__addrinfo_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__addrinfo_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__addrinfo_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__basic_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__misc_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__misc_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__misc_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__netdb_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__netdb_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__netdb_errors__gt_/value.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__ssl_errors__gt_/ -/doc/html/boost_asio/reference/is_error_code_enum_lt__ssl_errors__gt_.html -/doc/html/boost_asio/reference/is_error_code_enum_lt__ssl_errors__gt_/value.html -/doc/html/boost_asio/reference/is_executor.html -/doc/html/boost_asio/reference/is_match_condition/ -/doc/html/boost_asio/reference/is_match_condition.html -/doc/html/boost_asio/reference/is_match_condition/value.html -/doc/html/boost_asio/reference/is_mutable_buffer_sequence.html -/doc/html/boost_asio/reference/is_nothrow_prefer.html -/doc/html/boost_asio/reference/is_nothrow_query.html -/doc/html/boost_asio/reference/is_nothrow_require_concept.html -/doc/html/boost_asio/reference/is_nothrow_require.html -/doc/html/boost_asio/reference/is_read_buffered/ -/doc/html/boost_asio/reference/is_read_buffered.html -/doc/html/boost_asio/reference/is_read_buffered/value.html -/doc/html/boost_asio/reference/is_write_buffered/ -/doc/html/boost_asio/reference/is_write_buffered.html -/doc/html/boost_asio/reference/is_write_buffered/value.html -/doc/html/boost_asio/reference/IteratorConnectHandler.html -/doc/html/boost_asio/reference/LegacyCompletionHandler.html -/doc/html/boost_asio/reference/local__basic_endpoint/ -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/ -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint.html -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/overload1.html -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/overload2.html -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/overload3.html -/doc/html/boost_asio/reference/local__basic_endpoint/basic_endpoint/overload4.html -/doc/html/boost_asio/reference/local__basic_endpoint/capacity.html -/doc/html/boost_asio/reference/local__basic_endpoint/data/ -/doc/html/boost_asio/reference/local__basic_endpoint/data.html -/doc/html/boost_asio/reference/local__basic_endpoint/data/overload1.html -/doc/html/boost_asio/reference/local__basic_endpoint/data/overload2.html -/doc/html/boost_asio/reference/local__basic_endpoint/data_type.html -/doc/html/boost_asio/reference/local__basic_endpoint.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_eq__eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_gt__eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_gt_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_lt__eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_lt_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_lt__lt_.html -/doc/html/boost_asio/reference/local__basic_endpoint/operator_not__eq_.html -/doc/html/boost_asio/reference/local__basic_endpoint/path/ -/doc/html/boost_asio/reference/local__basic_endpoint/path.html -/doc/html/boost_asio/reference/local__basic_endpoint/path/overload1.html -/doc/html/boost_asio/reference/local__basic_endpoint/path/overload2.html -/doc/html/boost_asio/reference/local__basic_endpoint/path/overload3.html -/doc/html/boost_asio/reference/local__basic_endpoint/protocol.html -/doc/html/boost_asio/reference/local__basic_endpoint/protocol_type.html -/doc/html/boost_asio/reference/local__basic_endpoint/resize.html -/doc/html/boost_asio/reference/local__basic_endpoint/size.html -/doc/html/boost_asio/reference/local__connect_pair/ -/doc/html/boost_asio/reference/local__connect_pair.html -/doc/html/boost_asio/reference/local__connect_pair/overload1.html -/doc/html/boost_asio/reference/local__connect_pair/overload2.html -/doc/html/boost_asio/reference/local__datagram_protocol/ -/doc/html/boost_asio/reference/local__datagram_protocol/endpoint.html -/doc/html/boost_asio/reference/local__datagram_protocol/family.html -/doc/html/boost_asio/reference/local__datagram_protocol.html -/doc/html/boost_asio/reference/local__datagram_protocol/protocol.html -/doc/html/boost_asio/reference/local__datagram_protocol/socket.html -/doc/html/boost_asio/reference/local__datagram_protocol/type.html -/doc/html/boost_asio/reference/local__stream_protocol/ -/doc/html/boost_asio/reference/local__stream_protocol/acceptor.html -/doc/html/boost_asio/reference/local__stream_protocol/endpoint.html -/doc/html/boost_asio/reference/local__stream_protocol/family.html -/doc/html/boost_asio/reference/local__stream_protocol.html -/doc/html/boost_asio/reference/local__stream_protocol/iostream.html -/doc/html/boost_asio/reference/local__stream_protocol/protocol.html -/doc/html/boost_asio/reference/local__stream_protocol/socket.html -/doc/html/boost_asio/reference/local__stream_protocol/type.html -/doc/html/boost_asio/reference/make_strand/ -/doc/html/boost_asio/reference/make_strand.html -/doc/html/boost_asio/reference/make_strand/overload1.html -/doc/html/boost_asio/reference/make_strand/overload2.html -/doc/html/boost_asio/reference/make_work_guard/ -/doc/html/boost_asio/reference/make_work_guard.html -/doc/html/boost_asio/reference/make_work_guard/overload1.html -/doc/html/boost_asio/reference/make_work_guard/overload2.html -/doc/html/boost_asio/reference/make_work_guard/overload3.html -/doc/html/boost_asio/reference/make_work_guard/overload4.html -/doc/html/boost_asio/reference/make_work_guard/overload5.html -/doc/html/boost_asio/reference/MoveAcceptHandler.html -/doc/html/boost_asio/reference/multiple_exceptions/ -/doc/html/boost_asio/reference/multiple_exceptions/first_exception.html -/doc/html/boost_asio/reference/multiple_exceptions.html -/doc/html/boost_asio/reference/multiple_exceptions/multiple_exceptions.html -/doc/html/boost_asio/reference/multiple_exceptions/what.html -/doc/html/boost_asio/reference/mutable_buffer/ -/doc/html/boost_asio/reference/mutable_buffer/data.html -/doc/html/boost_asio/reference/mutable_buffer.html -/doc/html/boost_asio/reference/mutable_buffer/mutable_buffer/ -/doc/html/boost_asio/reference/mutable_buffer/mutable_buffer.html -/doc/html/boost_asio/reference/mutable_buffer/mutable_buffer/overload1.html -/doc/html/boost_asio/reference/mutable_buffer/mutable_buffer/overload2.html -/doc/html/boost_asio/reference/mutable_buffer/operator_plus_/ -/doc/html/boost_asio/reference/mutable_buffer/operator_plus__eq_.html -/doc/html/boost_asio/reference/mutable_buffer/operator_plus_.html -/doc/html/boost_asio/reference/mutable_buffer/operator_plus_/overload1.html -/doc/html/boost_asio/reference/mutable_buffer/operator_plus_/overload2.html -/doc/html/boost_asio/reference/mutable_buffers_1/ -/doc/html/boost_asio/reference/mutable_buffers_1/begin.html -/doc/html/boost_asio/reference/mutable_buffers_1/const_iterator.html -/doc/html/boost_asio/reference/mutable_buffers_1/data.html -/doc/html/boost_asio/reference/mutable_buffers_1/end.html -/doc/html/boost_asio/reference/mutable_buffers_1.html -/doc/html/boost_asio/reference/mutable_buffers_1/mutable_buffers_1/ -/doc/html/boost_asio/reference/mutable_buffers_1/mutable_buffers_1.html -/doc/html/boost_asio/reference/mutable_buffers_1/mutable_buffers_1/overload1.html -/doc/html/boost_asio/reference/mutable_buffers_1/mutable_buffers_1/overload2.html -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus_/ -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus__eq_.html -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus_.html -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus_/overload1.html -/doc/html/boost_asio/reference/mutable_buffers_1/operator_plus_/overload2.html -/doc/html/boost_asio/reference/mutable_buffers_1/size.html -/doc/html/boost_asio/reference/mutable_buffers_1/value_type.html -/doc/html/boost_asio/reference/MutableBufferSequence.html -/doc/html/boost_asio/reference/mutable_buffer/size.html -/doc/html/boost_asio/reference/null_buffers/ -/doc/html/boost_asio/reference/null_buffers/begin.html -/doc/html/boost_asio/reference/null_buffers/const_iterator.html -/doc/html/boost_asio/reference/null_buffers/end.html -/doc/html/boost_asio/reference/null_buffers.html -/doc/html/boost_asio/reference/null_buffers/value_type.html -/doc/html/boost_asio/reference/OperationState.html -/doc/html/boost_asio/reference/placeholders__bytes_transferred.html -/doc/html/boost_asio/reference/placeholders__endpoint.html -/doc/html/boost_asio/reference/placeholders__error.html -/doc/html/boost_asio/reference/placeholders__iterator.html -/doc/html/boost_asio/reference/placeholders__results.html -/doc/html/boost_asio/reference/placeholders__signal_number.html -/doc/html/boost_asio/reference/posix__basic_descriptor/ -/doc/html/boost_asio/reference/posix__basic_descriptor/assign/ -/doc/html/boost_asio/reference/posix__basic_descriptor/assign.html -/doc/html/boost_asio/reference/posix__basic_descriptor/assign/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/assign/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/async_wait.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/ -/doc/html/boost_asio/reference/posix__basic_descriptor/_basic_descriptor.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload3.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload4.html -/doc/html/boost_asio/reference/posix__basic_descriptor/basic_descriptor/overload5.html -/doc/html/boost_asio/reference/posix__basic_descriptor/bytes_readable.html -/doc/html/boost_asio/reference/posix__basic_descriptor/cancel/ -/doc/html/boost_asio/reference/posix__basic_descriptor/cancel.html -/doc/html/boost_asio/reference/posix__basic_descriptor/cancel/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/cancel/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/close/ -/doc/html/boost_asio/reference/posix__basic_descriptor/close.html -/doc/html/boost_asio/reference/posix__basic_descriptor/close/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/close/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/executor_type.html -/doc/html/boost_asio/reference/posix__basic_descriptor/get_executor.html -/doc/html/boost_asio/reference/posix__basic_descriptor.html -/doc/html/boost_asio/reference/posix__basic_descriptor/io_control/ -/doc/html/boost_asio/reference/posix__basic_descriptor/io_control.html -/doc/html/boost_asio/reference/posix__basic_descriptor/io_control/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/io_control/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/is_open.html -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer/ -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer.html -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/lowest_layer_type.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_handle.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_handle_type.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking/ -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/ -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking.html -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/non_blocking/overload3.html -/doc/html/boost_asio/reference/posix__basic_descriptor/operator_eq_.html -/doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor/ -/doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor.html -/doc/html/boost_asio/reference/posix__basic_descriptor__rebind_executor/other.html -/doc/html/boost_asio/reference/posix__basic_descriptor/release.html -/doc/html/boost_asio/reference/posix__basic_descriptor/wait/ -/doc/html/boost_asio/reference/posix__basic_descriptor/wait.html -/doc/html/boost_asio/reference/posix__basic_descriptor/wait/overload1.html -/doc/html/boost_asio/reference/posix__basic_descriptor/wait/overload2.html -/doc/html/boost_asio/reference/posix__basic_descriptor/wait_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/assign/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/assign.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/assign/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/assign/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/async_read_some.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/async_wait.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/async_write_some.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload3.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload4.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/basic_stream_descriptor/overload5.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/bytes_readable.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/cancel/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/close/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/close.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/close/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/close/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/executor_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/get_executor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/io_control/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/is_open.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/lowest_layer_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_handle.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_handle_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/native_non_blocking/overload3.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/non_blocking/overload3.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/operator_eq_.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/read_some/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor__rebind_executor/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor__rebind_executor.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor__rebind_executor/other.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/release.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait/overload2.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/wait_type.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/write_some/ -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/write_some.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/write_some/overload1.html -/doc/html/boost_asio/reference/posix__basic_stream_descriptor/write_some/overload2.html -/doc/html/boost_asio/reference/posix__descriptor_base/ -/doc/html/boost_asio/reference/posix__descriptor_base/bytes_readable.html -/doc/html/boost_asio/reference/posix__descriptor_base/_descriptor_base.html -/doc/html/boost_asio/reference/posix__descriptor_base.html -/doc/html/boost_asio/reference/posix__descriptor_base/wait_type.html -/doc/html/boost_asio/reference/posix__descriptor.html -/doc/html/boost_asio/reference/posix__stream_descriptor.html -/doc/html/boost_asio/reference/post/ -/doc/html/boost_asio/reference/post.html -/doc/html/boost_asio/reference/post/overload1.html -/doc/html/boost_asio/reference/post/overload2.html -/doc/html/boost_asio/reference/post/overload3.html -/doc/html/boost_asio/reference/prefer.html -/doc/html/boost_asio/reference/prefer_result/ -/doc/html/boost_asio/reference/prefer_result.html -/doc/html/boost_asio/reference/prefer_result/type.html -/doc/html/boost_asio/reference/ProtoAllocator.html -/doc/html/boost_asio/reference/Protocol.html -/doc/html/boost_asio/reference/query.html -/doc/html/boost_asio/reference/query_result/ -/doc/html/boost_asio/reference/query_result.html -/doc/html/boost_asio/reference/query_result/type.html -/doc/html/boost_asio/reference/RangeConnectHandler.html -/doc/html/boost_asio/reference/read/ -/doc/html/boost_asio/reference/read_at/ -/doc/html/boost_asio/reference/read_at.html -/doc/html/boost_asio/reference/read_at/overload1.html -/doc/html/boost_asio/reference/read_at/overload2.html -/doc/html/boost_asio/reference/read_at/overload3.html -/doc/html/boost_asio/reference/read_at/overload4.html -/doc/html/boost_asio/reference/read_at/overload5.html -/doc/html/boost_asio/reference/read_at/overload6.html -/doc/html/boost_asio/reference/read_at/overload7.html -/doc/html/boost_asio/reference/read_at/overload8.html -/doc/html/boost_asio/reference/ReadHandler.html -/doc/html/boost_asio/reference/read.html -/doc/html/boost_asio/reference/read/overload10.html -/doc/html/boost_asio/reference/read/overload11.html -/doc/html/boost_asio/reference/read/overload12.html -/doc/html/boost_asio/reference/read/overload13.html -/doc/html/boost_asio/reference/read/overload14.html -/doc/html/boost_asio/reference/read/overload15.html -/doc/html/boost_asio/reference/read/overload16.html -/doc/html/boost_asio/reference/read/overload1.html -/doc/html/boost_asio/reference/read/overload2.html -/doc/html/boost_asio/reference/read/overload3.html -/doc/html/boost_asio/reference/read/overload4.html -/doc/html/boost_asio/reference/read/overload5.html -/doc/html/boost_asio/reference/read/overload6.html -/doc/html/boost_asio/reference/read/overload7.html -/doc/html/boost_asio/reference/read/overload8.html -/doc/html/boost_asio/reference/read/overload9.html -/doc/html/boost_asio/reference/read_until/ -/doc/html/boost_asio/reference/read_until.html -/doc/html/boost_asio/reference/read_until/overload10.html -/doc/html/boost_asio/reference/read_until/overload11.html -/doc/html/boost_asio/reference/read_until/overload12.html -/doc/html/boost_asio/reference/read_until/overload13.html -/doc/html/boost_asio/reference/read_until/overload14.html -/doc/html/boost_asio/reference/read_until/overload15.html -/doc/html/boost_asio/reference/read_until/overload16.html -/doc/html/boost_asio/reference/read_until/overload17.html -/doc/html/boost_asio/reference/read_until/overload18.html -/doc/html/boost_asio/reference/read_until/overload19.html -/doc/html/boost_asio/reference/read_until/overload1.html -/doc/html/boost_asio/reference/read_until/overload20.html -/doc/html/boost_asio/reference/read_until/overload21.html -/doc/html/boost_asio/reference/read_until/overload22.html -/doc/html/boost_asio/reference/read_until/overload23.html -/doc/html/boost_asio/reference/read_until/overload24.html -/doc/html/boost_asio/reference/read_until/overload2.html -/doc/html/boost_asio/reference/read_until/overload3.html -/doc/html/boost_asio/reference/read_until/overload4.html -/doc/html/boost_asio/reference/read_until/overload5.html -/doc/html/boost_asio/reference/read_until/overload6.html -/doc/html/boost_asio/reference/read_until/overload7.html -/doc/html/boost_asio/reference/read_until/overload8.html -/doc/html/boost_asio/reference/read_until/overload9.html -/doc/html/boost_asio/reference/read_write_operations.html -/doc/html/boost_asio/reference/Receiver.html -/doc/html/boost_asio/reference/redirect_error.html -/doc/html/boost_asio/reference/redirect_error_t/ -/doc/html/boost_asio/reference/redirect_error_t/ec_.html -/doc/html/boost_asio/reference/redirect_error_t.html -/doc/html/boost_asio/reference/redirect_error_t/redirect_error_t.html -/doc/html/boost_asio/reference/redirect_error_t/token_.html -/doc/html/boost_asio/reference/require_concept.html -/doc/html/boost_asio/reference/require_concept_result/ -/doc/html/boost_asio/reference/require_concept_result.html -/doc/html/boost_asio/reference/require_concept_result/type.html -/doc/html/boost_asio/reference/require.html -/doc/html/boost_asio/reference/require_result/ -/doc/html/boost_asio/reference/require_result.html -/doc/html/boost_asio/reference/require_result/type.html -/doc/html/boost_asio/reference/ResolveHandler.html -/doc/html/boost_asio/reference/resolver_errc__try_again.html -/doc/html/boost_asio/reference/Scheduler.html -/doc/html/boost_asio/reference/Sender.html -/doc/html/boost_asio/reference/serial_port_base/ -/doc/html/boost_asio/reference/serial_port_base__baud_rate/ -/doc/html/boost_asio/reference/serial_port_base__baud_rate/baud_rate.html -/doc/html/boost_asio/reference/serial_port_base__baud_rate.html -/doc/html/boost_asio/reference/serial_port_base__baud_rate/load.html -/doc/html/boost_asio/reference/serial_port_base__baud_rate/store.html -/doc/html/boost_asio/reference/serial_port_base__baud_rate/value.html -/doc/html/boost_asio/reference/serial_port_base__character_size/ -/doc/html/boost_asio/reference/serial_port_base__character_size/character_size.html -/doc/html/boost_asio/reference/serial_port_base__character_size.html -/doc/html/boost_asio/reference/serial_port_base__character_size/load.html -/doc/html/boost_asio/reference/serial_port_base__character_size/store.html -/doc/html/boost_asio/reference/serial_port_base__character_size/value.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/ -/doc/html/boost_asio/reference/serial_port_base__flow_control/flow_control.html -/doc/html/boost_asio/reference/serial_port_base__flow_control.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/load.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/store.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/type.html -/doc/html/boost_asio/reference/serial_port_base__flow_control/value.html -/doc/html/boost_asio/reference/serial_port_base.html -/doc/html/boost_asio/reference/serial_port_base__parity/ -/doc/html/boost_asio/reference/serial_port_base__parity.html -/doc/html/boost_asio/reference/serial_port_base__parity/load.html -/doc/html/boost_asio/reference/serial_port_base__parity/parity.html -/doc/html/boost_asio/reference/serial_port_base__parity/store.html -/doc/html/boost_asio/reference/serial_port_base__parity/type.html -/doc/html/boost_asio/reference/serial_port_base__parity/value.html -/doc/html/boost_asio/reference/serial_port_base/_serial_port_base.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/ -/doc/html/boost_asio/reference/serial_port_base__stop_bits.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/load.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/stop_bits.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/store.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/type.html -/doc/html/boost_asio/reference/serial_port_base__stop_bits/value.html -/doc/html/boost_asio/reference/serial_port.html -/doc/html/boost_asio/reference/service_already_exists/ -/doc/html/boost_asio/reference/service_already_exists.html -/doc/html/boost_asio/reference/service_already_exists/service_already_exists.html -/doc/html/boost_asio/reference/Service.html -/doc/html/boost_asio/reference/SettableSerialPortOption.html -/doc/html/boost_asio/reference/SettableSocketOption.html -/doc/html/boost_asio/reference/ShutdownHandler.html -/doc/html/boost_asio/reference/SignalHandler.html -/doc/html/boost_asio/reference/signal_set.html -/doc/html/boost_asio/reference/socket_base/ -/doc/html/boost_asio/reference/socket_base/broadcast.html -/doc/html/boost_asio/reference/socket_base/bytes_readable.html -/doc/html/boost_asio/reference/socket_base/debug.html -/doc/html/boost_asio/reference/socket_base/do_not_route.html -/doc/html/boost_asio/reference/socket_base/enable_connection_aborted.html -/doc/html/boost_asio/reference/socket_base.html -/doc/html/boost_asio/reference/socket_base/keep_alive.html -/doc/html/boost_asio/reference/socket_base/linger.html -/doc/html/boost_asio/reference/socket_base/max_connections.html -/doc/html/boost_asio/reference/socket_base/max_listen_connections.html -/doc/html/boost_asio/reference/socket_base/message_do_not_route.html -/doc/html/boost_asio/reference/socket_base/message_end_of_record.html -/doc/html/boost_asio/reference/socket_base/message_flags.html -/doc/html/boost_asio/reference/socket_base/message_out_of_band.html -/doc/html/boost_asio/reference/socket_base/message_peek.html -/doc/html/boost_asio/reference/socket_base/out_of_band_inline.html -/doc/html/boost_asio/reference/socket_base/receive_buffer_size.html -/doc/html/boost_asio/reference/socket_base/receive_low_watermark.html -/doc/html/boost_asio/reference/socket_base/reuse_address.html -/doc/html/boost_asio/reference/socket_base/send_buffer_size.html -/doc/html/boost_asio/reference/socket_base/send_low_watermark.html -/doc/html/boost_asio/reference/socket_base/shutdown_type.html -/doc/html/boost_asio/reference/socket_base/_socket_base.html -/doc/html/boost_asio/reference/socket_base/wait_type.html -/doc/html/boost_asio/reference/spawn/ -/doc/html/boost_asio/reference/spawn.html -/doc/html/boost_asio/reference/spawn/overload1.html -/doc/html/boost_asio/reference/spawn/overload2.html -/doc/html/boost_asio/reference/spawn/overload3.html -/doc/html/boost_asio/reference/spawn/overload4.html -/doc/html/boost_asio/reference/spawn/overload5.html -/doc/html/boost_asio/reference/spawn/overload6.html -/doc/html/boost_asio/reference/spawn/overload7.html -/doc/html/boost_asio/reference/ssl__context/ -/doc/html/boost_asio/reference/ssl__context/add_certificate_authority/ -/doc/html/boost_asio/reference/ssl__context/add_certificate_authority.html -/doc/html/boost_asio/reference/ssl__context/add_certificate_authority/overload1.html -/doc/html/boost_asio/reference/ssl__context/add_certificate_authority/overload2.html -/doc/html/boost_asio/reference/ssl__context/add_verify_path/ -/doc/html/boost_asio/reference/ssl__context/add_verify_path.html -/doc/html/boost_asio/reference/ssl__context/add_verify_path/overload1.html -/doc/html/boost_asio/reference/ssl__context/add_verify_path/overload2.html -/doc/html/boost_asio/reference/ssl__context_base/ -/doc/html/boost_asio/reference/ssl__context_base/_context_base.html -/doc/html/boost_asio/reference/ssl__context_base/default_workarounds.html -/doc/html/boost_asio/reference/ssl__context_base/file_format.html -/doc/html/boost_asio/reference/ssl__context_base.html -/doc/html/boost_asio/reference/ssl__context_base/method.html -/doc/html/boost_asio/reference/ssl__context_base/no_compression.html -/doc/html/boost_asio/reference/ssl__context_base/no_sslv2.html -/doc/html/boost_asio/reference/ssl__context_base/no_sslv3.html -/doc/html/boost_asio/reference/ssl__context_base/no_tlsv1_1.html -/doc/html/boost_asio/reference/ssl__context_base/no_tlsv1_2.html -/doc/html/boost_asio/reference/ssl__context_base/no_tlsv1_3.html -/doc/html/boost_asio/reference/ssl__context_base/no_tlsv1.html -/doc/html/boost_asio/reference/ssl__context_base/options.html -/doc/html/boost_asio/reference/ssl__context_base/password_purpose.html -/doc/html/boost_asio/reference/ssl__context_base/single_dh_use.html -/doc/html/boost_asio/reference/ssl__context/clear_options/ -/doc/html/boost_asio/reference/ssl__context/clear_options.html -/doc/html/boost_asio/reference/ssl__context/clear_options/overload1.html -/doc/html/boost_asio/reference/ssl__context/clear_options/overload2.html -/doc/html/boost_asio/reference/ssl__context/context/ -/doc/html/boost_asio/reference/ssl__context/_context.html -/doc/html/boost_asio/reference/ssl__context/context.html -/doc/html/boost_asio/reference/ssl__context/context/overload1.html -/doc/html/boost_asio/reference/ssl__context/context/overload2.html -/doc/html/boost_asio/reference/ssl__context/context/overload3.html -/doc/html/boost_asio/reference/ssl__context/default_workarounds.html -/doc/html/boost_asio/reference/ssl__context/file_format.html -/doc/html/boost_asio/reference/ssl__context.html -/doc/html/boost_asio/reference/ssl__context/load_verify_file/ -/doc/html/boost_asio/reference/ssl__context/load_verify_file.html -/doc/html/boost_asio/reference/ssl__context/load_verify_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/load_verify_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/method.html -/doc/html/boost_asio/reference/ssl__context/native_handle.html -/doc/html/boost_asio/reference/ssl__context/native_handle_type.html -/doc/html/boost_asio/reference/ssl__context/no_compression.html -/doc/html/boost_asio/reference/ssl__context/no_sslv2.html -/doc/html/boost_asio/reference/ssl__context/no_sslv3.html -/doc/html/boost_asio/reference/ssl__context/no_tlsv1_1.html -/doc/html/boost_asio/reference/ssl__context/no_tlsv1_2.html -/doc/html/boost_asio/reference/ssl__context/no_tlsv1_3.html -/doc/html/boost_asio/reference/ssl__context/no_tlsv1.html -/doc/html/boost_asio/reference/ssl__context/operator_eq_.html -/doc/html/boost_asio/reference/ssl__context/options.html -/doc/html/boost_asio/reference/ssl__context/password_purpose.html -/doc/html/boost_asio/reference/ssl__context/set_default_verify_paths/ -/doc/html/boost_asio/reference/ssl__context/set_default_verify_paths.html -/doc/html/boost_asio/reference/ssl__context/set_default_verify_paths/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_default_verify_paths/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_options/ -/doc/html/boost_asio/reference/ssl__context/set_options.html -/doc/html/boost_asio/reference/ssl__context/set_options/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_options/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_password_callback/ -/doc/html/boost_asio/reference/ssl__context/set_password_callback.html -/doc/html/boost_asio/reference/ssl__context/set_password_callback/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_password_callback/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_verify_callback/ -/doc/html/boost_asio/reference/ssl__context/set_verify_callback.html -/doc/html/boost_asio/reference/ssl__context/set_verify_callback/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_verify_callback/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_verify_depth/ -/doc/html/boost_asio/reference/ssl__context/set_verify_depth.html -/doc/html/boost_asio/reference/ssl__context/set_verify_depth/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_verify_depth/overload2.html -/doc/html/boost_asio/reference/ssl__context/set_verify_mode/ -/doc/html/boost_asio/reference/ssl__context/set_verify_mode.html -/doc/html/boost_asio/reference/ssl__context/set_verify_mode/overload1.html -/doc/html/boost_asio/reference/ssl__context/set_verify_mode/overload2.html -/doc/html/boost_asio/reference/ssl__context/single_dh_use.html -/doc/html/boost_asio/reference/ssl__context/use_certificate/ -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain/ -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain_file/ -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain_file.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_chain/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_file/ -/doc/html/boost_asio/reference/ssl__context/use_certificate_file.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_certificate_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_certificate.html -/doc/html/boost_asio/reference/ssl__context/use_certificate/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_certificate/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_private_key/ -/doc/html/boost_asio/reference/ssl__context/use_private_key_file/ -/doc/html/boost_asio/reference/ssl__context/use_private_key_file.html -/doc/html/boost_asio/reference/ssl__context/use_private_key_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_private_key_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_private_key.html -/doc/html/boost_asio/reference/ssl__context/use_private_key/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_private_key/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key/ -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key_file/ -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key_file.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_rsa_private_key/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh/ -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh_file/ -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh_file.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh_file/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh_file/overload2.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh/overload1.html -/doc/html/boost_asio/reference/ssl__context/use_tmp_dh/overload2.html -/doc/html/boost_asio/reference/ssl__error__get_stream_category.html -/doc/html/boost_asio/reference/ssl__error__make_error_code.html -/doc/html/boost_asio/reference/ssl__error__stream_category.html -/doc/html/boost_asio/reference/ssl__error__stream_errors.html -/doc/html/boost_asio/reference/ssl__host_name_verification/ -/doc/html/boost_asio/reference/ssl__host_name_verification/host_name_verification.html -/doc/html/boost_asio/reference/ssl__host_name_verification.html -/doc/html/boost_asio/reference/ssl__host_name_verification/operator_lp__rp_.html -/doc/html/boost_asio/reference/ssl__host_name_verification/result_type.html -/doc/html/boost_asio/reference/ssl__rfc2818_verification/ -/doc/html/boost_asio/reference/ssl__rfc2818_verification.html -/doc/html/boost_asio/reference/ssl__rfc2818_verification/operator_lp__rp_.html -/doc/html/boost_asio/reference/ssl__rfc2818_verification/result_type.html -/doc/html/boost_asio/reference/ssl__rfc2818_verification/rfc2818_verification.html -/doc/html/boost_asio/reference/ssl__stream/ -/doc/html/boost_asio/reference/ssl__stream/async_handshake/ -/doc/html/boost_asio/reference/ssl__stream/async_handshake.html -/doc/html/boost_asio/reference/ssl__stream/async_handshake/overload1.html -/doc/html/boost_asio/reference/ssl__stream/async_handshake/overload2.html -/doc/html/boost_asio/reference/ssl__stream/async_read_some.html -/doc/html/boost_asio/reference/ssl__stream/async_shutdown.html -/doc/html/boost_asio/reference/ssl__stream/async_write_some.html -/doc/html/boost_asio/reference/ssl__stream_base/ -/doc/html/boost_asio/reference/ssl__stream_base/handshake_type.html -/doc/html/boost_asio/reference/ssl__stream_base.html -/doc/html/boost_asio/reference/ssl__stream_base/_stream_base.html -/doc/html/boost_asio/reference/ssl__stream/executor_type.html -/doc/html/boost_asio/reference/ssl__stream/get_executor.html -/doc/html/boost_asio/reference/ssl__stream/handshake/ -/doc/html/boost_asio/reference/ssl__stream/handshake.html -/doc/html/boost_asio/reference/ssl__stream/handshake/overload1.html -/doc/html/boost_asio/reference/ssl__stream/handshake/overload2.html -/doc/html/boost_asio/reference/ssl__stream/handshake/overload3.html -/doc/html/boost_asio/reference/ssl__stream/handshake/overload4.html -/doc/html/boost_asio/reference/ssl__stream/handshake_type.html -/doc/html/boost_asio/reference/ssl__stream.html -/doc/html/boost_asio/reference/ssl__stream__impl_struct/ -/doc/html/boost_asio/reference/ssl__stream__impl_struct.html -/doc/html/boost_asio/reference/ssl__stream__impl_struct/ssl.html -/doc/html/boost_asio/reference/ssl__stream/lowest_layer/ -/doc/html/boost_asio/reference/ssl__stream/lowest_layer.html -/doc/html/boost_asio/reference/ssl__stream/lowest_layer/overload1.html -/doc/html/boost_asio/reference/ssl__stream/lowest_layer/overload2.html -/doc/html/boost_asio/reference/ssl__stream/lowest_layer_type.html -/doc/html/boost_asio/reference/ssl__stream/native_handle.html -/doc/html/boost_asio/reference/ssl__stream/native_handle_type.html -/doc/html/boost_asio/reference/ssl__stream/next_layer/ -/doc/html/boost_asio/reference/ssl__stream/next_layer.html -/doc/html/boost_asio/reference/ssl__stream/next_layer/overload1.html -/doc/html/boost_asio/reference/ssl__stream/next_layer/overload2.html -/doc/html/boost_asio/reference/ssl__stream/next_layer_type.html -/doc/html/boost_asio/reference/ssl__stream/operator_eq_.html -/doc/html/boost_asio/reference/ssl__stream/read_some/ -/doc/html/boost_asio/reference/ssl__stream/read_some.html -/doc/html/boost_asio/reference/ssl__stream/read_some/overload1.html -/doc/html/boost_asio/reference/ssl__stream/read_some/overload2.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_callback/ -/doc/html/boost_asio/reference/ssl__stream/set_verify_callback.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_callback/overload1.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_callback/overload2.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_depth/ -/doc/html/boost_asio/reference/ssl__stream/set_verify_depth.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_depth/overload1.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_depth/overload2.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_mode/ -/doc/html/boost_asio/reference/ssl__stream/set_verify_mode.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_mode/overload1.html -/doc/html/boost_asio/reference/ssl__stream/set_verify_mode/overload2.html -/doc/html/boost_asio/reference/ssl__stream/shutdown/ -/doc/html/boost_asio/reference/ssl__stream/shutdown.html -/doc/html/boost_asio/reference/ssl__stream/shutdown/overload1.html -/doc/html/boost_asio/reference/ssl__stream/shutdown/overload2.html -/doc/html/boost_asio/reference/ssl__stream/stream/ -/doc/html/boost_asio/reference/ssl__stream/_stream.html -/doc/html/boost_asio/reference/ssl__stream/stream.html -/doc/html/boost_asio/reference/ssl__stream/stream/overload1.html -/doc/html/boost_asio/reference/ssl__stream/stream/overload2.html -/doc/html/boost_asio/reference/ssl__stream/write_some/ -/doc/html/boost_asio/reference/ssl__stream/write_some.html -/doc/html/boost_asio/reference/ssl__stream/write_some/overload1.html -/doc/html/boost_asio/reference/ssl__stream/write_some/overload2.html -/doc/html/boost_asio/reference/ssl__verify_client_once.html -/doc/html/boost_asio/reference/ssl__verify_context/ -/doc/html/boost_asio/reference/ssl__verify_context.html -/doc/html/boost_asio/reference/ssl__verify_context/native_handle.html -/doc/html/boost_asio/reference/ssl__verify_context/native_handle_type.html -/doc/html/boost_asio/reference/ssl__verify_context/verify_context.html -/doc/html/boost_asio/reference/ssl__verify_fail_if_no_peer_cert.html -/doc/html/boost_asio/reference/ssl__verify_mode.html -/doc/html/boost_asio/reference/ssl__verify_none.html -/doc/html/boost_asio/reference/ssl__verify_peer.html -/doc/html/boost_asio/reference/static_thread_pool.html -/doc/html/boost_asio/reference/std__move.html -/doc/html/boost_asio/reference/steady_timer.html -/doc/html/boost_asio/reference/strand/ -/doc/html/boost_asio/reference/strand/context.html -/doc/html/boost_asio/reference/strand/defer.html -/doc/html/boost_asio/reference/strand/dispatch.html -/doc/html/boost_asio/reference/strand/execute.html -/doc/html/boost_asio/reference/strand/get_inner_executor.html -/doc/html/boost_asio/reference/strand.html -/doc/html/boost_asio/reference/strand/inner_executor_type.html -/doc/html/boost_asio/reference/strand/on_work_finished.html -/doc/html/boost_asio/reference/strand/on_work_started.html -/doc/html/boost_asio/reference/strand/operator_eq_/ -/doc/html/boost_asio/reference/strand/operator_eq__eq_.html -/doc/html/boost_asio/reference/strand/operator_eq_.html -/doc/html/boost_asio/reference/strand/operator_eq_/overload1.html -/doc/html/boost_asio/reference/strand/operator_eq_/overload2.html -/doc/html/boost_asio/reference/strand/operator_eq_/overload3.html -/doc/html/boost_asio/reference/strand/operator_eq_/overload4.html -/doc/html/boost_asio/reference/strand/operator_not__eq_.html -/doc/html/boost_asio/reference/strand/post.html -/doc/html/boost_asio/reference/strand/prefer.html -/doc/html/boost_asio/reference/strand/query.html -/doc/html/boost_asio/reference/strand/require.html -/doc/html/boost_asio/reference/strand/running_in_this_thread.html -/doc/html/boost_asio/reference/strand/strand/ -/doc/html/boost_asio/reference/strand/_strand.html -/doc/html/boost_asio/reference/strand/strand.html -/doc/html/boost_asio/reference/strand/strand/overload1.html -/doc/html/boost_asio/reference/strand/strand/overload2.html -/doc/html/boost_asio/reference/strand/strand/overload3.html -/doc/html/boost_asio/reference/strand/strand/overload4.html -/doc/html/boost_asio/reference/strand/strand/overload5.html -/doc/html/boost_asio/reference/strand/strand/overload6.html -/doc/html/boost_asio/reference/streambuf.html -/doc/html/boost_asio/reference/synchronous_socket_operations.html -/doc/html/boost_asio/reference/SyncRandomAccessReadDevice.html -/doc/html/boost_asio/reference/SyncRandomAccessWriteDevice.html -/doc/html/boost_asio/reference/SyncReadStream.html -/doc/html/boost_asio/reference/SyncWriteStream.html -/doc/html/boost_asio/reference/system_context/ -/doc/html/boost_asio/reference/system_context/add_service.html -/doc/html/boost_asio/reference/system_context/destroy.html -/doc/html/boost_asio/reference/system_context/executor_type.html -/doc/html/boost_asio/reference/system_context/fork_event.html -/doc/html/boost_asio/reference/system_context/get_executor.html -/doc/html/boost_asio/reference/system_context/has_service.html -/doc/html/boost_asio/reference/system_context.html -/doc/html/boost_asio/reference/system_context/join.html -/doc/html/boost_asio/reference/system_context/make_service.html -/doc/html/boost_asio/reference/system_context/notify_fork.html -/doc/html/boost_asio/reference/system_context/shutdown.html -/doc/html/boost_asio/reference/system_context/stop.html -/doc/html/boost_asio/reference/system_context/stopped.html -/doc/html/boost_asio/reference/system_context/_system_context.html -/doc/html/boost_asio/reference/system_context/use_service/ -/doc/html/boost_asio/reference/system_context/use_service.html -/doc/html/boost_asio/reference/system_context/use_service/overload1.html -/doc/html/boost_asio/reference/system_context/use_service/overload2.html -/doc/html/boost_asio/reference/system_executor.html -/doc/html/boost_asio/reference/system_timer.html -/doc/html/boost_asio/reference/this_coro__cancellation_state.html -/doc/html/boost_asio/reference/this_coro__cancellation_state_t/ -/doc/html/boost_asio/reference/this_coro__cancellation_state_t/cancellation_state_t.html -/doc/html/boost_asio/reference/this_coro__cancellation_state_t.html -/doc/html/boost_asio/reference/this_coro__executor.html -/doc/html/boost_asio/reference/this_coro__executor_t/ -/doc/html/boost_asio/reference/this_coro__executor_t/executor_t.html -/doc/html/boost_asio/reference/this_coro__executor_t.html -/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/ -/doc/html/boost_asio/reference/this_coro__reset_cancellation_state.html -/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload1.html -/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload2.html -/doc/html/boost_asio/reference/this_coro__reset_cancellation_state/overload3.html -/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/ -/doc/html/boost_asio/reference/this_coro__throw_if_cancelled.html -/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/overload1.html -/doc/html/boost_asio/reference/this_coro__throw_if_cancelled/overload2.html -/doc/html/boost_asio/reference/thread_pool/ -/doc/html/boost_asio/reference/thread_pool/add_service.html -/doc/html/boost_asio/reference/thread_pool/attach.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/_basic_executor_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/basic_executor_type/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/bulk_execute.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/connect.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/context.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/defer.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/dispatch.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/execute.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/index_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/on_work_finished.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/on_work_started.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq__eq_.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_eq_/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/operator_not__eq_.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/post.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload3.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload4.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload5.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query/overload6.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/query__static/overload3.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/ -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload1.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload2.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload3.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload4.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload5.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload6.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload7.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload8.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/require/overload9.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/running_in_this_thread.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/schedule.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/sender_type.html -/doc/html/boost_asio/reference/thread_pool__basic_executor_type/shape_type.html -/doc/html/boost_asio/reference/thread_pool/destroy.html -/doc/html/boost_asio/reference/thread_pool/executor.html -/doc/html/boost_asio/reference/thread_pool/executor_type.html -/doc/html/boost_asio/reference/thread_pool/fork_event.html -/doc/html/boost_asio/reference/thread_pool/get_executor.html -/doc/html/boost_asio/reference/thread_pool/has_service.html -/doc/html/boost_asio/reference/thread_pool.html -/doc/html/boost_asio/reference/thread_pool/join.html -/doc/html/boost_asio/reference/thread_pool/make_service.html -/doc/html/boost_asio/reference/thread_pool/notify_fork.html -/doc/html/boost_asio/reference/thread_pool/scheduler.html -/doc/html/boost_asio/reference/thread_pool/scheduler_type.html -/doc/html/boost_asio/reference/thread_pool/shutdown.html -/doc/html/boost_asio/reference/thread_pool/stop.html -/doc/html/boost_asio/reference/thread_pool/thread_pool/ -/doc/html/boost_asio/reference/thread_pool/_thread_pool.html -/doc/html/boost_asio/reference/thread_pool/thread_pool.html -/doc/html/boost_asio/reference/thread_pool/thread_pool/overload1.html -/doc/html/boost_asio/reference/thread_pool/thread_pool/overload2.html -/doc/html/boost_asio/reference/thread_pool/use_service/ -/doc/html/boost_asio/reference/thread_pool/use_service.html -/doc/html/boost_asio/reference/thread_pool/use_service/overload1.html -/doc/html/boost_asio/reference/thread_pool/use_service/overload2.html -/doc/html/boost_asio/reference/thread_pool/wait.html -/doc/html/boost_asio/reference/TimeTraits.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/ -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/add.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/duration_type.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/less_than.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/now.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/subtract.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/time_type.html -/doc/html/boost_asio/reference/time_traits_lt__ptime__gt_/to_posix_duration.html -/doc/html/boost_asio/reference/transfer_all.html -/doc/html/boost_asio/reference/transfer_at_least.html -/doc/html/boost_asio/reference/transfer_exactly.html -/doc/html/boost_asio/reference/use_awaitable.html -/doc/html/boost_asio/reference/use_awaitable_t/ -/doc/html/boost_asio/reference/use_awaitable_t/as_default_on.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/ -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/default_completion_token_type.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default/executor_with_default.html -/doc/html/boost_asio/reference/use_awaitable_t__executor_with_default.html -/doc/html/boost_asio/reference/use_awaitable_t.html -/doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t/ -/doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t.html -/doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t/overload1.html -/doc/html/boost_asio/reference/use_awaitable_t/use_awaitable_t/overload2.html -/doc/html/boost_asio/reference/use_future.html -/doc/html/boost_asio/reference/use_future_t/ -/doc/html/boost_asio/reference/use_future_t/allocator_type.html -/doc/html/boost_asio/reference/use_future_t/get_allocator.html -/doc/html/boost_asio/reference/use_future_t.html -/doc/html/boost_asio/reference/use_future_t/operator_lb__rb_.html -/doc/html/boost_asio/reference/use_future_t/operator_lp__rp_.html -/doc/html/boost_asio/reference/use_future_t/rebind.html -/doc/html/boost_asio/reference/use_future_t/use_future_t/ -/doc/html/boost_asio/reference/use_future_t/use_future_t.html -/doc/html/boost_asio/reference/use_future_t/use_future_t/overload1.html -/doc/html/boost_asio/reference/use_future_t/use_future_t/overload2.html -/doc/html/boost_asio/reference/uses_executor.html -/doc/html/boost_asio/reference/WaitHandler.html -/doc/html/boost_asio/reference/wait_traits/ -/doc/html/boost_asio/reference/WaitTraits.html -/doc/html/boost_asio/reference/wait_traits.html -/doc/html/boost_asio/reference/wait_traits/to_wait_duration/ -/doc/html/boost_asio/reference/wait_traits/to_wait_duration.html -/doc/html/boost_asio/reference/wait_traits/to_wait_duration/overload1.html -/doc/html/boost_asio/reference/wait_traits/to_wait_duration/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/ -/doc/html/boost_asio/reference/windows__basic_object_handle/assign/ -/doc/html/boost_asio/reference/windows__basic_object_handle/assign.html -/doc/html/boost_asio/reference/windows__basic_object_handle/assign/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/assign/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/async_wait.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/ -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload3.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload4.html -/doc/html/boost_asio/reference/windows__basic_object_handle/basic_object_handle/overload5.html -/doc/html/boost_asio/reference/windows__basic_object_handle/cancel/ -/doc/html/boost_asio/reference/windows__basic_object_handle/cancel.html -/doc/html/boost_asio/reference/windows__basic_object_handle/cancel/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/cancel/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/close/ -/doc/html/boost_asio/reference/windows__basic_object_handle/close.html -/doc/html/boost_asio/reference/windows__basic_object_handle/close/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/close/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/executor_type.html -/doc/html/boost_asio/reference/windows__basic_object_handle/get_executor.html -/doc/html/boost_asio/reference/windows__basic_object_handle.html -/doc/html/boost_asio/reference/windows__basic_object_handle/is_open.html -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer/ -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer.html -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer/overload2.html -/doc/html/boost_asio/reference/windows__basic_object_handle/lowest_layer_type.html -/doc/html/boost_asio/reference/windows__basic_object_handle/native_handle.html -/doc/html/boost_asio/reference/windows__basic_object_handle/native_handle_type.html -/doc/html/boost_asio/reference/windows__basic_object_handle/operator_eq_.html -/doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor/ -/doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor.html -/doc/html/boost_asio/reference/windows__basic_object_handle__rebind_executor/other.html -/doc/html/boost_asio/reference/windows__basic_object_handle/wait/ -/doc/html/boost_asio/reference/windows__basic_object_handle/wait.html -/doc/html/boost_asio/reference/windows__basic_object_handle/wait/overload1.html -/doc/html/boost_asio/reference/windows__basic_object_handle/wait/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/assign/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/assign.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/assign/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/assign/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/_basic_overlapped_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload3.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload4.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/basic_overlapped_handle/overload5.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/cancel/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/close/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/close.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/close/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/close/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/executor_type.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/get_executor.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/is_open.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer/overload1.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer/overload2.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/lowest_layer_type.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/native_handle.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/native_handle_type.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle/operator_eq_.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor/ -/doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor.html -/doc/html/boost_asio/reference/windows__basic_overlapped_handle__rebind_executor/other.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/assign/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/assign.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/assign/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/assign/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/async_read_some_at.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/async_write_some_at.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload3.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload4.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/basic_random_access_handle/overload5.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/cancel/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/close/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/close.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/close/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/close/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/executor_type.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/get_executor.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/is_open.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/lowest_layer_type.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/native_handle.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/native_handle_type.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/operator_eq_.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/read_some_at/overload2.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle__rebind_executor/other.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/ -/doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/overload1.html -/doc/html/boost_asio/reference/windows__basic_random_access_handle/write_some_at/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/assign/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/assign.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/assign/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/assign/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/async_read_some.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/async_write_some.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload3.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload4.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/basic_stream_handle/overload5.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/cancel.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/cancel/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/close/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/close.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/close/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/close/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/executor_type.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/get_executor.html -/doc/html/boost_asio/reference/windows__basic_stream_handle.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/is_open.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/lowest_layer_type.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/native_handle.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/native_handle_type.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/operator_eq_.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/read_some.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/read_some/overload2.html -/doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor/ -/doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor.html -/doc/html/boost_asio/reference/windows__basic_stream_handle__rebind_executor/other.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/ -/doc/html/boost_asio/reference/windows__basic_stream_handle/write_some.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/overload1.html -/doc/html/boost_asio/reference/windows__basic_stream_handle/write_some/overload2.html -/doc/html/boost_asio/reference/windows__object_handle.html -/doc/html/boost_asio/reference/windows__overlapped_handle.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/ -/doc/html/boost_asio/reference/windows__overlapped_ptr/complete.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/get/ -/doc/html/boost_asio/reference/windows__overlapped_ptr/get.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/get/overload1.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/get/overload2.html -/doc/html/boost_asio/reference/windows__overlapped_ptr.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr/ -/doc/html/boost_asio/reference/windows__overlapped_ptr/_overlapped_ptr.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr/overload1.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr/overload2.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/overlapped_ptr/overload3.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/release.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset/ -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset/overload1.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset/overload2.html -/doc/html/boost_asio/reference/windows__overlapped_ptr/reset/overload3.html -/doc/html/boost_asio/reference/windows__random_access_handle.html -/doc/html/boost_asio/reference/windows__stream_handle.html -/doc/html/boost_asio/reference/write/ -/doc/html/boost_asio/reference/write_at/ -/doc/html/boost_asio/reference/write_at.html -/doc/html/boost_asio/reference/write_at/overload1.html -/doc/html/boost_asio/reference/write_at/overload2.html -/doc/html/boost_asio/reference/write_at/overload3.html -/doc/html/boost_asio/reference/write_at/overload4.html -/doc/html/boost_asio/reference/write_at/overload5.html -/doc/html/boost_asio/reference/write_at/overload6.html -/doc/html/boost_asio/reference/write_at/overload7.html -/doc/html/boost_asio/reference/write_at/overload8.html -/doc/html/boost_asio/reference/WriteHandler.html -/doc/html/boost_asio/reference/write.html -/doc/html/boost_asio/reference/write/overload10.html -/doc/html/boost_asio/reference/write/overload11.html -/doc/html/boost_asio/reference/write/overload12.html -/doc/html/boost_asio/reference/write/overload13.html -/doc/html/boost_asio/reference/write/overload14.html -/doc/html/boost_asio/reference/write/overload15.html -/doc/html/boost_asio/reference/write/overload16.html -/doc/html/boost_asio/reference/write/overload1.html -/doc/html/boost_asio/reference/write/overload2.html -/doc/html/boost_asio/reference/write/overload3.html -/doc/html/boost_asio/reference/write/overload4.html -/doc/html/boost_asio/reference/write/overload5.html -/doc/html/boost_asio/reference/write/overload6.html -/doc/html/boost_asio/reference/write/overload7.html -/doc/html/boost_asio/reference/write/overload8.html -/doc/html/boost_asio/reference/write/overload9.html -/doc/html/boost_asio/reference/yield_context.html -/doc/html/boost_asio/std_executors.html -/doc/html/boost_asio/sync_op.png -/doc/html/boost_asio/tutorial/ -/doc/html/boost_asio/tutorial.html -/doc/html/boost_asio/tutorial/tutdaytime1/ -/doc/html/boost_asio/tutorial/tutdaytime1.html -/doc/html/boost_asio/tutorial/tutdaytime1/src.html -/doc/html/boost_asio/tutorial/tutdaytime2/ -/doc/html/boost_asio/tutorial/tutdaytime2.html -/doc/html/boost_asio/tutorial/tutdaytime2/src.html -/doc/html/boost_asio/tutorial/tutdaytime3/ -/doc/html/boost_asio/tutorial/tutdaytime3.html -/doc/html/boost_asio/tutorial/tutdaytime3/src.html -/doc/html/boost_asio/tutorial/tutdaytime4/ -/doc/html/boost_asio/tutorial/tutdaytime4.html -/doc/html/boost_asio/tutorial/tutdaytime4/src.html -/doc/html/boost_asio/tutorial/tutdaytime5/ -/doc/html/boost_asio/tutorial/tutdaytime5.html -/doc/html/boost_asio/tutorial/tutdaytime5/src.html -/doc/html/boost_asio/tutorial/tutdaytime6/ -/doc/html/boost_asio/tutorial/tutdaytime6.html -/doc/html/boost_asio/tutorial/tutdaytime6/src.html -/doc/html/boost_asio/tutorial/tutdaytime7/ -/doc/html/boost_asio/tutorial/tutdaytime7.html -/doc/html/boost_asio/tutorial/tutdaytime7/src.html -/doc/html/boost_asio/tutorial/tuttimer1/ -/doc/html/boost_asio/tutorial/tuttimer1.html -/doc/html/boost_asio/tutorial/tuttimer1/src.html -/doc/html/boost_asio/tutorial/tuttimer2/ -/doc/html/boost_asio/tutorial/tuttimer2.html -/doc/html/boost_asio/tutorial/tuttimer2/src.html -/doc/html/boost_asio/tutorial/tuttimer3/ -/doc/html/boost_asio/tutorial/tuttimer3.html -/doc/html/boost_asio/tutorial/tuttimer3/src.html -/doc/html/boost_asio/tutorial/tuttimer4/ -/doc/html/boost_asio/tutorial/tuttimer4.html -/doc/html/boost_asio/tutorial/tuttimer4/src.html -/doc/html/boost_asio/tutorial/tuttimer5/ -/doc/html/boost_asio/tutorial/tuttimer5.html -/doc/html/boost_asio/tutorial/tuttimer5/src.html -/doc/html/boost_asio/using.html -/libs/ -/libs/asio/ -/libs/asio/CMakeLists.txt -/libs/asio/doc/ -/libs/asio/doc/asio.qbk -/libs/asio/doc/doxy2qbk.pl -/libs/asio/doc/examples.qbk -/libs/asio/doc/history.qbk -/libs/asio/doc/index.xml -/libs/asio/doc/Jamfile.v2 -/libs/asio/doc/net_ts.qbk -/libs/asio/doc/noncopyable_dox.txt -/libs/asio/doc/overview/ -/libs/asio/doc/overview/allocation.qbk -/libs/asio/doc/overview/async_op1.dot -/libs/asio/doc/overview/async_op1.png -/libs/asio/doc/overview/async_op2.dot -/libs/asio/doc/overview/async_op2.png -/libs/asio/doc/overview/async.qbk -/libs/asio/doc/overview/basics.qbk -/libs/asio/doc/overview/bsd_sockets.qbk -/libs/asio/doc/overview/buffers.qbk -/libs/asio/doc/overview/cancellation.qbk -/libs/asio/doc/overview/concurrency_hint.qbk -/libs/asio/doc/overview/coroutine.qbk -/libs/asio/doc/overview/cpp2011.qbk -/libs/asio/doc/overview/cpp20_coroutines.qbk -/libs/asio/doc/overview/handler_tracking.qbk -/libs/asio/doc/overview/implementation.qbk -/libs/asio/doc/overview/iostreams.qbk -/libs/asio/doc/overview/line_based.qbk -/libs/asio/doc/overview/other_protocols.qbk -/libs/asio/doc/overview/posix.qbk -/libs/asio/doc/overview/proactor.dot -/libs/asio/doc/overview/proactor.png -/libs/asio/doc/overview/protocols.qbk -/libs/asio/doc/overview.qbk -/libs/asio/doc/overview/rationale.qbk -/libs/asio/doc/overview/reactor.qbk -/libs/asio/doc/overview/serial_ports.qbk -/libs/asio/doc/overview/signals.qbk -/libs/asio/doc/overview/spawn.qbk -/libs/asio/doc/overview/ssl.qbk -/libs/asio/doc/overview/strands.qbk -/libs/asio/doc/overview/streams.qbk -/libs/asio/doc/overview/sync_op.dot -/libs/asio/doc/overview/sync_op.png -/libs/asio/doc/overview/threads.qbk -/libs/asio/doc/overview/timers.qbk -/libs/asio/doc/overview/windows.qbk -/libs/asio/doc/platform_macros.pl -/libs/asio/doc/platform_macros.qbk -/libs/asio/doc/quickref.xml -/libs/asio/doc/reference.dox -/libs/asio/doc/reference.qbk -/libs/asio/doc/reference.xsl -/libs/asio/doc/requirements/ -/libs/asio/doc/requirements/AcceptableProtocol.qbk -/libs/asio/doc/requirements/AcceptHandler.qbk -/libs/asio/doc/requirements/asynchronous_operations.qbk -/libs/asio/doc/requirements/asynchronous_socket_operations.qbk -/libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk -/libs/asio/doc/requirements/AsyncRandomAccessWriteDevice.qbk -/libs/asio/doc/requirements/AsyncReadStream.qbk -/libs/asio/doc/requirements/AsyncWriteStream.qbk -/libs/asio/doc/requirements/BufferedHandshakeHandler.qbk -/libs/asio/doc/requirements/CancellationHandler.qbk -/libs/asio/doc/requirements/CancellationSlot.qbk -/libs/asio/doc/requirements/CompletionCondition.qbk -/libs/asio/doc/requirements/CompletionHandler.qbk -/libs/asio/doc/requirements/ConnectCondition.qbk -/libs/asio/doc/requirements/ConnectHandler.qbk -/libs/asio/doc/requirements/ConstBufferSequence.qbk -/libs/asio/doc/requirements/DynamicBuffer.qbk -/libs/asio/doc/requirements/DynamicBuffer_v1.qbk -/libs/asio/doc/requirements/DynamicBuffer_v2.qbk -/libs/asio/doc/requirements/Endpoint.qbk -/libs/asio/doc/requirements/EndpointSequence.qbk -/libs/asio/doc/requirements/ExecutionContext.qbk -/libs/asio/doc/requirements/Executor.qbk -/libs/asio/doc/requirements/GettableSerialPortOption.qbk -/libs/asio/doc/requirements/GettableSocketOption.qbk -/libs/asio/doc/requirements/Handler.qbk -/libs/asio/doc/requirements/HandshakeHandler.qbk -/libs/asio/doc/requirements/InternetProtocol.qbk -/libs/asio/doc/requirements/IoControlCommand.qbk -/libs/asio/doc/requirements/IoObjectService.qbk -/libs/asio/doc/requirements/IteratorConnectHandler.qbk -/libs/asio/doc/requirements/LegacyCompletionHandler.qbk -/libs/asio/doc/requirements/MoveAcceptHandler.qbk -/libs/asio/doc/requirements/MutableBufferSequence.qbk -/libs/asio/doc/requirements/OperationState.qbk -/libs/asio/doc/requirements/ProtoAllocator.qbk -/libs/asio/doc/requirements/Protocol.qbk -/libs/asio/doc/requirements.qbk -/libs/asio/doc/requirements/RangeConnectHandler.qbk -/libs/asio/doc/requirements/ReadHandler.qbk -/libs/asio/doc/requirements/read_write_operations.qbk -/libs/asio/doc/requirements/Receiver.qbk -/libs/asio/doc/requirements/ResolveHandler.qbk -/libs/asio/doc/requirements/Scheduler.qbk -/libs/asio/doc/requirements/Sender.qbk -/libs/asio/doc/requirements/Service.qbk -/libs/asio/doc/requirements/SettableSerialPortOption.qbk -/libs/asio/doc/requirements/SettableSocketOption.qbk -/libs/asio/doc/requirements/ShutdownHandler.qbk -/libs/asio/doc/requirements/SignalHandler.qbk -/libs/asio/doc/requirements/synchronous_socket_operations.qbk -/libs/asio/doc/requirements/SyncRandomAccessReadDevice.qbk -/libs/asio/doc/requirements/SyncRandomAccessWriteDevice.qbk -/libs/asio/doc/requirements/SyncReadStream.qbk -/libs/asio/doc/requirements/SyncWriteStream.qbk -/libs/asio/doc/requirements/TimeTraits.qbk -/libs/asio/doc/requirements/WaitHandler.qbk -/libs/asio/doc/requirements/WaitTraits.qbk -/libs/asio/doc/requirements/WriteHandler.qbk -/libs/asio/doc/std_exception_dox.txt -/libs/asio/doc/std_executors.qbk -/libs/asio/doc/tutorial.dox -/libs/asio/doc/tutorial.qbk -/libs/asio/doc/tutorial.xsl -/libs/asio/doc/using.qbk -/libs/asio/example/ -/libs/asio/example/cpp03/ -/libs/asio/example/cpp03/allocation/ -/libs/asio/example/cpp03/allocation/Jamfile.v2 -/libs/asio/example/cpp03/allocation/server.cpp -/libs/asio/example/cpp03/buffers/ -/libs/asio/example/cpp03/buffers/Jamfile.v2 -/libs/asio/example/cpp03/buffers/reference_counted.cpp -/libs/asio/example/cpp03/chat/ -/libs/asio/example/cpp03/chat/chat_client.cpp -/libs/asio/example/cpp03/chat/chat_message.hpp -/libs/asio/example/cpp03/chat/chat_server.cpp -/libs/asio/example/cpp03/chat/Jamfile.v2 -/libs/asio/example/cpp03/chat/posix_chat_client.cpp -/libs/asio/example/cpp03/echo/ -/libs/asio/example/cpp03/echo/async_tcp_echo_server.cpp -/libs/asio/example/cpp03/echo/async_udp_echo_server.cpp -/libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp -/libs/asio/example/cpp03/echo/blocking_tcp_echo_server.cpp -/libs/asio/example/cpp03/echo/blocking_udp_echo_client.cpp -/libs/asio/example/cpp03/echo/blocking_udp_echo_server.cpp -/libs/asio/example/cpp03/echo/Jamfile.v2 -/libs/asio/example/cpp03/fork/ -/libs/asio/example/cpp03/fork/daemon.cpp -/libs/asio/example/cpp03/fork/Jamfile.v2 -/libs/asio/example/cpp03/fork/process_per_connection.cpp -/libs/asio/example/cpp03/http/ -/libs/asio/example/cpp03/http/client/ -/libs/asio/example/cpp03/http/client/async_client.cpp -/libs/asio/example/cpp03/http/client/Jamfile.v2 -/libs/asio/example/cpp03/http/client/sync_client.cpp -/libs/asio/example/cpp03/http/doc_root/ -/libs/asio/example/cpp03/http/doc_root/data_1K.html -/libs/asio/example/cpp03/http/doc_root/data_2K.html -/libs/asio/example/cpp03/http/doc_root/data_4K.html -/libs/asio/example/cpp03/http/doc_root/data_8K.html -/libs/asio/example/cpp03/http/server/ -/libs/asio/example/cpp03/http/server2/ -/libs/asio/example/cpp03/http/server2/connection.cpp -/libs/asio/example/cpp03/http/server2/connection.hpp -/libs/asio/example/cpp03/http/server2/header.hpp -/libs/asio/example/cpp03/http/server2/io_context_pool.cpp -/libs/asio/example/cpp03/http/server2/io_context_pool.hpp -/libs/asio/example/cpp03/http/server2/Jamfile.v2 -/libs/asio/example/cpp03/http/server2/main.cpp -/libs/asio/example/cpp03/http/server2/mime_types.cpp -/libs/asio/example/cpp03/http/server2/mime_types.hpp -/libs/asio/example/cpp03/http/server2/reply.cpp -/libs/asio/example/cpp03/http/server2/reply.hpp -/libs/asio/example/cpp03/http/server2/request_handler.cpp -/libs/asio/example/cpp03/http/server2/request_handler.hpp -/libs/asio/example/cpp03/http/server2/request.hpp -/libs/asio/example/cpp03/http/server2/request_parser.cpp -/libs/asio/example/cpp03/http/server2/request_parser.hpp -/libs/asio/example/cpp03/http/server2/server.cpp -/libs/asio/example/cpp03/http/server2/server.hpp -/libs/asio/example/cpp03/http/server3/ -/libs/asio/example/cpp03/http/server3/connection.cpp -/libs/asio/example/cpp03/http/server3/connection.hpp -/libs/asio/example/cpp03/http/server3/header.hpp -/libs/asio/example/cpp03/http/server3/Jamfile.v2 -/libs/asio/example/cpp03/http/server3/main.cpp -/libs/asio/example/cpp03/http/server3/mime_types.cpp -/libs/asio/example/cpp03/http/server3/mime_types.hpp -/libs/asio/example/cpp03/http/server3/reply.cpp -/libs/asio/example/cpp03/http/server3/reply.hpp -/libs/asio/example/cpp03/http/server3/request_handler.cpp -/libs/asio/example/cpp03/http/server3/request_handler.hpp -/libs/asio/example/cpp03/http/server3/request.hpp -/libs/asio/example/cpp03/http/server3/request_parser.cpp -/libs/asio/example/cpp03/http/server3/request_parser.hpp -/libs/asio/example/cpp03/http/server3/server.cpp -/libs/asio/example/cpp03/http/server3/server.hpp -/libs/asio/example/cpp03/http/server4/ -/libs/asio/example/cpp03/http/server4/file_handler.cpp -/libs/asio/example/cpp03/http/server4/file_handler.hpp -/libs/asio/example/cpp03/http/server4/header.hpp -/libs/asio/example/cpp03/http/server4/Jamfile.v2 -/libs/asio/example/cpp03/http/server4/main.cpp -/libs/asio/example/cpp03/http/server4/mime_types.cpp -/libs/asio/example/cpp03/http/server4/mime_types.hpp -/libs/asio/example/cpp03/http/server4/reply.cpp -/libs/asio/example/cpp03/http/server4/reply.hpp -/libs/asio/example/cpp03/http/server4/request.hpp -/libs/asio/example/cpp03/http/server4/request_parser.cpp -/libs/asio/example/cpp03/http/server4/request_parser.hpp -/libs/asio/example/cpp03/http/server4/server.cpp -/libs/asio/example/cpp03/http/server4/server.hpp -/libs/asio/example/cpp03/http/server/connection.cpp -/libs/asio/example/cpp03/http/server/connection.hpp -/libs/asio/example/cpp03/http/server/connection_manager.cpp -/libs/asio/example/cpp03/http/server/connection_manager.hpp -/libs/asio/example/cpp03/http/server/header.hpp -/libs/asio/example/cpp03/http/server/Jamfile.v2 -/libs/asio/example/cpp03/http/server/main.cpp -/libs/asio/example/cpp03/http/server/mime_types.cpp -/libs/asio/example/cpp03/http/server/mime_types.hpp -/libs/asio/example/cpp03/http/server/reply.cpp -/libs/asio/example/cpp03/http/server/reply.hpp -/libs/asio/example/cpp03/http/server/request_handler.cpp -/libs/asio/example/cpp03/http/server/request_handler.hpp -/libs/asio/example/cpp03/http/server/request.hpp -/libs/asio/example/cpp03/http/server/request_parser.cpp -/libs/asio/example/cpp03/http/server/request_parser.hpp -/libs/asio/example/cpp03/http/server/server.cpp -/libs/asio/example/cpp03/http/server/server.hpp -/libs/asio/example/cpp03/icmp/ -/libs/asio/example/cpp03/icmp/icmp_header.hpp -/libs/asio/example/cpp03/icmp/ipv4_header.hpp -/libs/asio/example/cpp03/icmp/Jamfile.v2 -/libs/asio/example/cpp03/icmp/ping.cpp -/libs/asio/example/cpp03/invocation/ -/libs/asio/example/cpp03/invocation/Jamfile.v2 -/libs/asio/example/cpp03/invocation/prioritised_handlers.cpp -/libs/asio/example/cpp03/iostreams/ -/libs/asio/example/cpp03/iostreams/daytime_client.cpp -/libs/asio/example/cpp03/iostreams/daytime_server.cpp -/libs/asio/example/cpp03/iostreams/http_client.cpp -/libs/asio/example/cpp03/iostreams/Jamfile.v2 -/libs/asio/example/cpp03/local/ -/libs/asio/example/cpp03/local/connect_pair.cpp -/libs/asio/example/cpp03/local/iostream_client.cpp -/libs/asio/example/cpp03/local/Jamfile.v2 -/libs/asio/example/cpp03/local/stream_client.cpp -/libs/asio/example/cpp03/local/stream_server.cpp -/libs/asio/example/cpp03/multicast/ -/libs/asio/example/cpp03/multicast/Jamfile.v2 -/libs/asio/example/cpp03/multicast/receiver.cpp -/libs/asio/example/cpp03/multicast/sender.cpp -/libs/asio/example/cpp03/nonblocking/ -/libs/asio/example/cpp03/nonblocking/Jamfile.v2 -/libs/asio/example/cpp03/nonblocking/third_party_lib.cpp -/libs/asio/example/cpp03/porthopper/ -/libs/asio/example/cpp03/porthopper/client.cpp -/libs/asio/example/cpp03/porthopper/Jamfile.v2 -/libs/asio/example/cpp03/porthopper/protocol.hpp -/libs/asio/example/cpp03/porthopper/server.cpp -/libs/asio/example/cpp03/serialization/ -/libs/asio/example/cpp03/serialization/client.cpp -/libs/asio/example/cpp03/serialization/connection.hpp -/libs/asio/example/cpp03/serialization/Jamfile.v2 -/libs/asio/example/cpp03/serialization/server.cpp -/libs/asio/example/cpp03/serialization/stock.hpp -/libs/asio/example/cpp03/services/ -/libs/asio/example/cpp03/services/basic_logger.hpp -/libs/asio/example/cpp03/services/daytime_client.cpp -/libs/asio/example/cpp03/services/Jamfile.v2 -/libs/asio/example/cpp03/services/logger.hpp -/libs/asio/example/cpp03/services/logger_service.cpp -/libs/asio/example/cpp03/services/logger_service.hpp -/libs/asio/example/cpp03/socks4/ -/libs/asio/example/cpp03/socks4/Jamfile.v2 -/libs/asio/example/cpp03/socks4/socks4.hpp -/libs/asio/example/cpp03/socks4/sync_client.cpp -/libs/asio/example/cpp03/spawn/ -/libs/asio/example/cpp03/spawn/echo_server.cpp -/libs/asio/example/cpp03/spawn/Jamfile.v2 -/libs/asio/example/cpp03/spawn/parallel_grep.cpp -/libs/asio/example/cpp03/ssl/ -/libs/asio/example/cpp03/ssl/ca.pem -/libs/asio/example/cpp03/ssl/client.cpp -/libs/asio/example/cpp03/ssl/dh2048.pem -/libs/asio/example/cpp03/ssl/Jamfile.v2 -/libs/asio/example/cpp03/ssl/README -/libs/asio/example/cpp03/ssl/server.cpp -/libs/asio/example/cpp03/ssl/server.pem -/libs/asio/example/cpp03/timeouts/ -/libs/asio/example/cpp03/timeouts/async_tcp_client.cpp -/libs/asio/example/cpp03/timeouts/blocking_tcp_client.cpp -/libs/asio/example/cpp03/timeouts/blocking_token_tcp_client.cpp -/libs/asio/example/cpp03/timeouts/blocking_udp_client.cpp -/libs/asio/example/cpp03/timeouts/Jamfile.v2 -/libs/asio/example/cpp03/timeouts/server.cpp -/libs/asio/example/cpp03/timers/ -/libs/asio/example/cpp03/timers/Jamfile.v2 -/libs/asio/example/cpp03/timers/time_t_timer.cpp -/libs/asio/example/cpp03/tutorial/ -/libs/asio/example/cpp03/tutorial/daytime1/ -/libs/asio/example/cpp03/tutorial/daytime1/client.cpp -/libs/asio/example/cpp03/tutorial/daytime2/ -/libs/asio/example/cpp03/tutorial/daytime2/server.cpp -/libs/asio/example/cpp03/tutorial/daytime3/ -/libs/asio/example/cpp03/tutorial/daytime3/server.cpp -/libs/asio/example/cpp03/tutorial/daytime4/ -/libs/asio/example/cpp03/tutorial/daytime4/client.cpp -/libs/asio/example/cpp03/tutorial/daytime5/ -/libs/asio/example/cpp03/tutorial/daytime5/server.cpp -/libs/asio/example/cpp03/tutorial/daytime6/ -/libs/asio/example/cpp03/tutorial/daytime6/server.cpp -/libs/asio/example/cpp03/tutorial/daytime7/ -/libs/asio/example/cpp03/tutorial/daytime7/server.cpp -/libs/asio/example/cpp03/tutorial/daytime_dox.txt -/libs/asio/example/cpp03/tutorial/index_dox.txt -/libs/asio/example/cpp03/tutorial/Jamfile.v2 -/libs/asio/example/cpp03/tutorial/timer1/ -/libs/asio/example/cpp03/tutorial/timer1/timer.cpp -/libs/asio/example/cpp03/tutorial/timer2/ -/libs/asio/example/cpp03/tutorial/timer2/timer.cpp -/libs/asio/example/cpp03/tutorial/timer3/ -/libs/asio/example/cpp03/tutorial/timer3/timer.cpp -/libs/asio/example/cpp03/tutorial/timer4/ -/libs/asio/example/cpp03/tutorial/timer4/timer.cpp -/libs/asio/example/cpp03/tutorial/timer5/ -/libs/asio/example/cpp03/tutorial/timer5/timer.cpp -/libs/asio/example/cpp03/tutorial/timer_dox.txt -/libs/asio/example/cpp03/windows/ -/libs/asio/example/cpp03/windows/Jamfile.v2 -/libs/asio/example/cpp03/windows/transmit_file.cpp -/libs/asio/example/cpp11/ -/libs/asio/example/cpp11/allocation/ -/libs/asio/example/cpp11/allocation/Jamfile.v2 -/libs/asio/example/cpp11/allocation/server.cpp -/libs/asio/example/cpp11/buffers/ -/libs/asio/example/cpp11/buffers/Jamfile.v2 -/libs/asio/example/cpp11/buffers/reference_counted.cpp -/libs/asio/example/cpp11/chat/ -/libs/asio/example/cpp11/chat/chat_client.cpp -/libs/asio/example/cpp11/chat/chat_message.hpp -/libs/asio/example/cpp11/chat/chat_server.cpp -/libs/asio/example/cpp11/chat/Jamfile.v2 -/libs/asio/example/cpp11/echo/ -/libs/asio/example/cpp11/echo/async_tcp_echo_server.cpp -/libs/asio/example/cpp11/echo/async_udp_echo_server.cpp -/libs/asio/example/cpp11/echo/blocking_tcp_echo_client.cpp -/libs/asio/example/cpp11/echo/blocking_tcp_echo_server.cpp -/libs/asio/example/cpp11/echo/blocking_udp_echo_client.cpp -/libs/asio/example/cpp11/echo/blocking_udp_echo_server.cpp -/libs/asio/example/cpp11/echo/Jamfile.v2 -/libs/asio/example/cpp11/executors/ -/libs/asio/example/cpp11/executors/actor.cpp -/libs/asio/example/cpp11/executors/bank_account_1.cpp -/libs/asio/example/cpp11/executors/bank_account_2.cpp -/libs/asio/example/cpp11/executors/fork_join.cpp -/libs/asio/example/cpp11/executors/Jamfile.v2 -/libs/asio/example/cpp11/executors/pipeline.cpp -/libs/asio/example/cpp11/executors/priority_scheduler.cpp -/libs/asio/example/cpp11/fork/ -/libs/asio/example/cpp11/fork/daemon.cpp -/libs/asio/example/cpp11/fork/Jamfile.v2 -/libs/asio/example/cpp11/fork/process_per_connection.cpp -/libs/asio/example/cpp11/futures/ -/libs/asio/example/cpp11/futures/daytime_client.cpp -/libs/asio/example/cpp11/futures/Jamfile.v2 -/libs/asio/example/cpp11/handler_tracking/ -/libs/asio/example/cpp11/handler_tracking/async_tcp_echo_server.cpp -/libs/asio/example/cpp11/handler_tracking/custom_tracking.hpp -/libs/asio/example/cpp11/handler_tracking/Jamfile.v2 -/libs/asio/example/cpp11/http/ -/libs/asio/example/cpp11/http/server/ -/libs/asio/example/cpp11/http/server/connection.cpp -/libs/asio/example/cpp11/http/server/connection.hpp -/libs/asio/example/cpp11/http/server/connection_manager.cpp -/libs/asio/example/cpp11/http/server/connection_manager.hpp -/libs/asio/example/cpp11/http/server/header.hpp -/libs/asio/example/cpp11/http/server/Jamfile.v2 -/libs/asio/example/cpp11/http/server/main.cpp -/libs/asio/example/cpp11/http/server/mime_types.cpp -/libs/asio/example/cpp11/http/server/mime_types.hpp -/libs/asio/example/cpp11/http/server/reply.cpp -/libs/asio/example/cpp11/http/server/reply.hpp -/libs/asio/example/cpp11/http/server/request_handler.cpp -/libs/asio/example/cpp11/http/server/request_handler.hpp -/libs/asio/example/cpp11/http/server/request.hpp -/libs/asio/example/cpp11/http/server/request_parser.cpp -/libs/asio/example/cpp11/http/server/request_parser.hpp -/libs/asio/example/cpp11/http/server/server.cpp -/libs/asio/example/cpp11/http/server/server.hpp -/libs/asio/example/cpp11/invocation/ -/libs/asio/example/cpp11/invocation/Jamfile.v2 -/libs/asio/example/cpp11/invocation/prioritised_handlers.cpp -/libs/asio/example/cpp11/iostreams/ -/libs/asio/example/cpp11/iostreams/http_client.cpp -/libs/asio/example/cpp11/iostreams/Jamfile.v2 -/libs/asio/example/cpp11/local/ -/libs/asio/example/cpp11/local/connect_pair.cpp -/libs/asio/example/cpp11/local/iostream_client.cpp -/libs/asio/example/cpp11/local/Jamfile.v2 -/libs/asio/example/cpp11/local/stream_client.cpp -/libs/asio/example/cpp11/local/stream_server.cpp -/libs/asio/example/cpp11/multicast/ -/libs/asio/example/cpp11/multicast/Jamfile.v2 -/libs/asio/example/cpp11/multicast/receiver.cpp -/libs/asio/example/cpp11/multicast/sender.cpp -/libs/asio/example/cpp11/nonblocking/ -/libs/asio/example/cpp11/nonblocking/Jamfile.v2 -/libs/asio/example/cpp11/nonblocking/third_party_lib.cpp -/libs/asio/example/cpp11/operations/ -/libs/asio/example/cpp11/operations/composed_1.cpp -/libs/asio/example/cpp11/operations/composed_2.cpp -/libs/asio/example/cpp11/operations/composed_3.cpp -/libs/asio/example/cpp11/operations/composed_4.cpp -/libs/asio/example/cpp11/operations/composed_5.cpp -/libs/asio/example/cpp11/operations/composed_6.cpp -/libs/asio/example/cpp11/operations/composed_7.cpp -/libs/asio/example/cpp11/operations/composed_8.cpp -/libs/asio/example/cpp11/operations/Jamfile.v2 -/libs/asio/example/cpp11/socks4/ -/libs/asio/example/cpp11/socks4/Jamfile.v2 -/libs/asio/example/cpp11/socks4/socks4.hpp -/libs/asio/example/cpp11/socks4/sync_client.cpp -/libs/asio/example/cpp11/spawn/ -/libs/asio/example/cpp11/spawn/echo_server.cpp -/libs/asio/example/cpp11/spawn/Jamfile.v2 -/libs/asio/example/cpp11/spawn/parallel_grep.cpp -/libs/asio/example/cpp11/ssl/ -/libs/asio/example/cpp11/ssl/ca.pem -/libs/asio/example/cpp11/ssl/client.cpp -/libs/asio/example/cpp11/ssl/dh2048.pem -/libs/asio/example/cpp11/ssl/Jamfile.v2 -/libs/asio/example/cpp11/ssl/README -/libs/asio/example/cpp11/ssl/server.cpp -/libs/asio/example/cpp11/ssl/server.pem -/libs/asio/example/cpp11/timeouts/ -/libs/asio/example/cpp11/timeouts/async_tcp_client.cpp -/libs/asio/example/cpp11/timeouts/blocking_tcp_client.cpp -/libs/asio/example/cpp11/timeouts/blocking_token_tcp_client.cpp -/libs/asio/example/cpp11/timeouts/blocking_udp_client.cpp -/libs/asio/example/cpp11/timeouts/Jamfile.v2 -/libs/asio/example/cpp11/timeouts/server.cpp -/libs/asio/example/cpp11/timers/ -/libs/asio/example/cpp11/timers/Jamfile.v2 -/libs/asio/example/cpp11/timers/time_t_timer.cpp -/libs/asio/example/cpp14/ -/libs/asio/example/cpp14/deferred/ -/libs/asio/example/cpp14/deferred/deferred_1.cpp -/libs/asio/example/cpp14/deferred/deferred_2.cpp -/libs/asio/example/cpp14/deferred/deferred_3.cpp -/libs/asio/example/cpp14/deferred/deferred_4.cpp -/libs/asio/example/cpp14/deferred/deferred_5.cpp -/libs/asio/example/cpp14/deferred/deferred_6.cpp -/libs/asio/example/cpp14/deferred/deferred_7.cpp -/libs/asio/example/cpp14/deferred/Jamfile.v2 -/libs/asio/example/cpp14/executors/ -/libs/asio/example/cpp14/executors/actor.cpp -/libs/asio/example/cpp14/executors/async_1.cpp -/libs/asio/example/cpp14/executors/async_2.cpp -/libs/asio/example/cpp14/executors/bank_account_1.cpp -/libs/asio/example/cpp14/executors/bank_account_2.cpp -/libs/asio/example/cpp14/executors/fork_join.cpp -/libs/asio/example/cpp14/executors/Jamfile.v2 -/libs/asio/example/cpp14/executors/pipeline.cpp -/libs/asio/example/cpp14/executors/priority_scheduler.cpp -/libs/asio/example/cpp14/iostreams/ -/libs/asio/example/cpp14/iostreams/http_client.cpp -/libs/asio/example/cpp14/iostreams/Jamfile.v2 -/libs/asio/example/cpp14/operations/ -/libs/asio/example/cpp14/operations/composed_1.cpp -/libs/asio/example/cpp14/operations/composed_2.cpp -/libs/asio/example/cpp14/operations/composed_3.cpp -/libs/asio/example/cpp14/operations/composed_4.cpp -/libs/asio/example/cpp14/operations/composed_5.cpp -/libs/asio/example/cpp14/operations/composed_6.cpp -/libs/asio/example/cpp14/operations/composed_7.cpp -/libs/asio/example/cpp14/operations/composed_8.cpp -/libs/asio/example/cpp14/operations/Jamfile.v2 -/libs/asio/example/cpp14/parallel_group/ -/libs/asio/example/cpp14/parallel_group/Jamfile.v2 -/libs/asio/example/cpp14/parallel_group/parallel_sort.cpp -/libs/asio/example/cpp14/parallel_group/wait_for_all.cpp -/libs/asio/example/cpp14/parallel_group/wait_for_one.cpp -/libs/asio/example/cpp14/parallel_group/wait_for_one_error.cpp -/libs/asio/example/cpp14/parallel_group/wait_for_one_success.cpp -/libs/asio/example/cpp17/ -/libs/asio/example/cpp17/coroutines_ts/ -/libs/asio/example/cpp17/coroutines_ts/chat_server.cpp -/libs/asio/example/cpp17/coroutines_ts/echo_server.cpp -/libs/asio/example/cpp17/coroutines_ts/echo_server_with_as_single_default.cpp -/libs/asio/example/cpp17/coroutines_ts/echo_server_with_as_tuple_default.cpp -/libs/asio/example/cpp17/coroutines_ts/echo_server_with_default.cpp -/libs/asio/example/cpp17/coroutines_ts/range_based_for.cpp -/libs/asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp -/libs/asio/.github/ -/libs/asio/.github/ISSUE_TEMPLATE/ -/libs/asio/.github/ISSUE_TEMPLATE/config.yml -/libs/asio/.github/move.yml -/libs/asio/.github/PULL_REQUEST_TEMPLATE.md -/libs/asio/index.html -/libs/asio/meta/ -/libs/asio/meta/libraries.json -/libs/asio/test/ -/libs/asio/test/archetypes/ -/libs/asio/test/archetypes/async_ops.hpp -/libs/asio/test/archetypes/async_result.hpp -/libs/asio/test/archetypes/gettable_socket_option.hpp -/libs/asio/test/archetypes/io_control_command.hpp -/libs/asio/test/archetypes/settable_socket_option.hpp -/libs/asio/test/associated_allocator.cpp -/libs/asio/test/associated_cancellation_slot.cpp -/libs/asio/test/associated_executor.cpp -/libs/asio/test/associator.cpp -/libs/asio/test/async_result.cpp -/libs/asio/test/awaitable.cpp -/libs/asio/test/basic_datagram_socket.cpp -/libs/asio/test/basic_deadline_timer.cpp -/libs/asio/test/basic_raw_socket.cpp -/libs/asio/test/basic_seq_packet_socket.cpp -/libs/asio/test/basic_serial_port.cpp -/libs/asio/test/basic_signal_set.cpp -/libs/asio/test/basic_socket_acceptor.cpp -/libs/asio/test/basic_socket.cpp -/libs/asio/test/basic_streambuf.cpp -/libs/asio/test/basic_stream_socket.cpp -/libs/asio/test/basic_waitable_timer.cpp -/libs/asio/test/bind_cancellation_slot.cpp -/libs/asio/test/bind_executor.cpp -/libs/asio/test/buffer.cpp -/libs/asio/test/buffered_read_stream.cpp -/libs/asio/test/buffered_stream.cpp -/libs/asio/test/buffered_write_stream.cpp -/libs/asio/test/buffers_iterator.cpp -/libs/asio/test/cancellation_signal.cpp -/libs/asio/test/cancellation_state.cpp -/libs/asio/test/cancellation_type.cpp -/libs/asio/test/completion_condition.cpp -/libs/asio/test/compose.cpp -/libs/asio/test/connect.cpp -/libs/asio/test/coroutine.cpp -/libs/asio/test/co_spawn.cpp -/libs/asio/test/deadline_timer.cpp -/libs/asio/test/defer.cpp -/libs/asio/test/detached.cpp -/libs/asio/test/dispatch.cpp -/libs/asio/test/error.cpp -/libs/asio/test/execution/ -/libs/asio/test/execution/any_executor.cpp -/libs/asio/test/execution/blocking_adaptation.cpp -/libs/asio/test/execution/blocking.cpp -/libs/asio/test/execution/bulk_execute.cpp -/libs/asio/test/execution/bulk_guarantee.cpp -/libs/asio/test/execution/connect.cpp -/libs/asio/test/execution/context_as.cpp -/libs/asio/test/execution_context.cpp -/libs/asio/test/execution/execute.cpp -/libs/asio/test/execution/executor.cpp -/libs/asio/test/execution/invocable_archetype.cpp -/libs/asio/test/execution/Jamfile.v2 -/libs/asio/test/execution/mapping.cpp -/libs/asio/test/execution/operation_state.cpp -/libs/asio/test/execution/outstanding_work.cpp -/libs/asio/test/execution/prefer_only.cpp -/libs/asio/test/execution/receiver.cpp -/libs/asio/test/execution/relationship.cpp -/libs/asio/test/execution/schedule.cpp -/libs/asio/test/execution/scheduler.cpp -/libs/asio/test/execution/sender.cpp -/libs/asio/test/execution/set_done.cpp -/libs/asio/test/execution/set_error.cpp -/libs/asio/test/execution/set_value.cpp -/libs/asio/test/execution/start.cpp -/libs/asio/test/execution/submit.cpp -/libs/asio/test/executor.cpp -/libs/asio/test/executor_work_guard.cpp -/libs/asio/test/experimental/ -/libs/asio/test/experimental/awaitable_operators.cpp -/libs/asio/test/experimental/coro/ -/libs/asio/test/experimental/coro/cancel.cpp -/libs/asio/test/experimental/coro/exception.cpp -/libs/asio/test/experimental/coro/Jamfile.v2 -/libs/asio/test/experimental/coro/partial.cpp -/libs/asio/test/experimental/coro/simple_test.cpp -/libs/asio/test/experimental/coro/stack_test.cpp -/libs/asio/test/experimental/coro/use_coro.cpp -/libs/asio/test/experimental/deferred.cpp -/libs/asio/test/experimental/Jamfile.v2 -/libs/asio/test/experimental/promise.cpp -/libs/asio/test/generic/ -/libs/asio/test/generic/basic_endpoint.cpp -/libs/asio/test/generic/datagram_protocol.cpp -/libs/asio/test/generic/raw_protocol.cpp -/libs/asio/test/generic/seq_packet_protocol.cpp -/libs/asio/test/generic/stream_protocol.cpp -/libs/asio/test/high_resolution_timer.cpp -/libs/asio/test/io_context.cpp -/libs/asio/test/io_context_strand.cpp -/libs/asio/test/ip/ -/libs/asio/test/ip/address.cpp -/libs/asio/test/ip/address_v4.cpp -/libs/asio/test/ip/address_v4_iterator.cpp -/libs/asio/test/ip/address_v4_range.cpp -/libs/asio/test/ip/address_v6.cpp -/libs/asio/test/ip/address_v6_iterator.cpp -/libs/asio/test/ip/address_v6_range.cpp -/libs/asio/test/ip/basic_endpoint.cpp -/libs/asio/test/ip/basic_resolver.cpp -/libs/asio/test/ip/basic_resolver_entry.cpp -/libs/asio/test/ip/basic_resolver_iterator.cpp -/libs/asio/test/ip/basic_resolver_query.cpp -/libs/asio/test/ip/host_name.cpp -/libs/asio/test/ip/icmp.cpp -/libs/asio/test/ip/multicast.cpp -/libs/asio/test/ip/network_v4.cpp -/libs/asio/test/ip/network_v6.cpp -/libs/asio/test/ip/resolver_query_base.cpp -/libs/asio/test/ip/tcp.cpp -/libs/asio/test/ip/udp.cpp -/libs/asio/test/ip/unicast.cpp -/libs/asio/test/ip/v6_only.cpp -/libs/asio/test/is_read_buffered.cpp -/libs/asio/test/is_write_buffered.cpp -/libs/asio/test/Jamfile.v2 -/libs/asio/test/latency/ -/libs/asio/test/latency/allocator.hpp -/libs/asio/test/latency/high_res_clock.hpp -/libs/asio/test/latency/Jamfile.v2 -/libs/asio/test/latency/tcp_client.cpp -/libs/asio/test/latency/tcp_server.cpp -/libs/asio/test/latency/udp_client.cpp -/libs/asio/test/latency/udp_server.cpp -/libs/asio/test/local/ -/libs/asio/test/local/basic_endpoint.cpp -/libs/asio/test/local/connect_pair.cpp -/libs/asio/test/local/datagram_protocol.cpp -/libs/asio/test/local/stream_protocol.cpp -/libs/asio/test/packaged_task.cpp -/libs/asio/test/placeholders.cpp -/libs/asio/test/posix/ -/libs/asio/test/posix/basic_descriptor.cpp -/libs/asio/test/posix/basic_stream_descriptor.cpp -/libs/asio/test/posix/descriptor_base.cpp -/libs/asio/test/posix/descriptor.cpp -/libs/asio/test/posix/stream_descriptor.cpp -/libs/asio/test/post.cpp -/libs/asio/test/properties/ -/libs/asio/test/properties/cpp03/ -/libs/asio/test/properties/cpp03/can_prefer_free_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_free_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_member_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_member_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_free_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_member_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_static.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_free_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_member_require.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_static.cpp -/libs/asio/test/properties/cpp03/can_prefer_not_preferable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_prefer_static.cpp -/libs/asio/test/properties/cpp03/can_prefer_unsupported.cpp -/libs/asio/test/properties/cpp03/can_query_free.cpp -/libs/asio/test/properties/cpp03/can_query_member.cpp -/libs/asio/test/properties/cpp03/can_query_not_applicable_free.cpp -/libs/asio/test/properties/cpp03/can_query_not_applicable_member.cpp -/libs/asio/test/properties/cpp03/can_query_not_applicable_static.cpp -/libs/asio/test/properties/cpp03/can_query_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_query_static.cpp -/libs/asio/test/properties/cpp03/can_query_unsupported.cpp -/libs/asio/test/properties/cpp03/can_require_concept_free.cpp -/libs/asio/test/properties/cpp03/can_require_concept_member.cpp -/libs/asio/test/properties/cpp03/can_require_concept_not_applicable_free.cpp -/libs/asio/test/properties/cpp03/can_require_concept_not_applicable_member.cpp -/libs/asio/test/properties/cpp03/can_require_concept_not_applicable_static.cpp -/libs/asio/test/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_require_concept_static.cpp -/libs/asio/test/properties/cpp03/can_require_concept_unsupported.cpp -/libs/asio/test/properties/cpp03/can_require_free.cpp -/libs/asio/test/properties/cpp03/can_require_member.cpp -/libs/asio/test/properties/cpp03/can_require_not_applicable_free.cpp -/libs/asio/test/properties/cpp03/can_require_not_applicable_member.cpp -/libs/asio/test/properties/cpp03/can_require_not_applicable_static.cpp -/libs/asio/test/properties/cpp03/can_require_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp03/can_require_static.cpp -/libs/asio/test/properties/cpp03/can_require_unsupported.cpp -/libs/asio/test/properties/cpp03/Jamfile.v2 -/libs/asio/test/properties/cpp03/prefer_free_prefer.cpp -/libs/asio/test/properties/cpp03/prefer_free_require.cpp -/libs/asio/test/properties/cpp03/prefer_member_prefer.cpp -/libs/asio/test/properties/cpp03/prefer_member_require.cpp -/libs/asio/test/properties/cpp03/prefer_static.cpp -/libs/asio/test/properties/cpp03/prefer_unsupported.cpp -/libs/asio/test/properties/cpp03/query_free.cpp -/libs/asio/test/properties/cpp03/query_member.cpp -/libs/asio/test/properties/cpp03/query_static.cpp -/libs/asio/test/properties/cpp03/require_concept_free.cpp -/libs/asio/test/properties/cpp03/require_concept_member.cpp -/libs/asio/test/properties/cpp03/require_concept_static.cpp -/libs/asio/test/properties/cpp03/require_free.cpp -/libs/asio/test/properties/cpp03/require_member.cpp -/libs/asio/test/properties/cpp03/require_static.cpp -/libs/asio/test/properties/cpp11/ -/libs/asio/test/properties/cpp11/can_prefer_free_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_free_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_member_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_member_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_free_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_member_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_static.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_free_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_member_require.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_static.cpp -/libs/asio/test/properties/cpp11/can_prefer_not_preferable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_prefer_static.cpp -/libs/asio/test/properties/cpp11/can_prefer_unsupported.cpp -/libs/asio/test/properties/cpp11/can_query_free.cpp -/libs/asio/test/properties/cpp11/can_query_member.cpp -/libs/asio/test/properties/cpp11/can_query_not_applicable_free.cpp -/libs/asio/test/properties/cpp11/can_query_not_applicable_member.cpp -/libs/asio/test/properties/cpp11/can_query_not_applicable_static.cpp -/libs/asio/test/properties/cpp11/can_query_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_query_static.cpp -/libs/asio/test/properties/cpp11/can_query_unsupported.cpp -/libs/asio/test/properties/cpp11/can_require_concept_free.cpp -/libs/asio/test/properties/cpp11/can_require_concept_member.cpp -/libs/asio/test/properties/cpp11/can_require_concept_not_applicable_free.cpp -/libs/asio/test/properties/cpp11/can_require_concept_not_applicable_member.cpp -/libs/asio/test/properties/cpp11/can_require_concept_not_applicable_static.cpp -/libs/asio/test/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_require_concept_static.cpp -/libs/asio/test/properties/cpp11/can_require_concept_unsupported.cpp -/libs/asio/test/properties/cpp11/can_require_free.cpp -/libs/asio/test/properties/cpp11/can_require_member.cpp -/libs/asio/test/properties/cpp11/can_require_not_applicable_free.cpp -/libs/asio/test/properties/cpp11/can_require_not_applicable_member.cpp -/libs/asio/test/properties/cpp11/can_require_not_applicable_static.cpp -/libs/asio/test/properties/cpp11/can_require_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp11/can_require_static.cpp -/libs/asio/test/properties/cpp11/can_require_unsupported.cpp -/libs/asio/test/properties/cpp11/Jamfile.v2 -/libs/asio/test/properties/cpp11/prefer_free_prefer.cpp -/libs/asio/test/properties/cpp11/prefer_free_require.cpp -/libs/asio/test/properties/cpp11/prefer_member_prefer.cpp -/libs/asio/test/properties/cpp11/prefer_member_require.cpp -/libs/asio/test/properties/cpp11/prefer_static.cpp -/libs/asio/test/properties/cpp11/prefer_unsupported.cpp -/libs/asio/test/properties/cpp11/query_free.cpp -/libs/asio/test/properties/cpp11/query_member.cpp -/libs/asio/test/properties/cpp11/query_static.cpp -/libs/asio/test/properties/cpp11/require_concept_free.cpp -/libs/asio/test/properties/cpp11/require_concept_member.cpp -/libs/asio/test/properties/cpp11/require_concept_static.cpp -/libs/asio/test/properties/cpp11/require_free.cpp -/libs/asio/test/properties/cpp11/require_member.cpp -/libs/asio/test/properties/cpp11/require_static.cpp -/libs/asio/test/properties/cpp14/ -/libs/asio/test/properties/cpp14/can_prefer_free_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_free_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_member_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_member_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_free_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_member_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_static.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_free_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_member_require.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_static.cpp -/libs/asio/test/properties/cpp14/can_prefer_not_preferable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_prefer_static.cpp -/libs/asio/test/properties/cpp14/can_prefer_unsupported.cpp -/libs/asio/test/properties/cpp14/can_query_free.cpp -/libs/asio/test/properties/cpp14/can_query_member.cpp -/libs/asio/test/properties/cpp14/can_query_not_applicable_free.cpp -/libs/asio/test/properties/cpp14/can_query_not_applicable_member.cpp -/libs/asio/test/properties/cpp14/can_query_not_applicable_static.cpp -/libs/asio/test/properties/cpp14/can_query_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_query_static.cpp -/libs/asio/test/properties/cpp14/can_query_unsupported.cpp -/libs/asio/test/properties/cpp14/can_require_concept_free.cpp -/libs/asio/test/properties/cpp14/can_require_concept_member.cpp -/libs/asio/test/properties/cpp14/can_require_concept_not_applicable_free.cpp -/libs/asio/test/properties/cpp14/can_require_concept_not_applicable_member.cpp -/libs/asio/test/properties/cpp14/can_require_concept_not_applicable_static.cpp -/libs/asio/test/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_require_concept_static.cpp -/libs/asio/test/properties/cpp14/can_require_concept_unsupported.cpp -/libs/asio/test/properties/cpp14/can_require_free.cpp -/libs/asio/test/properties/cpp14/can_require_member.cpp -/libs/asio/test/properties/cpp14/can_require_not_applicable_free.cpp -/libs/asio/test/properties/cpp14/can_require_not_applicable_member.cpp -/libs/asio/test/properties/cpp14/can_require_not_applicable_static.cpp -/libs/asio/test/properties/cpp14/can_require_not_applicable_unsupported.cpp -/libs/asio/test/properties/cpp14/can_require_static.cpp -/libs/asio/test/properties/cpp14/can_require_unsupported.cpp -/libs/asio/test/properties/cpp14/Jamfile.v2 -/libs/asio/test/properties/cpp14/prefer_free_prefer.cpp -/libs/asio/test/properties/cpp14/prefer_free_require.cpp -/libs/asio/test/properties/cpp14/prefer_member_prefer.cpp -/libs/asio/test/properties/cpp14/prefer_member_require.cpp -/libs/asio/test/properties/cpp14/prefer_static.cpp -/libs/asio/test/properties/cpp14/prefer_unsupported.cpp -/libs/asio/test/properties/cpp14/query_free.cpp -/libs/asio/test/properties/cpp14/query_member.cpp -/libs/asio/test/properties/cpp14/query_static.cpp -/libs/asio/test/properties/cpp14/require_concept_free.cpp -/libs/asio/test/properties/cpp14/require_concept_member.cpp -/libs/asio/test/properties/cpp14/require_concept_static.cpp -/libs/asio/test/properties/cpp14/require_free.cpp -/libs/asio/test/properties/cpp14/require_member.cpp -/libs/asio/test/properties/cpp14/require_static.cpp -/libs/asio/test/read_at.cpp -/libs/asio/test/read.cpp -/libs/asio/test/read_until.cpp -/libs/asio/test/redirect_error.cpp -/libs/asio/test/serial_port_base.cpp -/libs/asio/test/serial_port.cpp -/libs/asio/test/signal_set.cpp -/libs/asio/test/socket_base.cpp -/libs/asio/test/ssl/ -/libs/asio/test/ssl/context_base.cpp -/libs/asio/test/ssl/context.cpp -/libs/asio/test/ssl/error.cpp -/libs/asio/test/ssl/host_name_verification.cpp -/libs/asio/test/ssl/Jamfile.v2 -/libs/asio/test/ssl/rfc2818_verification.cpp -/libs/asio/test/ssl/stream_base.cpp -/libs/asio/test/ssl/stream.cpp -/libs/asio/test/static_thread_pool.cpp -/libs/asio/test/steady_timer.cpp -/libs/asio/test/strand.cpp -/libs/asio/test/streambuf.cpp -/libs/asio/test/system_context.cpp -/libs/asio/test/system_executor.cpp -/libs/asio/test/system_timer.cpp -/libs/asio/test/this_coro.cpp -/libs/asio/test/thread_pool.cpp -/libs/asio/test/time_traits.cpp -/libs/asio/test/ts/ -/libs/asio/test/ts/buffer.cpp -/libs/asio/test/ts/executor.cpp -/libs/asio/test/ts/internet.cpp -/libs/asio/test/ts/io_context.cpp -/libs/asio/test/ts/net.cpp -/libs/asio/test/ts/netfwd.cpp -/libs/asio/test/ts/socket.cpp -/libs/asio/test/ts/timer.cpp -/libs/asio/test/unit_test.hpp -/libs/asio/test/use_awaitable.cpp -/libs/asio/test/use_future.cpp -/libs/asio/test/uses_executor.cpp -/libs/asio/test/wait_traits.cpp -/libs/asio/test/windows/ -/libs/asio/test/windows/basic_object_handle.cpp -/libs/asio/test/windows/basic_overlapped_handle.cpp -/libs/asio/test/windows/basic_random_access_handle.cpp -/libs/asio/test/windows/basic_stream_handle.cpp -/libs/asio/test/windows/object_handle.cpp -/libs/asio/test/windows/overlapped_handle.cpp -/libs/asio/test/windows/overlapped_ptr.cpp -/libs/asio/test/windows/random_access_handle.cpp -/libs/asio/test/windows/stream_handle.cpp -/libs/asio/test/write_at.cpp -/libs/asio/test/write.cpp -/libs/asio/tools/ -/libs/asio/tools/handlerlive.pl -/libs/asio/tools/handlertree.pl -/libs/asio/tools/handlerviz.pl -/libs/system/ -/libs/system/appveyor.yml -/libs/system/build/ -/libs/system/build/Jamfile -/libs/system/build/Jamfile.v2 -/libs/system/CMakeLists.txt -/libs/system/doc/ -/libs/system/doc/Jamfile -/libs/system/doc/system/ -/libs/system/doc/system/acknowledgements.adoc -/libs/system/doc/system.adoc -/libs/system/doc/system/changes.adoc -/libs/system/doc/system/copyright.adoc -/libs/system/doc/system-docinfo-footer.html -/libs/system/doc/system/history.adoc -/libs/system/doc/system/introduction.adoc -/libs/system/doc/system/rationale.adoc -/libs/system/doc/system/reference.adoc -/libs/system/.github/ -/libs/system/.github/workflows/ -/libs/system/.github/workflows/ci.yml -/libs/system/index.html -/libs/system/meta/ -/libs/system/meta/libraries.json -/libs/system/src/ -/libs/system/src/error_code.cpp -/libs/system/test/ -/libs/system/test/after_main_test.cpp -/libs/system/test/before_main_test.cpp -/libs/system/test/cmake_install_test/ -/libs/system/test/cmake_install_test/CMakeLists.txt -/libs/system/test/cmake_install_test/main.cpp -/libs/system/test/CMakeLists.txt -/libs/system/test/cmake_subdir_test/ -/libs/system/test/cmake_subdir_test/CMakeLists.txt -/libs/system/test/config_test.cpp -/libs/system/test/constexpr_test.cpp -/libs/system/test/cygwin_error_test.cpp -/libs/system/test/dynamic_link_test.cpp -/libs/system/test/errc_test2.cpp -/libs/system/test/errc_test3.cpp -/libs/system/test/errc_test.cpp -/libs/system/test/error_category_test2.cpp -/libs/system/test/error_category_test.cpp -/libs/system/test/error_code_test.cpp -/libs/system/test/error_code_user_test.cpp -/libs/system/test/error_condition_test2.cpp -/libs/system/test/error_condition_test.cpp -/libs/system/test/failed_constexpr_test.cpp -/libs/system/test/failed_test.cpp -/libs/system/test/generic_category_test2.cpp -/libs/system/test/generic_category_test3.cpp -/libs/system/test/generic_category_test.cpp -/libs/system/test/header_only_test.cpp -/libs/system/test/initialization_test.cpp -/libs/system/test/is_error_code_enum_test.cpp -/libs/system/test/is_error_condition_enum_test.cpp -/libs/system/test/Jamfile.v2 -/libs/system/test/linux_error_test.cpp -/libs/system/test/msvc/ -/libs/system/test/msvc/common.props -/libs/system/test/msvc/config_test/ -/libs/system/test/msvc/config_test/config_test.vcxproj -/libs/system/test/msvc/error_code_test/ -/libs/system/test/msvc/error_code_test/error_code_test.vcxproj -/libs/system/test/msvc/header_only_error_code_test/ -/libs/system/test/msvc/header_only_error_code_test/header_only_error_code_test.vcxproj -/libs/system/test/msvc/header_only_test/ -/libs/system/test/msvc/header_only_test/header_only_test.vcxproj -/libs/system/test/msvc/std_interop_test/ -/libs/system/test/msvc/std_interop_test/std_interop_test.vcxproj -/libs/system/test/msvc/system-dll/ -/libs/system/test/msvc/system-dll/system-dll.vcxproj -/libs/system/test/msvc/system.sln -/libs/system/test/quick.cpp -/libs/system/test/single_instance_1.cpp -/libs/system/test/single_instance_2.cpp -/libs/system/test/single_instance_test.cpp -/libs/system/test/snprintf_test.cpp -/libs/system/test/std_interop_test2.cpp -/libs/system/test/std_interop_test3.cpp -/libs/system/test/std_interop_test4.cpp -/libs/system/test/std_interop_test5.cpp -/libs/system/test/std_interop_test6.cpp -/libs/system/test/std_interop_test7.cpp -/libs/system/test/std_interop_test8.cpp -/libs/system/test/std_interop_test9.cpp -/libs/system/test/std_interop_test.cpp -/libs/system/test/std_mismatch_test.cpp -/libs/system/test/std_single_instance_1.cpp -/libs/system/test/std_single_instance_2.cpp -/libs/system/test/std_single_instance_test.cpp -/libs/system/test/system_category_test2.cpp -/libs/system/test/system_category_test3.cpp -/libs/system/test/system_category_test.cpp -/libs/system/test/system_error_test.cpp -/libs/system/test/throws_assign_fail.cpp -/libs/system/test/throw_test.cpp -/libs/system/test/warnings_test.cpp -/libs/system/test/win32_hresult_test.cpp -/libs/system/test/windows_error_test.cpp -/libs/system/.travis.yml -/README.txt diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/boostify.pl b/Plugins/GameLiftServerSDK/ThirdParty/asio/boostify.pl deleted file mode 100644 index d2ebc7f4..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/boostify.pl +++ /dev/null @@ -1,655 +0,0 @@ -#!/usr/bin/perl -w - -use strict; -use File::Path; - -our $boost_dir = "boostified"; - -sub print_line -{ - my ($output, $line, $from, $lineno) = @_; - - # Warn if the resulting line is >80 characters wide. - if (length($line) > 80) - { - if ($from =~ /\.[chi]pp$/) - { - print("Warning: $from:$lineno: output >80 characters wide.\n"); - } - } - - # Write the output. - print($output $line . "\n"); -} - -sub source_contains_asio_thread_usage -{ - my ($from) = @_; - - # Open the input file. - open(my $input, "<$from") or die("Can't open $from for reading"); - - # Check file for use of asio::thread. - while (my $line = <$input>) - { - chomp($line); - if ($line =~ /asio::thread/) - { - close($input); - return 1; - } - elsif ($line =~ /^ *thread /) - { - close($input); - return 1; - } - } - - close($input); - return 0; -} - -sub source_contains_asio_include -{ - my ($from) = @_; - - # Open the input file. - open(my $input, "<$from") or die("Can't open $from for reading"); - - # Check file for inclusion of asio.hpp. - while (my $line = <$input>) - { - chomp($line); - if ($line =~ /# *include [<"]asio\.hpp[>"]/) - { - close($input); - return 1; - } - } - - close($input); - return 0; -} - -sub copy_source_file -{ - my ($from, $to) = @_; - - # Ensure the output directory exists. - my $dir = $to; - $dir =~ s/[^\/]*$//; - mkpath($dir); - - # First determine whether the file makes any use of asio::thread. - my $uses_asio_thread = source_contains_asio_thread_usage($from); - - my $includes_asio = source_contains_asio_include($from); - - my $is_asio_hpp = 0; - $is_asio_hpp = 1 if ($from =~ /asio\.hpp/); - - my $needs_doc_link = 0; - $needs_doc_link = 1 if ($is_asio_hpp); - - my $is_error_hpp = 0; - $is_error_hpp = 1 if ($from =~ /asio\/error\.hpp/); - - my $is_qbk = 0; - $is_qbk = 1 if ($from =~ /.qbk$/); - - my $is_xsl = 0; - $is_xsl = 1 if ($from =~ /.xsl$/); - - my $is_test = 0; - $is_test = 1 if ($from =~ /tests\/unit/); - - my $is_coroutine_related = 0; - $is_coroutine_related = 1 if ($from =~ /await/ || $from =~ /partial_promise/); - - my $is_hash_related = 0; - $is_hash_related = 1 if ($from =~ /ip\/address/ || $from =~ /ip\/basic_endpoint/); - - # Open the files. - open(my $input, "<$from") or die("Can't open $from for reading"); - open(my $output, ">$to") or die("Can't open $to for writing"); - - # Copy the content. - my $lineno = 1; - while (my $line = <$input>) - { - chomp($line); - - # Unconditional replacements. - $line =~ s/[\\@]ref boost_bind/boost::bind()/g; - if ($from =~ /.*\.txt$/) - { - $line =~ s/[\\@]ref async_read/boost::asio::async_read()/g; - $line =~ s/[\\@]ref async_write/boost::asio::async_write()/g; - } - if ($line =~ /asio_detail_posix_thread_function/) - { - $line =~ s/asio_detail_posix_thread_function/boost_asio_detail_posix_thread_function/g; - } - if ($line =~ /asio_signal_handler/) - { - $line =~ s/asio_signal_handler/boost_asio_signal_handler/g; - } - if ($line =~ /ASIO_/ && !($line =~ /BOOST_ASIO_/)) - { - $line =~ s/ASIO_/BOOST_ASIO_/g; - } - - # Extra replacements for quickbook and XSL source only. - if ($is_qbk || $is_xsl) - { - $line =~ s/asio\.examples/boost_asio.examples/g; - $line =~ s/asio\.history/boost_asio.history/g; - $line =~ s/asio\.index/boost_asio.index/g; - $line =~ s/asio\.net_ts/boost_asio.net_ts/g; - $line =~ s/asio\.std_executors/boost_asio.std_executors/g; - $line =~ s/asio\.overview/boost_asio.overview/g; - $line =~ s/asio\.reference/boost_asio.reference/g; - $line =~ s/asio\.tutorial/boost_asio.tutorial/g; - $line =~ s/asio\.using/boost_asio.using/g; - $line =~ s/Asio/Boost.Asio/g; - $line =~ s/changes made in each release/changes made in each Boost release/g; - $line =~ s/\[\$/[\$boost_asio\//g; - $line =~ s/\[@\.\.\/src\/examples/[\@boost_asio\/example/g; - $line =~ s/include\/asio/boost\/asio/g; - $line =~ s/\^asio/^boost\/asio/g; - $line =~ s/namespaceasio/namespaceboost_1_1asio/g; - $line =~ s/ \(\[\@examples\/diffs.*$//; - } - - # Conditional replacements. - if ($line =~ /^( *)namespace asio \{/) - { - if ($is_qbk) - { - print_line($output, $1 . "namespace boost { namespace asio {", $from, $lineno); - } - else - { - print_line($output, $1 . "namespace boost {", $from, $lineno); - print_line($output, $line, $from, $lineno); - } - } - elsif ($line =~ /^( *)} \/\/ namespace asio$/) - { - if ($is_qbk) - { - print_line($output, $1 . "} } // namespace boost::asio", $from, $lineno); - } - else - { - print_line($output, $line, $from, $lineno); - print_line($output, $1 . "} // namespace boost", $from, $lineno); - } - } - elsif ($line =~ /^(# *include )[<"](asio\.hpp)[>"]$/) - { - print_line($output, $1 . "", $from, $lineno); - if ($uses_asio_thread) - { - print_line($output, $1 . "", $from, $lineno) if (!$is_test); - $uses_asio_thread = 0; - } - } - elsif ($line =~ /^(# *include )[<"]boost\/.*[>"].*$/) - { - if (!$includes_asio && $uses_asio_thread) - { - print_line($output, $1 . "", $from, $lineno) if (!$is_test); - $uses_asio_thread = 0; - } - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /^(# *include )[<"]asio\/thread\.hpp[>"]/) - { - if ($is_test) - { - print_line($output, $1 . "", $from, $lineno); - } - else - { - # Line is removed. - } - } - elsif ($line =~ /(# *include )[<"]asio\/error_code\.hpp[>"]/) - { - if ($is_asio_hpp) - { - # Line is removed. - } - else - { - print_line($output, $1 . "", $from, $lineno) if ($is_error_hpp); - print_line($output, $1 . "", $from, $lineno); - } - } - elsif ($line =~ /# *include [<"]asio\/impl\/error_code\.[hi]pp[>"]/) - { - # Line is removed. - } - elsif ($line =~ /(# *include )[<"]asio\/system_error\.hpp[>"]/) - { - if ($is_asio_hpp) - { - # Line is removed. - } - else - { - print_line($output, $1 . "", $from, $lineno); - } - } - elsif ($line =~ /(^.*# *include )[<"](asio\/[^>"]*)[>"](.*)$/) - { - print_line($output, $1 . "" . $3, $from, $lineno); - } - elsif ($line =~ /#.*defined\(.*ASIO_HAS_STD_SYSTEM_ERROR\)$/) - { - # Line is removed. - } - elsif ($line =~ /asio::thread\b/) - { - if ($is_test) - { - $line =~ s/asio::thread/asio::detail::thread/g; - } - else - { - $line =~ s/asio::thread/boost::thread/g; - } - if (!($line =~ /boost::asio::/)) - { - $line =~ s/asio::/boost::asio::/g; - } - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /^( *)thread( .*)$/ && !$is_qbk) - { - if ($is_test) - { - print_line($output, $1 . "boost::asio::detail::thread" . $2, $from, $lineno); - } - else - { - print_line($output, $1 . "boost::thread" . $2, $from, $lineno); - } - } - elsif ($line =~ /namespace std \{ *$/ && !$is_coroutine_related && !$is_hash_related) - { - print_line($output, "namespace boost {", $from, $lineno); - print_line($output, "namespace system {", $from, $lineno); - } - elsif ($line =~ /std::error_code/) - { - $line =~ s/std::error_code/boost::system::error_code/g; - $line =~ s/asio::/boost::asio::/g if !$is_xsl; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /^} \/\/ namespace std/ && !$is_coroutine_related && !$is_hash_related) - { - print_line($output, "} // namespace system", $from, $lineno); - print_line($output, "} // namespace boost", $from, $lineno); - } - elsif ($line =~ /asio::/ && !($line =~ /boost::asio::/)) - { - $line =~ s/asio::error_code/boost::system::error_code/g; - $line =~ s/asio::error_category/boost::system::error_category/g; - $line =~ s/asio::system_category/boost::system::system_category/g; - $line =~ s/asio::system_error/boost::system::system_error/g; - $line =~ s/asio::/boost::asio::/g if !$is_xsl; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /using namespace asio/) - { - $line =~ s/using namespace asio/using namespace boost::asio/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /asio_handler_alloc_helpers/) - { - $line =~ s/asio_handler_alloc_helpers/boost_asio_handler_alloc_helpers/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /asio_handler_cont_helpers/) - { - $line =~ s/asio_handler_cont_helpers/boost_asio_handler_cont_helpers/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /asio_handler_invoke_helpers/) - { - $line =~ s/asio_handler_invoke_helpers/boost_asio_handler_invoke_helpers/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /asio_(prefer|query|require|require_concept)_fn/) - { - $line =~ s/asio_(prefer|query|require|require_concept)_fn/boost_asio_$1_fn/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /asio_execution_/ && !($line =~ /_is_unspecialised/)) - { - $line =~ s/asio_execution_/boost_asio_execution_/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /[\\@]ref boost_bind/) - { - $line =~ s/[\\@]ref boost_bind/boost::bind()/g; - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /( *)\[category template\]/) - { - print_line($output, $1 . "[authors [Kohlhoff, Christopher]]", $from, $lineno); - print_line($output, $line, $from, $lineno); - } - elsif ($line =~ /boostify: non-boost docs start here/) - { - while ($line = <$input>) - { - last if $line =~ /boostify: non-boost docs end here/; - } - } - elsif ($line =~ /boostify: non-boost code starts here/) - { - while ($line = <$input>) - { - last if $line =~ /boostify: non-boost code ends here/; - } - } - elsif ($line =~ /^$/ && $needs_doc_link) - { - $needs_doc_link = 0; - print_line($output, "// See www.boost.org/libs/asio for documentation.", $from, $lineno); - print_line($output, "//", $from, $lineno); - print_line($output, $line, $from, $lineno); - } - else - { - print_line($output, $line, $from, $lineno); - } - ++$lineno; - } - - # Ok, we're done. - close($input); - close($output); -} - -sub copy_include_files -{ - my @dirs = ( - "include", - "include/asio", - "include/asio/detail", - "include/asio/detail/impl", - "include/asio/execution", - "include/asio/execution/detail", - "include/asio/execution/impl", - "include/asio/experimental", - "include/asio/experimental/detail", - "include/asio/experimental/impl", - "include/asio/generic", - "include/asio/generic/detail", - "include/asio/generic/detail/impl", - "include/asio/impl", - "include/asio/ip", - "include/asio/ip/impl", - "include/asio/ip/detail", - "include/asio/ip/detail/impl", - "include/asio/local", - "include/asio/local/detail", - "include/asio/local/detail/impl", - "include/asio/posix", - "include/asio/ssl", - "include/asio/ssl/detail", - "include/asio/ssl/detail/impl", - "include/asio/ssl/impl", - "include/asio/ssl/old", - "include/asio/ssl/old/detail", - "include/asio/traits", - "include/asio/ts", - "include/asio/windows"); - - foreach my $dir (@dirs) - { - our $boost_dir; - my @files = ( glob("$dir/*.hpp"), glob("$dir/*.ipp") ); - foreach my $file (@files) - { - if ($file ne "include/asio/thread.hpp" - and $file ne "include/asio/error_code.hpp" - and $file ne "include/asio/system_error.hpp" - and $file ne "include/asio/impl/error_code.hpp" - and $file ne "include/asio/impl/error_code.ipp") - { - my $from = $file; - my $to = $file; - $to =~ s/^include\//$boost_dir\/libs\/asio\/include\/boost\//; - copy_source_file($from, $to); - } - } - } -} - -sub create_lib_directory -{ - my @dirs = ( - "doc", - "example", - "test"); - - our $boost_dir; - foreach my $dir (@dirs) - { - mkpath("$boost_dir/libs/asio/$dir"); - } -} - -sub copy_unit_tests -{ - my @dirs = ( - "src/tests/unit", - "src/tests/unit/archetypes", - "src/tests/unit/execution", - "src/tests/unit/experimental", - "src/tests/unit/experimental/coro", - "src/tests/unit/generic", - "src/tests/unit/ip", - "src/tests/unit/local", - "src/tests/unit/posix", - "src/tests/unit/ssl", - "src/tests/unit/ts", - "src/tests/unit/windows"); - - our $boost_dir; - foreach my $dir (@dirs) - { - my @files = ( glob("$dir/*.*pp"), glob("$dir/Jamfile*") ); - foreach my $file (@files) - { - if ($file ne "src/tests/unit/thread.cpp" - and $file ne "src/tests/unit/error_handler.cpp" - and $file ne "src/tests/unit/unit_test.cpp") - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/tests\/unit\//$boost_dir\/libs\/asio\/test\//; - copy_source_file($from, $to); - } - } - } -} - -sub copy_latency_tests -{ - my @dirs = ( - "src/tests/latency"); - - our $boost_dir; - foreach my $dir (@dirs) - { - my @files = ( glob("$dir/*.*pp"), glob("$dir/Jamfile*") ); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/tests\/latency\//$boost_dir\/libs\/asio\/test\/latency\//; - copy_source_file($from, $to); - } - } -} - -sub copy_properties_tests -{ - my @dirs = ( - "src/tests/properties/cpp03", - "src/tests/properties/cpp11", - "src/tests/properties/cpp14"); - - our $boost_dir; - foreach my $dir (@dirs) - { - my @files = ( glob("$dir/*.*pp"), glob("$dir/Jamfile*") ); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/tests\/properties\//$boost_dir\/libs\/asio\/test\/properties\//; - copy_source_file($from, $to); - } - } -} - -sub copy_examples -{ - my @dirs = ( - "src/examples/cpp03/allocation", - "src/examples/cpp03/buffers", - "src/examples/cpp03/chat", - "src/examples/cpp03/echo", - "src/examples/cpp03/fork", - "src/examples/cpp03/http/client", - "src/examples/cpp03/http/doc_root", - "src/examples/cpp03/http/server", - "src/examples/cpp03/http/server2", - "src/examples/cpp03/http/server3", - "src/examples/cpp03/http/server4", - "src/examples/cpp03/icmp", - "src/examples/cpp03/invocation", - "src/examples/cpp03/iostreams", - "src/examples/cpp03/local", - "src/examples/cpp03/multicast", - "src/examples/cpp03/nonblocking", - "src/examples/cpp03/porthopper", - "src/examples/cpp03/serialization", - "src/examples/cpp03/services", - "src/examples/cpp03/socks4", - "src/examples/cpp03/spawn", - "src/examples/cpp03/ssl", - "src/examples/cpp03/timeouts", - "src/examples/cpp03/timers", - "src/examples/cpp03/tutorial", - "src/examples/cpp03/tutorial/daytime1", - "src/examples/cpp03/tutorial/daytime2", - "src/examples/cpp03/tutorial/daytime3", - "src/examples/cpp03/tutorial/daytime4", - "src/examples/cpp03/tutorial/daytime5", - "src/examples/cpp03/tutorial/daytime6", - "src/examples/cpp03/tutorial/daytime7", - "src/examples/cpp03/tutorial/timer1", - "src/examples/cpp03/tutorial/timer2", - "src/examples/cpp03/tutorial/timer3", - "src/examples/cpp03/tutorial/timer4", - "src/examples/cpp03/tutorial/timer5", - "src/examples/cpp03/windows", - "src/examples/cpp11/allocation", - "src/examples/cpp11/buffers", - "src/examples/cpp11/chat", - "src/examples/cpp11/echo", - "src/examples/cpp11/executors", - "src/examples/cpp11/fork", - "src/examples/cpp11/futures", - "src/examples/cpp11/handler_tracking", - "src/examples/cpp11/http/server", - "src/examples/cpp11/invocation", - "src/examples/cpp11/iostreams", - "src/examples/cpp11/local", - "src/examples/cpp11/multicast", - "src/examples/cpp11/nonblocking", - "src/examples/cpp11/operations", - "src/examples/cpp11/socks4", - "src/examples/cpp11/spawn", - "src/examples/cpp11/ssl", - "src/examples/cpp11/timeouts", - "src/examples/cpp11/timers", - "src/examples/cpp14/deferred", - "src/examples/cpp14/executors", - "src/examples/cpp14/iostreams", - "src/examples/cpp14/operations", - "src/examples/cpp14/parallel_group", - "src/examples/cpp17/coroutines_ts"); - - our $boost_dir; - foreach my $dir (@dirs) - { - my @files = ( - glob("$dir/*.*pp"), - glob("$dir/*.html"), - glob("$dir/Jamfile*"), - glob("$dir/*.pem"), - glob("$dir/README*"), - glob("$dir/*.txt")); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/examples\//$boost_dir\/libs\/asio\/example\//; - copy_source_file($from, $to); - } - } -} - -sub copy_doc -{ - our $boost_dir; - my @files = ( - "src/doc/asio.qbk", - "src/doc/examples.qbk", - "src/doc/net_ts.qbk", - "src/doc/overview.qbk", - "src/doc/reference.xsl", - "src/doc/std_executors.qbk", - "src/doc/tutorial.xsl", - glob("src/doc/overview/*.qbk"), - glob("src/doc/requirements/*.qbk")); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/doc\//$boost_dir\/libs\/asio\/doc\//; - copy_source_file($from, $to); - } -} - -sub copy_tools -{ - our $boost_dir; - my @files = ( - glob("src/tools/*.pl")); - foreach my $file (@files) - { - my $from = $file; - my $to = $file; - $to =~ s/^src\/tools\//$boost_dir\/libs\/asio\/tools\//; - copy_source_file($from, $to); - } -} - -copy_include_files(); -create_lib_directory(); -copy_unit_tests(); -copy_latency_tests(); -copy_properties_tests(); -copy_examples(); -copy_doc(); -copy_tools(); diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/configure.ac b/Plugins/GameLiftServerSDK/ThirdParty/asio/configure.ac deleted file mode 100644 index 036e41a1..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/configure.ac +++ /dev/null @@ -1,243 +0,0 @@ -AC_INIT(asio, [1.20.0]) -AC_CONFIG_SRCDIR(include/asio.hpp) -AM_MAINTAINER_MODE -AM_INIT_AUTOMAKE([tar-ustar]) - -AC_CANONICAL_HOST -AM_PROG_CC_C_O -AC_PROG_CXX -AC_LANG(C++) -AC_PROG_RANLIB - -AC_DEFINE(_REENTRANT, [1], [Define this]) - -AC_ARG_WITH(boost, - AC_HELP_STRING([--with-boost=DIR],[location of boost distribution]), -[ - if test "${withval}" = no; then - STANDALONE="yes" - else - if test "${withval}" != system; then - CPPFLAGS="$CPPFLAGS -I${withval}" - LIBS="$LIBS -L${withval}/stage/lib" - fi - CPPFLAGS="$CPPFLAGS -DASIO_ENABLE_BOOST -DBOOST_CHRONO_HEADER_ONLY -DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING" - fi -], -[ - STANDALONE="yes" -]) - -AC_ARG_ENABLE(separate-compilation, -[ --enable-separate-compilation separate compilation of asio source], -[ - SEPARATE_COMPILATION=yes -]) - -AC_ARG_ENABLE(boost-coroutine, -[ --enable-boost-coroutine use Boost.Coroutine to implement stackful coroutines], -[ - HAVE_BOOST_COROUTINE=yes -]) - -if test "$STANDALONE" != yes; then - AC_CHECK_HEADER([boost/noncopyable.hpp],, - [ - echo "Can't find boost headers. Please check the location of the boost" - echo "distribution and rerun configure using the --with-boost=DIR option." - echo "Alternatively, run with --without-boost to enable standalone build." - exit 1 - ],[]) -fi - -AC_ARG_WITH(openssl, - AC_HELP_STRING([--with-openssl=DIR],[location of openssl]), -[ - CPPFLAGS="$CPPFLAGS -I${withval}/include" - LIBS="$LIBS -L${withval}/lib" -],[]) - -AC_CHECK_HEADER([openssl/ssl.h],, -[ - OPENSSL_FOUND=no -],[]) - -if test x$OPENSSL_FOUND != xno; then - LIBS="$LIBS -lssl -lcrypto" -fi - -AM_CONDITIONAL(HAVE_OPENSSL,test x$OPENSSL_FOUND != xno) - -WINDOWS=no -case $host in - *-*-linux*) - CXXFLAGS="$CXXFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - LIBS="$LIBS -lrt" - ;; - *-*-solaris*) - if test "$GXX" = yes; then - CXXFLAGS="$CXXFLAGS -D_PTHREADS" - else - # We'll assume Sun's CC. - CXXFLAGS="$CXXFLAGS -mt" - fi - LIBS="$LIBS -lsocket -lnsl -lpthread" - ;; - *-*-mingw32*) - CXXFLAGS="$CXXFLAGS -mthreads" - LDFLAGS="$LDFLAGS -mthreads" - LIBS="$LIBS -lws2_32 -lmswsock" - WINDOWS=yes - ;; - *-*-mingw64*) - CXXFLAGS="$CXXFLAGS -mthreads" - LDFLAGS="$LDFLAGS -mthreads" - LIBS="$LIBS -lws2_32 -lmswsock" - WINDOWS=yes - ;; - *-pc-cygwin*) - CXXFLAGS="$CXXFLAGS -D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0601" - LIBS="$LIBS -lws2_32 -lmswsock" - WINDOWS=yes - ;; - *-apple-darwin*) - CXXFLAGS="$CXXFLAGS" - LDFLAGS="$LDFLAGS" - ;; - *-*-freebsd*) - CXXFLAGS="$CXXFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - ;; - *-*-netbsd*) - CXXFLAGS="$CXXFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" - ;; - *-*-haiku*) - CXXFLAGS="$CXXFLAGS -lnetwork" - LDFLAGS="$LDFLAGS -lnetwork" - -esac - -if test "$GXX" = yes; then - CXXFLAGS="$CXXFLAGS -ftemplate-depth-256" -fi - -if test "$STANDALONE" = yes; then - CPPFLAGS="$CPPFLAGS -DASIO_STANDALONE" -fi - -if test "$SEPARATE_COMPILATION" = yes; then - CPPFLAGS="$CPPFLAGS -DASIO_SEPARATE_COMPILATION" -fi - -AC_MSG_CHECKING([whether C++11 is enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if __cplusplus < 201103L]] - [[#error C++11 not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_CXX11=yes;], - [AC_MSG_RESULT([no]) - HAVE_CXX11=no;]) - -AC_MSG_CHECKING([whether C++14 is enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if defined(__GNUC__) && !defined(__clang__)]] - [[# if (__GNUC__ <= 6)]] - [[# error C++14 support on this compiler not sufficiently compliant]] - [[# endif]] - [[#endif]] - [[#if __cplusplus < 201402L]] - [[#error C++14 not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_CXX14=yes;], - [AC_MSG_RESULT([no]) - HAVE_CXX14=no;]) - -AC_MSG_CHECKING([whether C++17 is enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if __cplusplus < 201703L]] - [[#error C++17 not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_CXX17=yes;], - [AC_MSG_RESULT([no]) - HAVE_CXX17=no;]) - -AC_MSG_CHECKING([whether C++20 is enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if __cplusplus < 202002L]] - [[#error C++20 not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_CXX20=yes;], - [AC_MSG_RESULT([no]) - HAVE_CXX20=no;]) - -AC_MSG_CHECKING([whether coroutines are enabled]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#if defined(__clang__)]] - [[# if (__cplusplus >= 201703) && (__cpp_coroutines >= 201703)]] - [[# if __has_include()]] - [[# define ASIO_HAS_CO_AWAIT 1]] - [[# endif]] - [[# endif]] - [[#elif defined(__GNUC__)]] - [[# if (__cplusplus >= 201709) && (__cpp_impl_coroutine >= 201902)]] - [[# if __has_include()]] - [[# define ASIO_HAS_CO_AWAIT 1]] - [[# endif]] - [[# endif]] - [[#endif]] - [[#ifndef ASIO_HAS_CO_AWAIT]] - [[# error coroutines not available]] - [[#endif]])], - [AC_MSG_RESULT([yes]) - HAVE_COROUTINES=yes;], - [AC_MSG_RESULT([no]) - HAVE_COROUTINES=no;]) - -if test "$GXX" = yes; then - if test "$STANDALONE" = yes; then - if test "$HAVE_CXX11" = no; then - HAVE_CXX11=yes - CPPFLAGS="-std=c++0x $CPPFLAGS" - fi - fi -fi - -AM_CONDITIONAL(STANDALONE,test x$STANDALONE = xyes) - -AM_CONDITIONAL(SEPARATE_COMPILATION,test x$SEPARATE_COMPILATION = xyes) - -AM_CONDITIONAL(HAVE_BOOST_COROUTINE,test x$HAVE_BOOST_COROUTINE = xyes) - -AM_CONDITIONAL(WINDOWS_TARGET,test x$WINDOWS != xno) - -AM_CONDITIONAL(HAVE_CXX11,test x$HAVE_CXX11 = xyes) - -AM_CONDITIONAL(HAVE_CXX14,test x$HAVE_CXX14 = xyes) - -AM_CONDITIONAL(HAVE_CXX17,test x$HAVE_CXX17 = xyes) - -AM_CONDITIONAL(HAVE_CXX20,test x$HAVE_CXX20 = xyes) - -AM_CONDITIONAL(HAVE_COROUTINES,test x$HAVE_COROUTINES = xyes) - -AC_OUTPUT([ - Makefile - include/Makefile - src/Makefile - src/tests/Makefile - src/tests/properties/Makefile - src/examples/cpp03/Makefile - src/examples/cpp11/Makefile - src/examples/cpp14/Makefile - src/examples/cpp17/Makefile]) diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/.gitignore b/Plugins/GameLiftServerSDK/ThirdParty/asio/include/.gitignore deleted file mode 100644 index 282522db..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/Makefile.am b/Plugins/GameLiftServerSDK/ThirdParty/asio/include/Makefile.am deleted file mode 100644 index 74933ee7..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/Makefile.am +++ /dev/null @@ -1,593 +0,0 @@ -# find . -name "*.*pp" | sed -e 's/^\.\///' | sed -e 's/^.*$/ & \\/' | sort -nobase_include_HEADERS = \ - asio/any_io_executor.hpp \ - asio/associated_allocator.hpp \ - asio/associated_cancellation_slot.hpp \ - asio/associated_executor.hpp \ - asio/associator.hpp \ - asio/async_result.hpp \ - asio/awaitable.hpp \ - asio/basic_datagram_socket.hpp \ - asio/basic_deadline_timer.hpp \ - asio/basic_io_object.hpp \ - asio/basic_raw_socket.hpp \ - asio/basic_seq_packet_socket.hpp \ - asio/basic_serial_port.hpp \ - asio/basic_signal_set.hpp \ - asio/basic_socket_acceptor.hpp \ - asio/basic_socket.hpp \ - asio/basic_socket_iostream.hpp \ - asio/basic_socket_streambuf.hpp \ - asio/basic_streambuf_fwd.hpp \ - asio/basic_streambuf.hpp \ - asio/basic_stream_socket.hpp \ - asio/basic_waitable_timer.hpp \ - asio/bind_cancellation_slot.hpp \ - asio/bind_executor.hpp \ - asio/buffered_read_stream_fwd.hpp \ - asio/buffered_read_stream.hpp \ - asio/buffered_stream_fwd.hpp \ - asio/buffered_stream.hpp \ - asio/buffered_write_stream_fwd.hpp \ - asio/buffered_write_stream.hpp \ - asio/buffer.hpp \ - asio/buffers_iterator.hpp \ - asio/cancellation_signal.hpp \ - asio/cancellation_state.hpp \ - asio/cancellation_type.hpp \ - asio/co_spawn.hpp \ - asio/completion_condition.hpp \ - asio/compose.hpp \ - asio/connect.hpp \ - asio/coroutine.hpp \ - asio/deadline_timer.hpp \ - asio/defer.hpp \ - asio/detached.hpp \ - asio/detail/array_fwd.hpp \ - asio/detail/array.hpp \ - asio/detail/assert.hpp \ - asio/detail/atomic_count.hpp \ - asio/detail/base_from_cancellation_state.hpp \ - asio/detail/base_from_completion_cond.hpp \ - asio/detail/bind_handler.hpp \ - asio/detail/blocking_executor_op.hpp \ - asio/detail/buffered_stream_storage.hpp \ - asio/detail/buffer_resize_guard.hpp \ - asio/detail/buffer_sequence_adapter.hpp \ - asio/detail/bulk_executor_op.hpp \ - asio/detail/call_stack.hpp \ - asio/detail/chrono.hpp \ - asio/detail/chrono_time_traits.hpp \ - asio/detail/completion_handler.hpp \ - asio/detail/concurrency_hint.hpp \ - asio/detail/conditionally_enabled_event.hpp \ - asio/detail/conditionally_enabled_mutex.hpp \ - asio/detail/config.hpp \ - asio/detail/consuming_buffers.hpp \ - asio/detail/cstddef.hpp \ - asio/detail/cstdint.hpp \ - asio/detail/date_time_fwd.hpp \ - asio/detail/deadline_timer_service.hpp \ - asio/detail/dependent_type.hpp \ - asio/detail/descriptor_ops.hpp \ - asio/detail/descriptor_read_op.hpp \ - asio/detail/descriptor_write_op.hpp \ - asio/detail/dev_poll_reactor.hpp \ - asio/detail/epoll_reactor.hpp \ - asio/detail/eventfd_select_interrupter.hpp \ - asio/detail/event.hpp \ - asio/detail/executor_function.hpp \ - asio/detail/executor_op.hpp \ - asio/detail/fd_set_adapter.hpp \ - asio/detail/fenced_block.hpp \ - asio/detail/functional.hpp \ - asio/detail/future.hpp \ - asio/detail/gcc_arm_fenced_block.hpp \ - asio/detail/gcc_hppa_fenced_block.hpp \ - asio/detail/gcc_sync_fenced_block.hpp \ - asio/detail/gcc_x86_fenced_block.hpp \ - asio/detail/global.hpp \ - asio/detail/handler_alloc_helpers.hpp \ - asio/detail/handler_cont_helpers.hpp \ - asio/detail/handler_invoke_helpers.hpp \ - asio/detail/handler_tracking.hpp \ - asio/detail/handler_type_requirements.hpp \ - asio/detail/handler_work.hpp \ - asio/detail/hash_map.hpp \ - asio/detail/impl/buffer_sequence_adapter.ipp \ - asio/detail/impl/descriptor_ops.ipp \ - asio/detail/impl/dev_poll_reactor.hpp \ - asio/detail/impl/dev_poll_reactor.ipp \ - asio/detail/impl/epoll_reactor.hpp \ - asio/detail/impl/epoll_reactor.ipp \ - asio/detail/impl/eventfd_select_interrupter.ipp \ - asio/detail/impl/handler_tracking.ipp \ - asio/detail/impl/kqueue_reactor.hpp \ - asio/detail/impl/kqueue_reactor.ipp \ - asio/detail/impl/null_event.ipp \ - asio/detail/impl/pipe_select_interrupter.ipp \ - asio/detail/impl/posix_event.ipp \ - asio/detail/impl/posix_mutex.ipp \ - asio/detail/impl/posix_thread.ipp \ - asio/detail/impl/posix_tss_ptr.ipp \ - asio/detail/impl/reactive_descriptor_service.ipp \ - asio/detail/impl/reactive_serial_port_service.ipp \ - asio/detail/impl/reactive_socket_service_base.ipp \ - asio/detail/impl/resolver_service_base.ipp \ - asio/detail/impl/scheduler.ipp \ - asio/detail/impl/select_reactor.hpp \ - asio/detail/impl/select_reactor.ipp \ - asio/detail/impl/service_registry.hpp \ - asio/detail/impl/service_registry.ipp \ - asio/detail/impl/signal_set_service.ipp \ - asio/detail/impl/socket_ops.ipp \ - asio/detail/impl/socket_select_interrupter.ipp \ - asio/detail/impl/strand_executor_service.hpp \ - asio/detail/impl/strand_executor_service.ipp \ - asio/detail/impl/strand_service.hpp \ - asio/detail/impl/strand_service.ipp \ - asio/detail/impl/thread_context.ipp \ - asio/detail/impl/throw_error.ipp \ - asio/detail/impl/timer_queue_ptime.ipp \ - asio/detail/impl/timer_queue_set.ipp \ - asio/detail/impl/win_event.ipp \ - asio/detail/impl/win_iocp_handle_service.ipp \ - asio/detail/impl/win_iocp_io_context.hpp \ - asio/detail/impl/win_iocp_io_context.ipp \ - asio/detail/impl/win_iocp_serial_port_service.ipp \ - asio/detail/impl/win_iocp_socket_service_base.ipp \ - asio/detail/impl/win_mutex.ipp \ - asio/detail/impl/win_object_handle_service.ipp \ - asio/detail/impl/winrt_ssocket_service_base.ipp \ - asio/detail/impl/winrt_timer_scheduler.hpp \ - asio/detail/impl/winrt_timer_scheduler.ipp \ - asio/detail/impl/winsock_init.ipp \ - asio/detail/impl/win_static_mutex.ipp \ - asio/detail/impl/win_thread.ipp \ - asio/detail/impl/win_tss_ptr.ipp \ - asio/detail/io_control.hpp \ - asio/detail/io_object_impl.hpp \ - asio/detail/is_buffer_sequence.hpp \ - asio/detail/is_executor.hpp \ - asio/detail/keyword_tss_ptr.hpp \ - asio/detail/kqueue_reactor.hpp \ - asio/detail/limits.hpp \ - asio/detail/local_free_on_block_exit.hpp \ - asio/detail/macos_fenced_block.hpp \ - asio/detail/memory.hpp \ - asio/detail/mutex.hpp \ - asio/detail/non_const_lvalue.hpp \ - asio/detail/noncopyable.hpp \ - asio/detail/null_event.hpp \ - asio/detail/null_fenced_block.hpp \ - asio/detail/null_global.hpp \ - asio/detail/null_mutex.hpp \ - asio/detail/null_reactor.hpp \ - asio/detail/null_signal_blocker.hpp \ - asio/detail/null_socket_service.hpp \ - asio/detail/null_static_mutex.hpp \ - asio/detail/null_thread.hpp \ - asio/detail/null_tss_ptr.hpp \ - asio/detail/object_pool.hpp \ - asio/detail/old_win_sdk_compat.hpp \ - asio/detail/operation.hpp \ - asio/detail/op_queue.hpp \ - asio/detail/pipe_select_interrupter.hpp \ - asio/detail/pop_options.hpp \ - asio/detail/posix_event.hpp \ - asio/detail/posix_fd_set_adapter.hpp \ - asio/detail/posix_global.hpp \ - asio/detail/posix_mutex.hpp \ - asio/detail/posix_signal_blocker.hpp \ - asio/detail/posix_static_mutex.hpp \ - asio/detail/posix_thread.hpp \ - asio/detail/posix_tss_ptr.hpp \ - asio/detail/push_options.hpp \ - asio/detail/reactive_descriptor_service.hpp \ - asio/detail/reactive_null_buffers_op.hpp \ - asio/detail/reactive_serial_port_service.hpp \ - asio/detail/reactive_socket_accept_op.hpp \ - asio/detail/reactive_socket_connect_op.hpp \ - asio/detail/reactive_socket_recvfrom_op.hpp \ - asio/detail/reactive_socket_recvmsg_op.hpp \ - asio/detail/reactive_socket_recv_op.hpp \ - asio/detail/reactive_socket_send_op.hpp \ - asio/detail/reactive_socket_sendto_op.hpp \ - asio/detail/reactive_socket_service_base.hpp \ - asio/detail/reactive_socket_service.hpp \ - asio/detail/reactive_wait_op.hpp \ - asio/detail/reactor_fwd.hpp \ - asio/detail/reactor.hpp \ - asio/detail/reactor_op.hpp \ - asio/detail/reactor_op_queue.hpp \ - asio/detail/recycling_allocator.hpp \ - asio/detail/regex_fwd.hpp \ - asio/detail/resolve_endpoint_op.hpp \ - asio/detail/resolve_op.hpp \ - asio/detail/resolve_query_op.hpp \ - asio/detail/resolver_service_base.hpp \ - asio/detail/resolver_service.hpp \ - asio/detail/scheduler.hpp \ - asio/detail/scheduler_operation.hpp \ - asio/detail/scheduler_thread_info.hpp \ - asio/detail/scoped_lock.hpp \ - asio/detail/scoped_ptr.hpp \ - asio/detail/select_interrupter.hpp \ - asio/detail/select_reactor.hpp \ - asio/detail/service_registry.hpp \ - asio/detail/signal_blocker.hpp \ - asio/detail/signal_handler.hpp \ - asio/detail/signal_init.hpp \ - asio/detail/signal_op.hpp \ - asio/detail/signal_set_service.hpp \ - asio/detail/socket_holder.hpp \ - asio/detail/socket_ops.hpp \ - asio/detail/socket_option.hpp \ - asio/detail/socket_select_interrupter.hpp \ - asio/detail/socket_types.hpp \ - asio/detail/solaris_fenced_block.hpp \ - asio/detail/source_location.hpp \ - asio/detail/static_mutex.hpp \ - asio/detail/std_event.hpp \ - asio/detail/std_fenced_block.hpp \ - asio/detail/std_global.hpp \ - asio/detail/std_mutex.hpp \ - asio/detail/std_static_mutex.hpp \ - asio/detail/std_thread.hpp \ - asio/detail/strand_executor_service.hpp \ - asio/detail/strand_service.hpp \ - asio/detail/string_view.hpp \ - asio/detail/thread_context.hpp \ - asio/detail/thread_group.hpp \ - asio/detail/thread.hpp \ - asio/detail/thread_info_base.hpp \ - asio/detail/throw_error.hpp \ - asio/detail/throw_exception.hpp \ - asio/detail/timer_queue_base.hpp \ - asio/detail/timer_queue.hpp \ - asio/detail/timer_queue_ptime.hpp \ - asio/detail/timer_queue_set.hpp \ - asio/detail/timer_scheduler_fwd.hpp \ - asio/detail/timer_scheduler.hpp \ - asio/detail/tss_ptr.hpp \ - asio/detail/type_traits.hpp \ - asio/detail/variadic_templates.hpp \ - asio/detail/wait_handler.hpp \ - asio/detail/wait_op.hpp \ - asio/detail/winapp_thread.hpp \ - asio/detail/wince_thread.hpp \ - asio/detail/win_event.hpp \ - asio/detail/win_fd_set_adapter.hpp \ - asio/detail/win_fenced_block.hpp \ - asio/detail/win_global.hpp \ - asio/detail/win_iocp_handle_read_op.hpp \ - asio/detail/win_iocp_handle_service.hpp \ - asio/detail/win_iocp_handle_write_op.hpp \ - asio/detail/win_iocp_io_context.hpp \ - asio/detail/win_iocp_null_buffers_op.hpp \ - asio/detail/win_iocp_operation.hpp \ - asio/detail/win_iocp_overlapped_op.hpp \ - asio/detail/win_iocp_overlapped_ptr.hpp \ - asio/detail/win_iocp_serial_port_service.hpp \ - asio/detail/win_iocp_socket_accept_op.hpp \ - asio/detail/win_iocp_socket_connect_op.hpp \ - asio/detail/win_iocp_socket_recvfrom_op.hpp \ - asio/detail/win_iocp_socket_recvmsg_op.hpp \ - asio/detail/win_iocp_socket_recv_op.hpp \ - asio/detail/win_iocp_socket_send_op.hpp \ - asio/detail/win_iocp_socket_service_base.hpp \ - asio/detail/win_iocp_socket_service.hpp \ - asio/detail/win_iocp_thread_info.hpp \ - asio/detail/win_iocp_wait_op.hpp \ - asio/detail/win_mutex.hpp \ - asio/detail/win_object_handle_service.hpp \ - asio/detail/winrt_async_manager.hpp \ - asio/detail/winrt_async_op.hpp \ - asio/detail/winrt_resolve_op.hpp \ - asio/detail/winrt_resolver_service.hpp \ - asio/detail/winrt_socket_connect_op.hpp \ - asio/detail/winrt_socket_recv_op.hpp \ - asio/detail/winrt_socket_send_op.hpp \ - asio/detail/winrt_ssocket_service_base.hpp \ - asio/detail/winrt_ssocket_service.hpp \ - asio/detail/winrt_timer_scheduler.hpp \ - asio/detail/winrt_utils.hpp \ - asio/detail/winsock_init.hpp \ - asio/detail/win_static_mutex.hpp \ - asio/detail/win_thread.hpp \ - asio/detail/win_tss_ptr.hpp \ - asio/detail/work_dispatcher.hpp \ - asio/detail/wrapped_handler.hpp \ - asio/dispatch.hpp \ - asio/error_code.hpp \ - asio/error.hpp \ - asio/execution.hpp \ - asio/execution_context.hpp \ - asio/execution/allocator.hpp \ - asio/execution/any_executor.hpp \ - asio/execution/bad_executor.hpp \ - asio/execution/blocking.hpp \ - asio/execution/blocking_adaptation.hpp \ - asio/execution/bulk_execute.hpp \ - asio/execution/bulk_guarantee.hpp \ - asio/execution/connect.hpp \ - asio/execution/context.hpp \ - asio/execution/context_as.hpp \ - asio/execution/detail/as_invocable.hpp \ - asio/execution/detail/as_operation.hpp \ - asio/execution/detail/as_receiver.hpp \ - asio/execution/detail/bulk_sender.hpp \ - asio/execution/detail/submit_receiver.hpp \ - asio/execution/detail/void_receiver.hpp \ - asio/execution/execute.hpp \ - asio/execution/executor.hpp \ - asio/execution/impl/bad_executor.ipp \ - asio/execution/impl/receiver_invocation_error.ipp \ - asio/execution/invocable_archetype.hpp \ - asio/execution/mapping.hpp \ - asio/execution/occupancy.hpp \ - asio/execution/operation_state.hpp \ - asio/execution/outstanding_work.hpp \ - asio/execution/prefer_only.hpp \ - asio/execution/receiver.hpp \ - asio/execution/receiver_invocation_error.hpp \ - asio/execution/relationship.hpp \ - asio/execution/schedule.hpp \ - asio/execution/scheduler.hpp \ - asio/execution/sender.hpp \ - asio/execution/set_done.hpp \ - asio/execution/set_error.hpp \ - asio/execution/set_value.hpp \ - asio/execution/start.hpp \ - asio/execution/submit.hpp \ - asio/executor.hpp \ - asio/executor_work_guard.hpp \ - asio/experimental/append.hpp \ - asio/experimental/as_single.hpp \ - asio/experimental/as_tuple.hpp \ - asio/experimental/awaitable_operators.hpp \ - asio/experimental/cancellation_condition.hpp \ - asio/experimental/coro.hpp \ - asio/experimental/deferred.hpp \ - asio/experimental/detail/completion_handler_erasure.hpp \ - asio/experimental/detail/coro_promise_allocator.hpp \ - asio/experimental/detail/coro_traits.hpp \ - asio/experimental/detail/partial_promise.hpp \ - asio/experimental/impl/append.hpp \ - asio/experimental/impl/as_single.hpp \ - asio/experimental/impl/as_tuple.hpp \ - asio/experimental/impl/deferred.hpp \ - asio/experimental/impl/parallel_group.hpp \ - asio/experimental/impl/prepend.hpp \ - asio/experimental/impl/promise.hpp \ - asio/experimental/parallel_group.hpp \ - asio/experimental/prepend.hpp \ - asio/experimental/promise.hpp \ - asio/experimental/use_coro.hpp \ - asio/generic/basic_endpoint.hpp \ - asio/generic/datagram_protocol.hpp \ - asio/generic/detail/endpoint.hpp \ - asio/generic/detail/impl/endpoint.ipp \ - asio/generic/raw_protocol.hpp \ - asio/generic/seq_packet_protocol.hpp \ - asio/generic/stream_protocol.hpp \ - asio/handler_alloc_hook.hpp \ - asio/handler_continuation_hook.hpp \ - asio/handler_invoke_hook.hpp \ - asio/high_resolution_timer.hpp \ - asio.hpp \ - asio/impl/awaitable.hpp \ - asio/impl/buffered_read_stream.hpp \ - asio/impl/buffered_write_stream.hpp \ - asio/impl/co_spawn.hpp \ - asio/impl/compose.hpp \ - asio/impl/connect.hpp \ - asio/impl/defer.hpp \ - asio/impl/detached.hpp \ - asio/impl/dispatch.hpp \ - asio/impl/error_code.ipp \ - asio/impl/error.ipp \ - asio/impl/execution_context.hpp \ - asio/impl/execution_context.ipp \ - asio/impl/executor.hpp \ - asio/impl/executor.ipp \ - asio/impl/handler_alloc_hook.ipp \ - asio/impl/io_context.hpp \ - asio/impl/io_context.ipp \ - asio/impl/multiple_exceptions.ipp \ - asio/impl/post.hpp \ - asio/impl/read_at.hpp \ - asio/impl/read.hpp \ - asio/impl/read_until.hpp \ - asio/impl/redirect_error.hpp \ - asio/impl/serial_port_base.hpp \ - asio/impl/serial_port_base.ipp \ - asio/impl/spawn.hpp \ - asio/impl/src.hpp \ - asio/impl/system_context.hpp \ - asio/impl/system_context.ipp \ - asio/impl/system_executor.hpp \ - asio/impl/thread_pool.hpp \ - asio/impl/thread_pool.ipp \ - asio/impl/use_awaitable.hpp \ - asio/impl/use_future.hpp \ - asio/impl/write_at.hpp \ - asio/impl/write.hpp \ - asio/io_context.hpp \ - asio/io_context_strand.hpp \ - asio/io_service.hpp \ - asio/io_service_strand.hpp \ - asio/ip/address.hpp \ - asio/ip/address_v4.hpp \ - asio/ip/address_v4_iterator.hpp \ - asio/ip/address_v4_range.hpp \ - asio/ip/address_v6.hpp \ - asio/ip/address_v6_iterator.hpp \ - asio/ip/address_v6_range.hpp \ - asio/ip/bad_address_cast.hpp \ - asio/ip/basic_endpoint.hpp \ - asio/ip/basic_resolver_entry.hpp \ - asio/ip/basic_resolver.hpp \ - asio/ip/basic_resolver_iterator.hpp \ - asio/ip/basic_resolver_query.hpp \ - asio/ip/basic_resolver_results.hpp \ - asio/ip/detail/endpoint.hpp \ - asio/ip/detail/impl/endpoint.ipp \ - asio/ip/detail/socket_option.hpp \ - asio/ip/host_name.hpp \ - asio/ip/icmp.hpp \ - asio/ip/impl/address.hpp \ - asio/ip/impl/address.ipp \ - asio/ip/impl/address_v4.hpp \ - asio/ip/impl/address_v4.ipp \ - asio/ip/impl/address_v6.hpp \ - asio/ip/impl/address_v6.ipp \ - asio/ip/impl/basic_endpoint.hpp \ - asio/ip/impl/host_name.ipp \ - asio/ip/impl/network_v4.hpp \ - asio/ip/impl/network_v4.ipp \ - asio/ip/impl/network_v6.hpp \ - asio/ip/impl/network_v6.ipp \ - asio/ip/multicast.hpp \ - asio/ip/network_v4.hpp \ - asio/ip/network_v6.hpp \ - asio/ip/resolver_base.hpp \ - asio/ip/resolver_query_base.hpp \ - asio/ip/tcp.hpp \ - asio/ip/udp.hpp \ - asio/ip/unicast.hpp \ - asio/ip/v6_only.hpp \ - asio/is_applicable_property.hpp \ - asio/is_executor.hpp \ - asio/is_read_buffered.hpp \ - asio/is_write_buffered.hpp \ - asio/local/basic_endpoint.hpp \ - asio/local/connect_pair.hpp \ - asio/local/datagram_protocol.hpp \ - asio/local/detail/endpoint.hpp \ - asio/local/detail/impl/endpoint.ipp \ - asio/local/stream_protocol.hpp \ - asio/multiple_exceptions.hpp \ - asio/packaged_task.hpp \ - asio/placeholders.hpp \ - asio/posix/basic_descriptor.hpp \ - asio/posix/basic_stream_descriptor.hpp \ - asio/posix/descriptor_base.hpp \ - asio/posix/descriptor.hpp \ - asio/posix/stream_descriptor.hpp \ - asio/post.hpp \ - asio/prefer.hpp \ - asio/query.hpp \ - asio/read_at.hpp \ - asio/read.hpp \ - asio/read_until.hpp \ - asio/redirect_error.hpp \ - asio/require.hpp \ - asio/require_concept.hpp \ - asio/serial_port_base.hpp \ - asio/serial_port.hpp \ - asio/signal_set.hpp \ - asio/socket_base.hpp \ - asio/spawn.hpp \ - asio/ssl/context_base.hpp \ - asio/ssl/context.hpp \ - asio/ssl/detail/buffered_handshake_op.hpp \ - asio/ssl/detail/engine.hpp \ - asio/ssl/detail/handshake_op.hpp \ - asio/ssl/detail/impl/engine.ipp \ - asio/ssl/detail/impl/openssl_init.ipp \ - asio/ssl/detail/io.hpp \ - asio/ssl/detail/openssl_init.hpp \ - asio/ssl/detail/openssl_types.hpp \ - asio/ssl/detail/password_callback.hpp \ - asio/ssl/detail/read_op.hpp \ - asio/ssl/detail/shutdown_op.hpp \ - asio/ssl/detail/stream_core.hpp \ - asio/ssl/detail/verify_callback.hpp \ - asio/ssl/detail/write_op.hpp \ - asio/ssl/error.hpp \ - asio/ssl.hpp \ - asio/ssl/host_name_verification.hpp \ - asio/ssl/impl/context.hpp \ - asio/ssl/impl/context.ipp \ - asio/ssl/impl/error.ipp \ - asio/ssl/impl/host_name_verification.ipp \ - asio/ssl/impl/rfc2818_verification.ipp \ - asio/ssl/impl/src.hpp \ - asio/ssl/rfc2818_verification.hpp \ - asio/ssl/stream_base.hpp \ - asio/ssl/stream.hpp \ - asio/ssl/verify_context.hpp \ - asio/ssl/verify_mode.hpp \ - asio/static_thread_pool.hpp \ - asio/steady_timer.hpp \ - asio/strand.hpp \ - asio/streambuf.hpp \ - asio/system_context.hpp \ - asio/system_error.hpp \ - asio/system_executor.hpp \ - asio/system_timer.hpp \ - asio/this_coro.hpp \ - asio/thread.hpp \ - asio/thread_pool.hpp \ - asio/time_traits.hpp \ - asio/traits/bulk_execute_free.hpp \ - asio/traits/bulk_execute_member.hpp \ - asio/traits/connect_free.hpp \ - asio/traits/connect_member.hpp \ - asio/traits/equality_comparable.hpp \ - asio/traits/execute_free.hpp \ - asio/traits/execute_member.hpp \ - asio/traits/prefer_free.hpp \ - asio/traits/prefer_member.hpp \ - asio/traits/query_free.hpp \ - asio/traits/query_member.hpp \ - asio/traits/query_static_constexpr_member.hpp \ - asio/traits/require_concept_free.hpp \ - asio/traits/require_concept_member.hpp \ - asio/traits/require_free.hpp \ - asio/traits/require_member.hpp \ - asio/traits/schedule_free.hpp \ - asio/traits/schedule_member.hpp \ - asio/traits/set_done_free.hpp \ - asio/traits/set_done_member.hpp \ - asio/traits/set_error_free.hpp \ - asio/traits/set_error_member.hpp \ - asio/traits/set_value_free.hpp \ - asio/traits/set_value_member.hpp \ - asio/traits/start_free.hpp \ - asio/traits/start_member.hpp \ - asio/traits/static_query.hpp \ - asio/traits/static_require.hpp \ - asio/traits/static_require_concept.hpp \ - asio/traits/submit_free.hpp \ - asio/traits/submit_member.hpp \ - asio/ts/buffer.hpp \ - asio/ts/executor.hpp \ - asio/ts/internet.hpp \ - asio/ts/io_context.hpp \ - asio/ts/netfwd.hpp \ - asio/ts/net.hpp \ - asio/ts/socket.hpp \ - asio/ts/timer.hpp \ - asio/unyield.hpp \ - asio/use_awaitable.hpp \ - asio/use_future.hpp \ - asio/uses_executor.hpp \ - asio/version.hpp \ - asio/wait_traits.hpp \ - asio/windows/basic_object_handle.hpp \ - asio/windows/basic_overlapped_handle.hpp \ - asio/windows/basic_random_access_handle.hpp \ - asio/windows/basic_stream_handle.hpp \ - asio/windows/object_handle.hpp \ - asio/windows/overlapped_handle.hpp \ - asio/windows/overlapped_ptr.hpp \ - asio/windows/random_access_handle.hpp \ - asio/windows/stream_handle.hpp \ - asio/write_at.hpp \ - asio/write.hpp \ - asio/yield.hpp - -MAINTAINERCLEANFILES = \ - $(srcdir)/Makefile.in diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio.hpp b/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio.hpp deleted file mode 100644 index 94db21e8..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio.hpp +++ /dev/null @@ -1,188 +0,0 @@ -// -// asio.hpp -// ~~~~~~~~ -// -// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_HPP -#define ASIO_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/associated_allocator.hpp" -#include "asio/associated_executor.hpp" -#include "asio/associated_cancellation_slot.hpp" -#include "asio/associator.hpp" -#include "asio/async_result.hpp" -#include "asio/awaitable.hpp" -#include "asio/basic_datagram_socket.hpp" -#include "asio/basic_deadline_timer.hpp" -#include "asio/basic_io_object.hpp" -#include "asio/basic_raw_socket.hpp" -#include "asio/basic_seq_packet_socket.hpp" -#include "asio/basic_serial_port.hpp" -#include "asio/basic_signal_set.hpp" -#include "asio/basic_socket.hpp" -#include "asio/basic_socket_acceptor.hpp" -#include "asio/basic_socket_iostream.hpp" -#include "asio/basic_socket_streambuf.hpp" -#include "asio/basic_stream_socket.hpp" -#include "asio/basic_streambuf.hpp" -#include "asio/basic_waitable_timer.hpp" -#include "asio/bind_cancellation_slot.hpp" -#include "asio/bind_executor.hpp" -#include "asio/buffer.hpp" -#include "asio/buffered_read_stream_fwd.hpp" -#include "asio/buffered_read_stream.hpp" -#include "asio/buffered_stream_fwd.hpp" -#include "asio/buffered_stream.hpp" -#include "asio/buffered_write_stream_fwd.hpp" -#include "asio/buffered_write_stream.hpp" -#include "asio/buffers_iterator.hpp" -#include "asio/cancellation_signal.hpp" -#include "asio/cancellation_state.hpp" -#include "asio/cancellation_type.hpp" -#include "asio/co_spawn.hpp" -#include "asio/completion_condition.hpp" -#include "asio/compose.hpp" -#include "asio/connect.hpp" -#include "asio/coroutine.hpp" -#include "asio/deadline_timer.hpp" -#include "asio/defer.hpp" -#include "asio/detached.hpp" -#include "asio/dispatch.hpp" -#include "asio/error.hpp" -#include "asio/error_code.hpp" -#include "asio/execution.hpp" -#include "asio/execution/allocator.hpp" -#include "asio/execution/any_executor.hpp" -#include "asio/execution/blocking.hpp" -#include "asio/execution/blocking_adaptation.hpp" -#include "asio/execution/bulk_execute.hpp" -#include "asio/execution/bulk_guarantee.hpp" -#include "asio/execution/connect.hpp" -#include "asio/execution/context.hpp" -#include "asio/execution/context_as.hpp" -#include "asio/execution/execute.hpp" -#include "asio/execution/executor.hpp" -#include "asio/execution/invocable_archetype.hpp" -#include "asio/execution/mapping.hpp" -#include "asio/execution/occupancy.hpp" -#include "asio/execution/operation_state.hpp" -#include "asio/execution/outstanding_work.hpp" -#include "asio/execution/prefer_only.hpp" -#include "asio/execution/receiver.hpp" -#include "asio/execution/receiver_invocation_error.hpp" -#include "asio/execution/relationship.hpp" -#include "asio/execution/schedule.hpp" -#include "asio/execution/scheduler.hpp" -#include "asio/execution/sender.hpp" -#include "asio/execution/set_done.hpp" -#include "asio/execution/set_error.hpp" -#include "asio/execution/set_value.hpp" -#include "asio/execution/start.hpp" -#include "asio/execution_context.hpp" -#include "asio/executor.hpp" -#include "asio/executor_work_guard.hpp" -#include "asio/generic/basic_endpoint.hpp" -#include "asio/generic/datagram_protocol.hpp" -#include "asio/generic/raw_protocol.hpp" -#include "asio/generic/seq_packet_protocol.hpp" -#include "asio/generic/stream_protocol.hpp" -#include "asio/handler_alloc_hook.hpp" -#include "asio/handler_continuation_hook.hpp" -#include "asio/handler_invoke_hook.hpp" -#include "asio/high_resolution_timer.hpp" -#include "asio/io_context.hpp" -#include "asio/io_context_strand.hpp" -#include "asio/io_service.hpp" -#include "asio/io_service_strand.hpp" -#include "asio/ip/address.hpp" -#include "asio/ip/address_v4.hpp" -#include "asio/ip/address_v4_iterator.hpp" -#include "asio/ip/address_v4_range.hpp" -#include "asio/ip/address_v6.hpp" -#include "asio/ip/address_v6_iterator.hpp" -#include "asio/ip/address_v6_range.hpp" -#include "asio/ip/network_v4.hpp" -#include "asio/ip/network_v6.hpp" -#include "asio/ip/bad_address_cast.hpp" -#include "asio/ip/basic_endpoint.hpp" -#include "asio/ip/basic_resolver.hpp" -#include "asio/ip/basic_resolver_entry.hpp" -#include "asio/ip/basic_resolver_iterator.hpp" -#include "asio/ip/basic_resolver_query.hpp" -#include "asio/ip/host_name.hpp" -#include "asio/ip/icmp.hpp" -#include "asio/ip/multicast.hpp" -#include "asio/ip/resolver_base.hpp" -#include "asio/ip/resolver_query_base.hpp" -#include "asio/ip/tcp.hpp" -#include "asio/ip/udp.hpp" -#include "asio/ip/unicast.hpp" -#include "asio/ip/v6_only.hpp" -#include "asio/is_applicable_property.hpp" -#include "asio/is_executor.hpp" -#include "asio/is_read_buffered.hpp" -#include "asio/is_write_buffered.hpp" -#include "asio/local/basic_endpoint.hpp" -#include "asio/local/connect_pair.hpp" -#include "asio/local/datagram_protocol.hpp" -#include "asio/local/stream_protocol.hpp" -#include "asio/multiple_exceptions.hpp" -#include "asio/packaged_task.hpp" -#include "asio/placeholders.hpp" -#include "asio/posix/basic_descriptor.hpp" -#include "asio/posix/basic_stream_descriptor.hpp" -#include "asio/posix/descriptor.hpp" -#include "asio/posix/descriptor_base.hpp" -#include "asio/posix/stream_descriptor.hpp" -#include "asio/post.hpp" -#include "asio/prefer.hpp" -#include "asio/query.hpp" -#include "asio/read.hpp" -#include "asio/read_at.hpp" -#include "asio/read_until.hpp" -#include "asio/redirect_error.hpp" -#include "asio/require.hpp" -#include "asio/require_concept.hpp" -#include "asio/serial_port.hpp" -#include "asio/serial_port_base.hpp" -#include "asio/signal_set.hpp" -#include "asio/socket_base.hpp" -#include "asio/static_thread_pool.hpp" -#include "asio/steady_timer.hpp" -#include "asio/strand.hpp" -#include "asio/streambuf.hpp" -#include "asio/system_context.hpp" -#include "asio/system_error.hpp" -#include "asio/system_executor.hpp" -#include "asio/system_timer.hpp" -#include "asio/this_coro.hpp" -#include "asio/thread.hpp" -#include "asio/thread_pool.hpp" -#include "asio/time_traits.hpp" -#include "asio/use_awaitable.hpp" -#include "asio/use_future.hpp" -#include "asio/uses_executor.hpp" -#include "asio/version.hpp" -#include "asio/wait_traits.hpp" -#include "asio/windows/basic_object_handle.hpp" -#include "asio/windows/basic_overlapped_handle.hpp" -#include "asio/windows/basic_random_access_handle.hpp" -#include "asio/windows/basic_stream_handle.hpp" -#include "asio/windows/object_handle.hpp" -#include "asio/windows/overlapped_handle.hpp" -#include "asio/windows/overlapped_ptr.hpp" -#include "asio/windows/random_access_handle.hpp" -#include "asio/windows/stream_handle.hpp" -#include "asio/write.hpp" -#include "asio/write_at.hpp" - -#endif // ASIO_HPP diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/any_io_executor.hpp b/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/any_io_executor.hpp deleted file mode 100644 index 5f2c13f0..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/any_io_executor.hpp +++ /dev/null @@ -1,300 +0,0 @@ -// -// any_io_executor.hpp -// ~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ANY_IO_EXECUTOR_HPP -#define ASIO_ANY_IO_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) -# include "asio/executor.hpp" -#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) -# include "asio/execution.hpp" -# include "asio/execution_context.hpp" -#endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) - -#include "asio/detail/push_options.hpp" - -namespace asio { - -#if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) - -typedef executor any_io_executor; - -#else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) - -/// Polymorphic executor type for use with I/O objects. -/** - * The @c any_io_executor type is a polymorphic executor that supports the set - * of properties required by I/O objects. It is defined as the - * execution::any_executor class template parameterised as follows: - * @code execution::any_executor< - * execution::context_as_t, - * execution::blocking_t::never_t, - * execution::prefer_only, - * execution::prefer_only, - * execution::prefer_only, - * execution::prefer_only, - * execution::prefer_only - * > @endcode - */ -class any_io_executor : -#if defined(GENERATING_DOCUMENTATION) - public execution::any_executor<...> -#else // defined(GENERATING_DOCUMENTATION) - public execution::any_executor< - execution::context_as_t, - execution::blocking_t::never_t, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only - > -#endif // defined(GENERATING_DOCUMENTATION) -{ -public: -#if !defined(GENERATING_DOCUMENTATION) - typedef execution::any_executor< - execution::context_as_t, - execution::blocking_t::never_t, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only - > base_type; - - typedef void supportable_properties_type( - execution::context_as_t, - execution::blocking_t::never_t, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only, - execution::prefer_only - ); -#endif // !defined(GENERATING_DOCUMENTATION) - - /// Default constructor. - any_io_executor() ASIO_NOEXCEPT - : base_type() - { - } - - /// Construct in an empty state. Equivalent effects to default constructor. - any_io_executor(nullptr_t) ASIO_NOEXCEPT - : base_type(nullptr_t()) - { - } - - /// Copy constructor. - any_io_executor(const any_io_executor& e) ASIO_NOEXCEPT - : base_type(static_cast(e)) - { - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move constructor. - any_io_executor(any_io_executor&& e) ASIO_NOEXCEPT - : base_type(static_cast(e)) - { - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Construct to point to the same target as another any_executor. -#if defined(GENERATING_DOCUMENTATION) - template - any_io_executor(execution::any_executor e); -#else // defined(GENERATING_DOCUMENTATION) - template - any_io_executor(OtherAnyExecutor e, - typename constraint< - conditional< - !is_same::value - && is_base_of::value, - typename execution::detail::supportable_properties< - 0, supportable_properties_type>::template - is_valid_target, - false_type - >::type::value - >::type = 0) - : base_type(ASIO_MOVE_CAST(OtherAnyExecutor)(e)) - { - } -#endif // defined(GENERATING_DOCUMENTATION) - - /// Construct a polymorphic wrapper for the specified executor. -#if defined(GENERATING_DOCUMENTATION) - template - any_io_executor(Executor e); -#else // defined(GENERATING_DOCUMENTATION) - template - any_io_executor(Executor e, - typename constraint< - conditional< - !is_same::value - && !is_base_of::value, - execution::detail::is_valid_target_executor< - Executor, supportable_properties_type>, - false_type - >::type::value - >::type = 0) - : base_type(ASIO_MOVE_CAST(Executor)(e)) - { - } -#endif // defined(GENERATING_DOCUMENTATION) - - /// Assignment operator. - any_io_executor& operator=(const any_io_executor& e) ASIO_NOEXCEPT - { - base_type::operator=(static_cast(e)); - return *this; - } - -#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// Move assignment operator. - any_io_executor& operator=(any_io_executor&& e) ASIO_NOEXCEPT - { - base_type::operator=(static_cast(e)); - return *this; - } -#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - - /// Assignment operator that sets the polymorphic wrapper to the empty state. - any_io_executor& operator=(nullptr_t) - { - base_type::operator=(nullptr_t()); - return *this; - } - - /// Destructor. - ~any_io_executor() - { - } - - /// Swap targets with another polymorphic wrapper. - void swap(any_io_executor& other) ASIO_NOEXCEPT - { - static_cast(*this).swap(static_cast(other)); - } - - /// Obtain a polymorphic wrapper with the specified property. - /** - * Do not call this function directly. It is intended for use with the - * asio::require and asio::prefer customisation points. - * - * For example: - * @code any_io_executor ex = ...; - * auto ex2 = asio::require(ex, execution::blocking.possibly); @endcode - */ - template - any_io_executor require(const Property& p, - typename constraint< - traits::require_member::is_valid - >::type = 0) const - { - return static_cast(*this).require(p); - } - - /// Obtain a polymorphic wrapper with the specified property. - /** - * Do not call this function directly. It is intended for use with the - * asio::prefer customisation point. - * - * For example: - * @code any_io_executor ex = ...; - * auto ex2 = asio::prefer(ex, execution::blocking.possibly); @endcode - */ - template - any_io_executor prefer(const Property& p, - typename constraint< - traits::prefer_member::is_valid - >::type = 0) const - { - return static_cast(*this).prefer(p); - } -}; - -#if !defined(GENERATING_DOCUMENTATION) - -namespace traits { - -#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) - -template <> -struct equality_comparable -{ - static const bool is_valid = true; - static const bool is_noexcept = true; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) - -template -struct execute_member -{ - static const bool is_valid = true; - static const bool is_noexcept = false; - typedef void result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) - -template -struct query_member : - query_member -{ -}; - -#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) - -template -struct require_member : - require_member -{ - typedef any_io_executor result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT) - -#if !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) - -template -struct prefer_member : - prefer_member -{ - typedef any_io_executor result_type; -}; - -#endif // !defined(ASIO_HAS_DEDUCED_PREFER_MEMBER_TRAIT) - -} // namespace traits - -#endif // !defined(GENERATING_DOCUMENTATION) - -#endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_ANY_IO_EXECUTOR_HPP diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_allocator.hpp b/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_allocator.hpp deleted file mode 100644 index 3f945834..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_allocator.hpp +++ /dev/null @@ -1,177 +0,0 @@ -// -// associated_allocator.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ASSOCIATED_ALLOCATOR_HPP -#define ASIO_ASSOCIATED_ALLOCATOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include -#include "asio/associator.hpp" -#include "asio/detail/functional.hpp" -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -template -struct associated_allocator; - -namespace detail { - -template -struct has_allocator_type : false_type -{ -}; - -template -struct has_allocator_type::type> - : true_type -{ -}; - -template -struct associated_allocator_impl -{ - typedef E type; - - static type get(const T&, const E& e) ASIO_NOEXCEPT - { - return e; - } -}; - -template -struct associated_allocator_impl::type> -{ - typedef typename T::allocator_type type; - - static type get(const T& t, const E&) ASIO_NOEXCEPT - { - return t.get_allocator(); - } -}; - -template -struct associated_allocator_impl::value - >::type, - typename void_type< - typename associator::type - >::type> : associator -{ -}; - -} // namespace detail - -/// Traits type used to obtain the allocator associated with an object. -/** - * A program may specialise this traits type if the @c T template parameter in - * the specialisation is a user-defined type. The template parameter @c - * Allocator shall be a type meeting the Allocator requirements. - * - * Specialisations shall meet the following requirements, where @c t is a const - * reference to an object of type @c T, and @c a is an object of type @c - * Allocator. - * - * @li Provide a nested typedef @c type that identifies a type meeting the - * Allocator requirements. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t) and with return type @c type. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t,a) and with return type @c type. - */ -template > -struct associated_allocator -{ - /// If @c T has a nested type @c allocator_type, T::allocator_type. - /// Otherwise @c Allocator. -#if defined(GENERATING_DOCUMENTATION) - typedef see_below type; -#else // defined(GENERATING_DOCUMENTATION) - typedef typename detail::associated_allocator_impl::type type; -#endif // defined(GENERATING_DOCUMENTATION) - - /// If @c T has a nested type @c allocator_type, returns - /// t.get_allocator(). Otherwise returns @c a. - static type get(const T& t, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return detail::associated_allocator_impl::get(t, a); - } -}; - -/// Helper function to obtain an object's associated allocator. -/** - * @returns associated_allocator::get(t) - */ -template -inline typename associated_allocator::type -get_associated_allocator(const T& t) ASIO_NOEXCEPT -{ - return associated_allocator::get(t); -} - -/// Helper function to obtain an object's associated allocator. -/** - * @returns associated_allocator::get(t, a) - */ -template -inline typename associated_allocator::type -get_associated_allocator(const T& t, const Allocator& a) ASIO_NOEXCEPT -{ - return associated_allocator::get(t, a); -} - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template > -using associated_allocator_t - = typename associated_allocator::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -#if defined(ASIO_HAS_STD_REFERENCE_WRAPPER) \ - || defined(GENERATING_DOCUMENTATION) - -/// Specialisation of associated_allocator for @c std::reference_wrapper. -template -struct associated_allocator, Allocator> -{ - /// Forwards @c type to the associator specialisation for the unwrapped type - /// @c T. - typedef typename associated_allocator::type type; - - /// Forwards the request to get the allocator to the associator specialisation - /// for the unwrapped type @c T. - static type get(reference_wrapper t, - const Allocator& a = Allocator()) ASIO_NOEXCEPT - { - return associated_allocator::get(t.get(), a); - } -}; - -#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) - // || defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_ASSOCIATED_ALLOCATOR_HPP diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_cancellation_slot.hpp b/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_cancellation_slot.hpp deleted file mode 100644 index 6a809e71..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_cancellation_slot.hpp +++ /dev/null @@ -1,177 +0,0 @@ -// -// associated_cancellation_slot.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP -#define ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/associator.hpp" -#include "asio/cancellation_signal.hpp" -#include "asio/detail/type_traits.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -template -struct associated_cancellation_slot; - -namespace detail { - -template -struct has_cancellation_slot_type : false_type -{ -}; - -template -struct has_cancellation_slot_type::type> - : true_type -{ -}; - -template -struct associated_cancellation_slot_impl -{ - typedef void asio_associated_cancellation_slot_is_unspecialised; - - typedef S type; - - static type get(const T&, const S& s = S()) ASIO_NOEXCEPT - { - return s; - } -}; - -template -struct associated_cancellation_slot_impl::type> -{ - typedef typename T::cancellation_slot_type type; - - static type get(const T& t, const S& = S()) ASIO_NOEXCEPT - { - return t.get_cancellation_slot(); - } -}; - -template -struct associated_cancellation_slot_impl::value - >::type, - typename void_type< - typename associator::type - >::type> : associator -{ -}; - -} // namespace detail - -/// Traits type used to obtain the cancellation_slot associated with an object. -/** - * A program may specialise this traits type if the @c T template parameter in - * the specialisation is a user-defined type. The template parameter @c - * CancellationSlot shall be a type meeting the CancellationSlot requirements. - * - * Specialisations shall meet the following requirements, where @c t is a const - * reference to an object of type @c T, and @c s is an object of type @c - * CancellationSlot. - * - * @li Provide a nested typedef @c type that identifies a type meeting the - * CancellationSlot requirements. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t) and with return type @c type. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t,s) and with return type @c type. - */ -template -struct associated_cancellation_slot -#if !defined(GENERATING_DOCUMENTATION) - : detail::associated_cancellation_slot_impl -#endif // !defined(GENERATING_DOCUMENTATION) -{ -#if defined(GENERATING_DOCUMENTATION) - /// If @c T has a nested type @c cancellation_slot_type, - /// T::cancellation_slot_type. Otherwise - /// @c CancellationSlot. - typedef see_below type; - - /// If @c T has a nested type @c cancellation_slot_type, returns - /// t.get_cancellation_slot(). Otherwise returns @c s. - static type get(const T& t, - const CancellationSlot& s = CancellationSlot()) ASIO_NOEXCEPT; -#endif // defined(GENERATING_DOCUMENTATION) -}; - -/// Helper function to obtain an object's associated cancellation_slot. -/** - * @returns associated_cancellation_slot::get(t) - */ -template -inline typename associated_cancellation_slot::type -get_associated_cancellation_slot(const T& t) ASIO_NOEXCEPT -{ - return associated_cancellation_slot::get(t); -} - -/// Helper function to obtain an object's associated cancellation_slot. -/** - * @returns associated_cancellation_slot::get(t, st) - */ -template -inline typename associated_cancellation_slot::type -get_associated_cancellation_slot(const T& t, - const CancellationSlot& st) ASIO_NOEXCEPT -{ - return associated_cancellation_slot::get(t, st); -} - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template -using associated_cancellation_slot_t = - typename associated_cancellation_slot::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -namespace detail { - -template -struct associated_cancellation_slot_forwarding_base -{ -}; - -template -struct associated_cancellation_slot_forwarding_base::asio_associated_cancellation_slot_is_unspecialised, - void - >::value - >::type> -{ - typedef void asio_associated_cancellation_slot_is_unspecialised; -}; - -} // namespace detail -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_ASSOCIATED_CANCELLATION_SLOT_HPP diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_executor.hpp b/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_executor.hpp deleted file mode 100644 index 1e62e37a..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associated_executor.hpp +++ /dev/null @@ -1,222 +0,0 @@ -// -// associated_executor.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ASSOCIATED_EXECUTOR_HPP -#define ASIO_ASSOCIATED_EXECUTOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" -#include "asio/associator.hpp" -#include "asio/detail/functional.hpp" -#include "asio/detail/type_traits.hpp" -#include "asio/execution/executor.hpp" -#include "asio/is_executor.hpp" -#include "asio/system_executor.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -template -struct associated_executor; - -namespace detail { - -template -struct has_executor_type : false_type -{ -}; - -template -struct has_executor_type::type> - : true_type -{ -}; - -template -struct associated_executor_impl -{ - typedef void asio_associated_executor_is_unspecialised; - - typedef E type; - - static type get(const T&, const E& e = E()) ASIO_NOEXCEPT - { - return e; - } -}; - -template -struct associated_executor_impl::type> -{ - typedef typename T::executor_type type; - - static type get(const T& t, const E& = E()) ASIO_NOEXCEPT - { - return t.get_executor(); - } -}; - -template -struct associated_executor_impl::value - >::type, - typename void_type< - typename associator::type - >::type> : associator -{ -}; - -} // namespace detail - -/// Traits type used to obtain the executor associated with an object. -/** - * A program may specialise this traits type if the @c T template parameter in - * the specialisation is a user-defined type. The template parameter @c - * Executor shall be a type meeting the Executor requirements. - * - * Specialisations shall meet the following requirements, where @c t is a const - * reference to an object of type @c T, and @c e is an object of type @c - * Executor. - * - * @li Provide a nested typedef @c type that identifies a type meeting the - * Executor requirements. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t) and with return type @c type. - * - * @li Provide a noexcept static member function named @c get, callable as @c - * get(t,e) and with return type @c type. - */ -template -struct associated_executor -#if !defined(GENERATING_DOCUMENTATION) - : detail::associated_executor_impl -#endif // !defined(GENERATING_DOCUMENTATION) -{ -#if defined(GENERATING_DOCUMENTATION) - /// If @c T has a nested type @c executor_type, T::executor_type. - /// Otherwise @c Executor. - typedef see_below type; - - /// If @c T has a nested type @c executor_type, returns - /// t.get_executor(). Otherwise returns @c ex. - static type get(const T& t, - const Executor& ex = Executor()) ASIO_NOEXCEPT; -#endif // defined(GENERATING_DOCUMENTATION) -}; - -/// Helper function to obtain an object's associated executor. -/** - * @returns associated_executor::get(t) - */ -template -inline typename associated_executor::type -get_associated_executor(const T& t) ASIO_NOEXCEPT -{ - return associated_executor::get(t); -} - -/// Helper function to obtain an object's associated executor. -/** - * @returns associated_executor::get(t, ex) - */ -template -inline typename associated_executor::type -get_associated_executor(const T& t, const Executor& ex, - typename constraint< - is_executor::value || execution::is_executor::value - >::type = 0) ASIO_NOEXCEPT -{ - return associated_executor::get(t, ex); -} - -/// Helper function to obtain an object's associated executor. -/** - * @returns associated_executor::get(t, ctx.get_executor()) - */ -template -inline typename associated_executor::type -get_associated_executor(const T& t, ExecutionContext& ctx, - typename constraint::value>::type = 0) ASIO_NOEXCEPT -{ - return associated_executor::get(t, ctx.get_executor()); -} - -#if defined(ASIO_HAS_ALIAS_TEMPLATES) - -template -using associated_executor_t = typename associated_executor::type; - -#endif // defined(ASIO_HAS_ALIAS_TEMPLATES) - -namespace detail { - -template -struct associated_executor_forwarding_base -{ -}; - -template -struct associated_executor_forwarding_base::asio_associated_executor_is_unspecialised, - void - >::value - >::type> -{ - typedef void asio_associated_executor_is_unspecialised; -}; - -} // namespace detail - -#if defined(ASIO_HAS_STD_REFERENCE_WRAPPER) \ - || defined(GENERATING_DOCUMENTATION) - -/// Specialisation of associated_executor for @c std::reference_wrapper. -template -struct associated_executor, Executor> -#if !defined(GENERATING_DOCUMENTATION) - : detail::associated_executor_forwarding_base -#endif // !defined(GENERATING_DOCUMENTATION) -{ - /// Forwards @c type to the associator specialisation for the unwrapped type - /// @c T. - typedef typename associated_executor::type type; - - /// Forwards the request to get the executor to the associator specialisation - /// for the unwrapped type @c T. - static type get(reference_wrapper t, - const Executor& ex = Executor()) ASIO_NOEXCEPT - { - return associated_executor::get(t.get(), ex); - } -}; - -#endif // defined(ASIO_HAS_STD_REFERENCE_WRAPPER) - // || defined(GENERATING_DOCUMENTATION) - -} // namespace asio - -#include "asio/detail/pop_options.hpp" - -#endif // ASIO_ASSOCIATED_EXECUTOR_HPP diff --git a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associator.hpp b/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associator.hpp deleted file mode 100644 index 0f93b120..00000000 --- a/Plugins/GameLiftServerSDK/ThirdParty/asio/include/asio/associator.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// -// associator.hpp -// ~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef ASIO_ASSOCIATOR_HPP -#define ASIO_ASSOCIATOR_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include "asio/detail/config.hpp" - -#include "asio/detail/push_options.hpp" - -namespace asio { - -/// Used to generically specialise associators for a type. -template