BIO_F_BUFFER(3ssl) OpenSSL BIO_F_BUFFER(3ssl)

BIO_get_buffer_num_lines, BIO_set_read_buffer_size, BIO_set_write_buffer_size, BIO_set_buffer_size, BIO_set_buffer_read_data, BIO_f_buffer - stocare în tampon BIO

#include <openssl/bio.h>
const BIO_METHOD *BIO_f_buffer(void);
long BIO_get_buffer_num_lines(BIO *b);
long BIO_set_read_buffer_size(BIO *b, long size);
long BIO_set_write_buffer_size(BIO *b, long size);
long BIO_set_buffer_size(BIO *b, long size);
long BIO_set_buffer_read_data(BIO *b, void *buf, long num);

BIO_f_buffer() returnează metoda BIO de stocare în tampon.

Datele scrise într-un BIO tampon sunt stocate în tampon și scrise periodic în următorul BIO din lanț. Datele citite dintr-un BIO tampon provin dintr-un tampon intern care este umplut din următorul BIO din lanț. Sunt acceptate atât BIO_gets() cât și BIO_puts().

Apelarea BIO_reset() pe un BIO de stocare în tampon șterge toate datele stocate în tampon.

BIO_get_buffer_num_lines() returnează numărul de linii aflate în prezent în tampon.

BIO_set_read_buffer_size(), BIO_set_write_buffer_size() și BIO_set_buffer_size() definesc dimensiunile tamponului de citire, scriere sau atât de citire, cât și de scriere la size. Dimensiunea inițială a tamponului este DEFAULT_BUFFER_SIZE, în prezent 4096. Orice încercare de a reduce dimensiunea tamponului sub DEFAULT_BUFFER_SIZE este ignorată. Orice date stocate în tampon sunt șterse atunci când dimensiunea tamponului este modificată.

BIO_set_buffer_read_data() șterge tamponul de citire și îl umple cu num octeți din buf. Dacă num este mai mare decât dimensiunea actuală a tamponului, tamponul este extins.

Aceste funcții, cu excepția BIO_f_buffer(), sunt implementate ca macroinstrucțiuni.

BIO-urile de stocare în tampon implementează BIO_read_ex() și BIO_gets() utilizând operații BIO_read_ex() pe următorul BIO din lanț și stocând rezultatul într-un tampon intern, din care octeții sunt returnați apelantului în funcție de apel; un BIO_gets() garantează că apelantului i se va da o linie întreagă, iar BIO_read_ex() garantează că apelantului i se va da numărul de octeți solicitat, cu excepția cazului în care apare o eroare sau se ajunge la sfârșitul comunicării în următorul BIO. Prin adăugarea unui BIO de stocare în tampon la începutul unui lanț, este posibil să se furnizeze funcționalitatea BIO_gets() sau BIO_read_ex() cu dimensiune exactă, dacă BIO-urile următoare nu o asigură.

Nu adăugați mai mult de un BIO_f_buffer() într-un lanț BIO. Dacă faceți acest lucru, se va forța citirea completă a dimensiunii tamponului intern al BIO_f_buffer() superior, care este de minimum 4 Kio.

Datele sunt scrise în următorul BIO din lanț numai când tamponul de scriere se umple sau când se apelează BIO_flush(). Prin urmare, este important să se apeleze BIO_flush() ori de câte ori trebuie scrise date în așteptare, cum ar fi atunci când se elimină un BIO de stocare în tampon folosind BIO_pop(). Poate fi necesar să se reîncerce BIO_flush() dacă sursa/destinația finală BIO nu este blocantă.

BIO_f_buffer() returnează metoda BIO de stocare în tampon.

BIO_get_buffer_num_lines() returnează numărul de linii stocate în tampon (poate fi 0) sau o valoare negativă în cazul apariției unor erori.

BIO_set_read_buffer_size(), BIO_set_write_buffer_size() și BIO_set_buffer_size() returnează 1 dacă dimensiunea tamponului a fost modificată cu succes sau <=0 în caz de eșec.

BIO_set_buffer_read_data() returnează 1 dacă datele au fost configurate corect sau <=0 dacă a apărut o eroare.

bio(7), BIO_reset(3), BIO_flush(3), BIO_pop(3), BIO_ctrl(3).

Drepturi de autor 2000-2020 The OpenSSL Project Authors. Toate drepturile rezervate.

Licențiat sub Licența Apache 2.0 („License”). Nu aveți voie să utilizați acest fișier decât în conformitate cu licența. Puteți obține o copie din fișierul LICENSE din distribuția sursei sau de la https://www.openssl.org/source/license.html.

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

5 august 2025 3.5.2