Boost logo

Boost Users :

From: Rob Desbois (rob.desbois_at_[hidden])
Date: 2008-01-23 07:00:17


Hmm well I'm not entirely sure what I've done correctly now...but this seems
to work!
Another problem with the stream...but another thread would serve it well.

Thanks all for the help :-)
--rob

On Jan 22, 2008 5:12 PM, Rob Desbois <rob.desbois_at_[hidden]> wrote:

> Jonathan - thank you, that's helped massively. I now have a serial_device
> type along the lines you described :-)
>
> Bob - thanks for the asio suggestion - I decided that it wasn't quite what
> I'm looking for though.
>
> Eric - I realised I actually configure the serial port as a blocking
> device so it should be fine.
>
> My final (I hope!) problem is in using a stream.
> I cannot compile a program creating a stream object templated for my
> serial device:
>
> #include <boost/iostreams/stream.hpp>
>
> #include "serial_device.h"
> >
> > int main(void) {
> > boost::iostreams::stream<serial_device> s;
> > }
> >
>
> Compiling that with g++ 3.3.3 gives:
>
> test-stream.cpp: In function `int main()':
> > test-stream.cpp:5: error: invalid use of template `template<class
> > Device,
> > class Tr, class Alloc> struct boost::iostreams::stream'
> > test-stream.cpp:5: error: syntax error before `;' token
> >
>
> This is with Boost 1.34.1
> Can any of you shed any light on this please?!
>
> Thanks for all the help so far :-)
> --rob
>
>
>
> On Jan 21, 2008 3:09 PM, Eric MALENFANT <
> Eric.Malenfant_at_[hidden]> wrote:
>
> > > Rob Desbois, le 18 janvier 2008 08:02:
> > >
> > > >
> > > > After trying to compile I realised that a SeekableDevice
> > > > provides read, write and seek functions, nothing else.
> > > > Am I seriously misunderstanding the point of
> > > boost::iostreams?
> >
> > > On Jan 18, 2008 6:46 PM, Eric MALENFANT
> > > <Eric.Malenfant_at_[hidden] > wrote:
> >
> > > A file_descriptor only implements the Device concept,
> > > it not an std::iostream.
> > > If you want an std::iostream, you wrap the Device in a
> > > boost::iostreams::stream which, as stated in its
> > > documentation: "performs i/o by delegating to a contained
> > > Device", and "derives from a specialization of
> > > std::basic_istream, std::basic_ostream or
> > > std::basic_iostream, depending on whether the underlying
> > > Device models Source, Sink or both."
> >
> > > Rob Desbois, le 18 janvier 2008 13:58:
> > >
> > > Are you able to comment on whether I 'should' be doing this
> > > as regards the non-blocking and non-seekable nature of a serial port?
> >
> > The "seekability" should not be a problem. You could define a
> > BidirectionalDevice as Jonathan suggests in another message. If you only
> > need read (or write), you could even just define a Source (or Sink).
> >
> > The "blocking" side of things may be more trouble, depending on your
> > needs.
> > Boost.Iostreams offers minimal support for non-blocking strings:
> > boost::iostreams::char_traits::would_block() can be used to indicate that a
> > read or write attempt was interrupted but, unless I missed something,
> > nothing allows the caller to wait for the blocking condition to be removed
> > (like select() allows for non-blocking sockets, for example), so the caller
> > has to poll the stream. As suggested by Bob Warren, Boost.Asio may offer
> > an interesting alternative.
> >
> > Éric Malenfant
> > ---------------------------------------------
> > Amateur programmers think there are 1000 bytes in a kilobyte;
> > Real Programmers think there are 1024 meters in a kilometer.
> > _______________________________________________
> > Boost-users mailing list
> > Boost-users_at_[hidden]
> > http://lists.boost.org/mailman/listinfo.cgi/boost-users
> >
>
>
>
> --
> Rob Desbois
> Eml: rob.desbois_at_[hidden]
> Tel: 07946 705987
> "There's a whale there's a whale there's a whale fish" he cried, and the
> whale was in full view.
> ...Then ooh welcome. Ahhh. Ooh mug welcome.
>

-- 
Rob Desbois
Eml: rob.desbois_at_[hidden]
Tel: 07946 705987
"There's a whale there's a whale there's a whale fish" he cried, and the
whale was in full view.
...Then ooh welcome. Ahhh. Ooh mug welcome.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net