class Zlib::ZStream

Zlib::ZStream ist die abstrakte Klasse für den Stream, der die komprimierten Daten verarbeitet. Die Operationen sind in den Unterklassen definiert: Zlib::Deflate für die Komprimierung und Zlib::Inflate für die Dekomprimierung.

Eine Instanz von Zlib::ZStream hat einen Stream (struct zstream in der Quelle) und zwei Puffer variabler Länge, die mit dem Eingang (next_in) des Streams und dem Ausgang (next_out) des Streams verbunden sind. In diesem Dokument bedeutet "Eingabepuffer" den Puffer für die Eingabe und "Ausgabepuffer" den Puffer für die Ausgabe.

Daten, die in eine Instanz von Zlib::ZStream eingegeben werden, werden vorübergehend am Ende des Eingabepuffers gespeichert und dann werden Daten aus dem Eingabepuffer vom Anfang des Puffers verarbeitet, bis keine weitere Ausgabe vom Stream erzeugt wird (d. h. bis avail_out > 0 nach der Verarbeitung). Während der Verarbeitung wird der Ausgabepuffer automatisch zugewiesen und erweitert, um alle Ausgabedaten aufzunehmen.

Einige spezielle Instanzmethoden verbrauchen die Daten im Ausgabepuffer und geben sie als String zurück.

Hier ist eine ASCII-Grafik zur Beschreibung des oben Genannten

+================ an instance of Zlib::ZStream ================+
||                                                            ||
||     +--------+          +-------+          +--------+      ||
||  +--| output |<---------|zstream|<---------| input  |<--+  ||
||  |  | buffer |  next_out+-------+next_in   | buffer |   |  ||
||  |  +--------+                             +--------+   |  ||
||  |                                                      |  ||
+===|======================================================|===+
    |                                                      |
    v                                                      |
"output data"                                         "input data"

Wenn während der Verarbeitung des Eingabepuffers ein Fehler auftritt, wird eine Ausnahme ausgelöst, die eine Unterklasse von Zlib::Error ist. Zu diesem Zeitpunkt behalten sowohl der Eingabe- als auch der Ausgabepuffer ihren Zustand zum Zeitpunkt des Fehlers.

Methoden-Katalog

Viele der Methoden in dieser Klasse sind ziemlich niedrigschwellig und für Benutzer wahrscheinlich von geringem Interesse. Tatsächlich werden Benutzer diese Klasse wahrscheinlich nicht direkt verwenden; stattdessen werden sie an Zlib::Inflate und Zlib::Deflate interessiert sein.

Die übergeordneten Methoden sind unten aufgeführt.