示例#1
0
		private async Task GetConfigsAsync(ITransferHandler handler)
		{
			using (var ms = new MemoryStream())
			{
				for (var i = 0; i < _folders.Length; i++)
				{
					var folder = _folders[i];
					var platform = (ClientPlatform)(i / Categories);
					var category = (LogCategory)(i % Platforms);

					var config = new LogConfig(new RequestHeader(platform, RequestHeader.EmptyVersion, string.Empty, string.Empty), category, folder);
					var buffer = config.NetworkBuffer;
					ms.Write(buffer, 0, buffer.Length);
				}

				await handler.WriteAsync(ms.ToArray());
			}
		}
		private async Task GetVersionAsync(ITransferHandler handler)
		{
			var networkBuffer = Constants.NoDataBytes;

			var data = await handler.ReadAsync();
			var package = _packages[BitConverter.ToInt32(data, 0)];
			if (package != null)
			{
				networkBuffer = package.Header.NetworkBuffer;
			}

			await handler.WriteAsync(networkBuffer);
		}
		private async Task GetVersionsAsync(ITransferHandler handler)
		{
			var networkBuffer = Constants.NoDataBytes;

			var totalBufferSize = 0;
			foreach (var p in _packages)
			{
				if (p != null)
				{
					totalBufferSize += p.Header.NetworkBuffer.Length;
				}
			}
			if (totalBufferSize > 0)
			{
				using (var ms = new MemoryStream(totalBufferSize))
				{
					foreach (var p in _packages)
					{
						if (p != null)
						{
							var buffer = p.Header.NetworkBuffer;
							ms.Write(buffer, 0, buffer.Length);
						}
					}
					networkBuffer = ms.GetBuffer();
				}
			}

			await handler.WriteAsync(networkBuffer);
		}
		private async Task DownloadPackageAsync(ITransferHandler handler)
		{
			var networkBuffer = Constants.NoDataBytes;

			var header = new RequestHeader().Setup(new MemoryStream(await handler.ReadAsync()));
			var package = _packages[(int)header.ClientPlatform];
			if (package != null && package.Header.Version > header.Version)
			{
				networkBuffer = package.Data;
			}

			await handler.WriteAsync(networkBuffer);
		}