du leitest einfach von deiner Streamklasse ab und überschreibst die Funktion "Write", in der Funktion lässt du eine schleife laufen die solange läuft bis das schreiben wieder erlaubt ist. Wann das schreiben erlaubt ist musst du aus den Datenmengen errechen. Wenn du also 3kb pro Sekunden zulässt und deiner Funktion 6kb übergeben werden darfst du erst nach 2 Sekunden wieder neue Daten zulassen bzw. die Funktion 1 Sekunde blockieren.
Delphi-Quellcode:
procedure TYourStream.Write(const Buffer; Count: Longint): Longint;
begin
while not(NeueDatenErlaubt()) do
begin
//Das Sleep ist geschmackssache
sleep(10);
end;
inherited;
end;