Aktuelle Version |
Dein Text |
Zeile 108: |
Zeile 108: |
| | | |
| === Gepufferter Modus === | | === Gepufferter Modus === |
− | Viele Applikationen erwarten einen Gepufferten Modus vor zu finden in dem sie einen Ring Puffer mit sehr definiertem zustand vor finden in den sie Arbeiten können. Dieses Vorgehen ist nur mit einem Lokalen Ringpuffer möglich der recht groß ist und viele Nachteile in sich birgt. Aus diesem Grunde wird dieser Modus nicht Empfohlen.
| + | ... |
− | | |
− | An dieser Stelle soll auch nur Kurz erwähnt sein das dieser Existiert und mit der Funktion roar_vs_buffer() zu steuern ist. Weitere Informationen finden sich in der Dokumentation.
| |
− | | |
− | Um nicht weiter zu Verwirren direkt zum Nächsten Kapitel...
| |
| | | |
| === Meta Daten === | | === Meta Daten === |
Zeile 176: |
Zeile 172: |
| | | |
| == Optionales == | | == Optionales == |
− | === Nicht Blockender Zugriffsmodus ===
| |
− | Wie auf normalen Filehandles in der UNIX Welt kann auch auf VS Objekten ein Nicht-Blockender Modus verwendet werden. Das heißt das Lese- und Schreibbefehle nicht blockieren sondern nur im internen Puffer operieren und somit schneller zurückkehren. Der Nachteil ist das dabei so genannte "short reads" beziehungsweise "short writes" häufiger passieren.
| |
− |
| |
− | Der Nicht Blockierende Modus kann mittels der Funktion roar_vs_blocking() verwendet werden wie im folgenden Beispiel gezeigt:
| |
− | <nowiki>ret = roar_vs_blocking(vss, ROAR_VS_TRUE, &err);</nowiki>
| |
− |
| |
− | Der zweite Parameter gibt dabei an ob der Modus gesetzt werden soll (ROAR_VS_TRUE) oder zurückgesetzt (ROAR_VS_FALSE). Natürlich kann er auch gekippt (ROAR_VS_TOGGLE) oder Abgefragt werden (ROAR_VS_ASK).
| |
− |
| |
− | === Warten auf Stream Ende ===
| |
− | Mit der Funktion roar_vs_sync() kann man auf das Ende des Streams warten.
| |
− |
| |
− | Beispiel:
| |
− | <nowiki>ret = roar_vs_write(vss, buf, len, &err); // letzter Schreibzugriff
| |
− | ret = roar_vs_sync(vss, ROAR_VS_WAIT, &err);
| |
− | // am Stream-Ende
| |
− | ret = roar_vs_close(vss, ROAR_VS_FALSE, &err);</nowiki>
| |
− |
| |
− | Es sollte nach dem Aufruf von roar_vs_sync() entweder direkt der Stream geschlossen werden oder erneut geschrieben. In letzterem Fall wird ein Knacken oder ähnliches zu hören sein durch die Unterlaufs bedingte Unterbrechung (engl. "underrun").
| |
− |
| |
| === Interface zur Haupt API === | | === Interface zur Haupt API === |
| ... | | ... |