Re: [Boost-bugs] [Boost C++ Libraries] #5133: Iostreams code_converter buffer

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #5133: Iostreams code_converter buffer
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2011-01-27 19:29:55


#5133: Iostreams code_converter buffer
--------------------------------+-------------------------------------------
  Reporter: eddie@… | Owner: turkanis
      Type: Bugs | Status: new
 Milestone: To Be Determined | Component: iostreams
   Version: Boost 1.45.0 | Severity: Problem
Resolution: | Keywords: code_converter flush sync buffer iostreams
--------------------------------+-------------------------------------------
Changes (by anonymous):

  * keywords: I've been working on converting a the fastcgi++ library over
               to using boost::iostreams from
               std::iostreams and I've noticed some
               peculiarities that I can't seem to work
               passed. For one, how do you change the
               buffer size of the code_converter adaptor?
               The built in facilities don't seem to
               actually do anything. I am adding to a
               filtering_stream and have noticed that for
               the following statements...
               stream.push(code_converter<MyDevice>(myDevice),
               8192);
               stream.push(code_converter<MyDevice>(myDevice,
               8192));
               stream.push(code_converter<MyDevice>(myDevice,
               8192), 8192); All result in a buffer of 128
               bytes. I can't figure out a way to actually
               change it. I've been monitoring what is going
               in the myDevice and it is always 128 byte
               chunks (or less). If I remove the
               code_converter from the stream and go
               directly in myDevice as per
               stream.push(myDevice, 8192); the buffer is
               sized as I want it to be and myDevice
               receives chunks of data maxing at 8192
               bytes. Secondly, when using the statement
               stream.push(code_converter<MyDevice>(myDevice,
               8192)); code_converter calls not
               MyDevice(const MyDevice&) for copying
               constructing the object but for some reason
               MyDevice(const MyDevice&, const long int&).
               What is that? Why is code_converter looking
               for such a constructor when I specify a
               buffer size for the code converter? Thirdly,
               I can not for the life of me make the code
               converter flush it's data. If I call a
               stream.strict_sync() should the
               code_converter not get flushed as well? It
               doesn't. Everything else in the chain does
               but the code_converter won't fully flush
               until destruction. => code_converter flush
               sync buffer iostreams

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/5133#comment:1>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:05 UTC