BIO_F_BUFFER(3ssl) | OpenSSL | BIO_F_BUFFER(3ssl) |
NUME
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
SINOPSIS
#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);
DESCRIERE
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.
NOTE
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ă.
VALORI RETURNATE
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.
CONSULTAȚI ȘI
bio(7), BIO_reset(3), BIO_flush(3), BIO_pop(3), BIO_ctrl(3).
DREPTURI DE AUTOR
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.
TRADUCERE
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 |