From bef429908a943853bb55921b56ec3e7bfff487e4 Mon Sep 17 00:00:00 2001 From: Pavel Djundik Date: Wed, 17 Nov 2021 14:52:35 +0200 Subject: [PATCH] Updates for SteamKit updates --- DepotDownloader/CDNClientPool.cs | 31 ++++++++++++++-------------- DepotDownloader/ContentDownloader.cs | 14 ++++++------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/DepotDownloader/CDNClientPool.cs b/DepotDownloader/CDNClientPool.cs index 485bbcd2..b0b8731b 100644 --- a/DepotDownloader/CDNClientPool.cs +++ b/DepotDownloader/CDNClientPool.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; @@ -6,6 +6,7 @@ using System.Net; using System.Threading; using System.Threading.Tasks; using SteamKit2; +using SteamKit2.CDN; namespace DepotDownloader { @@ -18,11 +19,11 @@ namespace DepotDownloader private readonly Steam3Session steamSession; private readonly uint appId; - public CDNClient CDNClient { get; } - public CDNClient.Server ProxyServer { get; private set; } + public Client CDNClient { get; } + public Server ProxyServer { get; private set; } - private readonly ConcurrentStack activeConnectionPool; - private readonly BlockingCollection availableServerEndpoints; + private readonly ConcurrentStack activeConnectionPool; + private readonly BlockingCollection availableServerEndpoints; private readonly AutoResetEvent populatePoolEvent; private readonly Task monitorTask; @@ -33,10 +34,10 @@ namespace DepotDownloader { this.steamSession = steamSession; this.appId = appId; - CDNClient = new CDNClient(steamSession.steamClient); + CDNClient = new Client(steamSession.steamClient); - activeConnectionPool = new ConcurrentStack(); - availableServerEndpoints = new BlockingCollection(); + activeConnectionPool = new ConcurrentStack(); + availableServerEndpoints = new BlockingCollection(); populatePoolEvent = new AutoResetEvent(true); shutdownToken = new CancellationTokenSource(); @@ -50,7 +51,7 @@ namespace DepotDownloader monitorTask.Wait(); } - private async Task> FetchBootstrapServerListAsync() + private async Task> FetchBootstrapServerListAsync() { var backoffDelay = 0; @@ -104,7 +105,7 @@ namespace DepotDownloader var weightedCdnServers = servers .Where(server => { - var isEligibleForApp = server.AllowedAppIds == null || server.AllowedAppIds.Contains(appId); + var isEligibleForApp = server.AllowedAppIds.Length == 0 || server.AllowedAppIds.Contains(appId); return isEligibleForApp && (server.Type == "SteamCache" || server.Type == "CDN"); }) .Select(server => @@ -133,7 +134,7 @@ namespace DepotDownloader } } - private CDNClient.Server BuildConnection(CancellationToken token) + private Server BuildConnection(CancellationToken token) { if (availableServerEndpoints.Count < ServerEndpointMinimumSize) { @@ -143,7 +144,7 @@ namespace DepotDownloader return availableServerEndpoints.Take(token); } - public CDNClient.Server GetConnection(CancellationToken token) + public Server GetConnection(CancellationToken token) { if (!activeConnectionPool.TryPop(out var connection)) { @@ -153,7 +154,7 @@ namespace DepotDownloader return connection; } - public async Task AuthenticateConnection(uint appId, uint depotId, CDNClient.Server server) + public async Task AuthenticateConnection(uint appId, uint depotId, Server server) { var host = steamSession.ResolveCDNTopLevelHost(server.Host); var cdnKey = $"{depotId:D}:{host}"; @@ -169,14 +170,14 @@ namespace DepotDownloader throw new Exception($"Failed to retrieve CDN token for server {server.Host} depot {depotId}"); } - public void ReturnConnection(CDNClient.Server server) + public void ReturnConnection(Server server) { if (server == null) return; activeConnectionPool.Push(server); } - public void ReturnBrokenConnection(CDNClient.Server server) + public void ReturnBrokenConnection(Server server) { if (server == null) return; diff --git a/DepotDownloader/ContentDownloader.cs b/DepotDownloader/ContentDownloader.cs index c9b2d358..4eff4301 100644 --- a/DepotDownloader/ContentDownloader.cs +++ b/DepotDownloader/ContentDownloader.cs @@ -4,10 +4,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; -using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using SteamKit2; +using SteamKit2.CDN; namespace DepotDownloader { @@ -831,15 +831,15 @@ namespace DepotDownloader { cts.Token.ThrowIfCancellationRequested(); - CDNClient.Server connection = null; + Server connection = null; try { connection = cdnPool.GetConnection(cts.Token); DebugLog.WriteLine("ContentDownloader", "Downloading manifest {0} from {1} with {2}", depot.manifestId, connection, cdnPool.ProxyServer != null ? cdnPool.ProxyServer : "no proxy"); - depotManifest = await cdnPool.CDNClient.DownloadManifestAsync(depot.id, depot.manifestId, - connection, null, depot.depotKey, proxyServer: cdnPool.ProxyServer).ConfigureAwait(false); + depotManifest = await cdnPool.CDNClient.DownloadManifestAsync(depot.id, depot.manifestId, manifestRequestCode: 0, + connection, depot.depotKey, cdnPool.ProxyServer).ConfigureAwait(false); cdnPool.ReturnConnection(connection); } @@ -1223,13 +1223,13 @@ namespace DepotDownloader data.CompressedLength = chunk.CompressedLength; data.UncompressedLength = chunk.UncompressedLength; - CDNClient.DepotChunk chunkData = null; + DepotChunk chunkData = null; do { cts.Token.ThrowIfCancellationRequested(); - CDNClient.Server connection = null; + Server connection = null; try { @@ -1237,7 +1237,7 @@ namespace DepotDownloader DebugLog.WriteLine("ContentDownloader", "Downloading chunk {0} from {1} with {2}", chunkID, connection, cdnPool.ProxyServer != null ? cdnPool.ProxyServer : "no proxy"); chunkData = await cdnPool.CDNClient.DownloadDepotChunkAsync(depot.id, data, - connection, null, depot.depotKey, proxyServer: cdnPool.ProxyServer).ConfigureAwait(false); + connection, depot.depotKey, cdnPool.ProxyServer).ConfigureAwait(false); cdnPool.ReturnConnection(connection); }