|
Boost : |
From: Jupiter (jupiter.hce_at_[hidden])
Date: 2020-06-10 08:57:15
Thank you very much Gavin.
On 6/10/20, Gavin Lambert via Boost <boost_at_[hidden]> wrote:
> On 10/06/2020 18:12, Jupiter wrote:
>> Sorry, this is really a silly question, but I could not find a clear
>> API in streambuf reference,
>
> https://www.boost.org/doc/libs/1_73_0/doc/html/boost_asio/reference/streambuf.html
>
>> I have following code to call PacketData
>> in a loop, the buffer.get() looked to accumulate previous data in the
>> buffer, so I should call buffer.clear() before calling buffer.get(),
>> but apparently there no âclearâ in boost::asio::basic_streambuf.
>>
>> PacketData(const msgpack::sbuffer &sb, boost::asio::streambuf &buffer)) {
>> .......
>> std::ostream os(buffer.get());
>> os.write((char *)&header, sizeof(header));
>> os.write((char *)sb.data(), sb.size());
>> .......
>> }
>
> Firstly, make sure you're using separate streambufs for read and write
> operations -- this is mandatory if you have async reads/writes
> concurrently pending, but is generally a good idea anyway.
>
> commit() [1] and consume() [2] are the methods that move or remove data.
> Which one you need depends on what you're doing with the buffer.
>
> Both of these require the number of characters written/read.
>
> As the examples show, for reading from a socket (or other I/O object)
> you will typically prepare() [3], read, then commit; whereas for writing
> to a socket you will write, then consume.
>
> Note that some of the ASIO methods that accept a streambuf parameter
> directly will do this for you, so you don't always need to call them
> yourself.
>
> [1]:
> https://www.boost.org/doc/libs/1_73_0/doc/html/boost_asio/reference/basic_streambuf/commit.html
> [2]:
> https://www.boost.org/doc/libs/1_73_0/doc/html/boost_asio/reference/basic_streambuf/consume.html
> [3]:
> https://www.boost.org/doc/libs/1_73_0/doc/html/boost_asio/reference/basic_streambuf/prepare.html
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>
-- "A man can fail many times, but he isn't a failure until he begins to blame somebody else." -- John Burroughs
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk