From 27b62ca86267aeaddf7bf7452e7aeb5657b16a7c Mon Sep 17 00:00:00 2001 From: Nick Banks Date: Tue, 25 Jul 2023 09:20:06 -0700 Subject: [PATCH] MsQuicGlobalSettings C++ Helper (#3774) --- src/inc/msquic.hpp | 29 +++++++++++++++++++++++++++++ src/perf/lib/PerfServer.cpp | 10 ++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/inc/msquic.hpp b/src/inc/msquic.hpp index efea4649f6..427ec429d5 100644 --- a/src/inc/msquic.hpp +++ b/src/inc/msquic.hpp @@ -415,6 +415,35 @@ class MsQuicVersionSettings : public QUIC_VERSION_SETTINGS { static_assert(sizeof(QUIC_VERSION_SETTINGS) == sizeof(MsQuicVersionSettings), "Cpp wrappers must not change size"); #endif +class MsQuicGlobalSettings : public QUIC_GLOBAL_SETTINGS { +public: + MsQuicGlobalSettings() noexcept { IsSetFlags = 0; } + MsQuicGlobalSettings& SetRetryMemoryLimit(uint16_t Value) { RetryMemoryLimit = Value; IsSet.RetryMemoryLimit = TRUE; return *this; } + MsQuicGlobalSettings& SetLoadBalancingMode(uint16_t Value) { LoadBalancingMode = Value; IsSet.LoadBalancingMode = TRUE; return *this; } + MsQuicGlobalSettings& SetFixedServerID(uint32_t Value) { FixedServerID = Value; IsSet.FixedServerID = TRUE; return *this; } + + QUIC_STATUS Set() const noexcept { + const QUIC_GLOBAL_SETTINGS* Settings = this; + return + MsQuic->SetParam( + nullptr, + QUIC_PARAM_GLOBAL_GLOBAL_SETTINGS, + sizeof(*Settings), + Settings); + } + + QUIC_STATUS Get() noexcept { + QUIC_GLOBAL_SETTINGS* Settings = this; + uint32_t Size = sizeof(*Settings); + return + MsQuic->GetParam( + nullptr, + QUIC_PARAM_GLOBAL_GLOBAL_SETTINGS, + &Size, + Settings); + } +}; + class MsQuicSettings : public QUIC_SETTINGS { public: MsQuicSettings() noexcept { IsSetFlags = 0; } diff --git a/src/perf/lib/PerfServer.cpp b/src/perf/lib/PerfServer.cpp index 0c7585786a..b862811c57 100644 --- a/src/perf/lib/PerfServer.cpp +++ b/src/perf/lib/PerfServer.cpp @@ -39,14 +39,12 @@ PerfServer::Init( uint16_t ServerId = 0; if (TryGetValue(argc, argv, "serverid", &ServerId)) { - QUIC_GLOBAL_SETTINGS GlobalSettings = {0}; - GlobalSettings.FixedServerID = ServerId; - GlobalSettings.IsSet.FixedServerID = true; - GlobalSettings.LoadBalancingMode = QUIC_LOAD_BALANCING_SERVER_ID_FIXED; - GlobalSettings.IsSet.LoadBalancingMode = true; + MsQuicGlobalSettings GlobalSettings; + GlobalSettings.SetFixedServerID(ServerId); + GlobalSettings.SetLoadBalancingMode(QUIC_LOAD_BALANCING_SERVER_ID_FIXED); QUIC_STATUS Status; - if (QUIC_FAILED(Status = MsQuic->SetParam(NULL, QUIC_PARAM_GLOBAL_GLOBAL_SETTINGS, sizeof(GlobalSettings), &GlobalSettings))) { + if (QUIC_FAILED(Status = GlobalSettings.Set())) { WriteOutput("Failed to set global settings %d\n", Status); return Status; }