Non riesco a trovare una buona spiegazione di ciò che consume() e commit() in realtà significa, in realtà non capisco affatto streambuf.boost streambuf consumare e commit, che cos'è
La mia comprensione è che uno streambuf è solo un array di caratteri. Ma perché è nella documentazione,
basic_streambuf::data
Get a list of buffers that represents the input sequence.
quindi in realtà ci sono molti buffer? E qual è la "sequenza di input" e la "sequenza di output"? Sono questi altri due buffer?
Cosa fa realmente il seguente codice?
streambuf b;
size_t size;
size = read(socket, b.prepare(1024));
b.commit(size);
size = write(socket, b.data());
b.consume(size);
quando chiamo b.prepare(), lo fa allocare un nuovo buffer per il read() per inserire i dati? Quindi quando vengono trasferiti i dati da quel buffer al buffer streambuf sottostante? Ho pensato che fosse il commit(), ma
basic_streambuf::commit
Move characters from the output sequence to the input sequence.
così sembra che impegnare effettivamente muove i dati dal 'sequenza di uscita' a 'sequenza di ingresso' senza mai menzionare il buffer sottostante utilizzato per memorizzare i dati!