X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=deps%2Flibchdr%2Fdeps%2Fzstd-1.5.5%2Ftests%2FrateLimiter.py;fp=deps%2Flibchdr%2Fdeps%2Fzstd-1.5.5%2Ftests%2FrateLimiter.py;h=3e65081e05925d3b34cbffdcb80ffa7e2e237289;hb=648db22b0750712da893c306efcc8e4b2d3a4e3c;hp=0000000000000000000000000000000000000000;hpb=e2fb1389dc12376acb84e4993ed3b08760257252;p=pcsx_rearmed.git diff --git a/deps/libchdr/deps/zstd-1.5.5/tests/rateLimiter.py b/deps/libchdr/deps/zstd-1.5.5/tests/rateLimiter.py new file mode 100755 index 00000000..3e65081e --- /dev/null +++ b/deps/libchdr/deps/zstd-1.5.5/tests/rateLimiter.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +# ################################################################ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under both the BSD-style license (found in the +# LICENSE file in the root directory of this source tree) and the GPLv2 (found +# in the COPYING file in the root directory of this source tree). +# You may select, at your option, one of the above-listed licenses. +# ########################################################################## + +# Rate limiter, replacement for pv +# this rate limiter does not "catch up" after a blocking period +# Limitations: +# - only accepts limit speed in MB/s + +import sys +import time + +MB = 1024 * 1024 +rate = float(sys.argv[1]) * MB +start = time.time() +total_read = 0 + +# sys.stderr.close() # remove error message, for Ctrl+C + +try: + buf = " " + while len(buf): + now = time.time() + to_read = max(int(rate * (now - start)), 1) + max_buf_size = 1 * MB + to_read = min(to_read, max_buf_size) + start = now + + buf = sys.stdin.buffer.read(to_read) + sys.stdout.buffer.write(buf) + +except (KeyboardInterrupt, BrokenPipeError) as e: + pass