>if you wish to send the whole string, you don't have to
>pass a size...but the string must be
>alive until the completion handler is called.
OK, now I try that. I use a member variable string instead of char*. I got another error.
I tried to use the same string as buffer for both async_read_some and async_write
I guess the string can not be treated as a mutable buffer, so maybe I should keep the original char * buffer for async_read_some and use the string only for outputting with async_write. Is that right?
(or any other recommendation?)
//NOW data_ member variable is string istead of char*
void start()
{
socket_.async_read_some(boost::asio::buffer(data_),
boost::bind(&session::handle_login, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
}
Error message includes:
c:\program files\boost\boost_1_38\boost\asio\detail\win_iocp_socket_service.hpp(1409) : error C2664: 'boost::asio::mutable_buffer::mutable_buffer(const boost::asio::mutable_buffer &)' : cannot convert parameter 1 from 'const boost::asio::const_buffer' to 'const boost::asio::mutable_buffer &'
Reason: cannot convert from 'const boost::asio::const_buffer' to 'const boost::asio::mutable_buffer'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
You can see the full error messages I get here:
http://pastebin.com/f4ee951e4
TIA
Best regards,
Ozgur (Oscar) Ozturk
www.DrOzturk.com
Phone: +1 (908) DROZGUR
i.e, +1 (908) 376-9487
> boost::asio::async_write(socket_,boost::asio::buffer does not copy your local string, so the string
> boost::asio::buffer(replyString, replyString.size()),
> boost::bind(&session::handle_write, this,
> boost::asio::placeholders::error));
>
> I generate the replyString to have results from my database query separated
> with ^ signs (which is used to tokenize the replyString on the client
> side...)
>
> string replyString="1^";
vanishes before the actual async. write takes place.
By the way, if you wish to send the whole string, you don't have to
pass a size: boost::asio::buffer(replyString) - but the string must be
alive until the completion handler is called.
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users