...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
#include
s, e.g. if the
program uses boost::array
but does not explicitly include
<boost/array.hpp>
.)
deadline_timer
implementation to improve performance.
asio::streambuf
with async_read()
and async_read_until()
.
These read operations now use the existing capacity of the streambuf
when reading, rather than limiting
the read to 512 bytes.
#include
<boost/asio/impl/src.cpp>
to one source file in a program, then
build the program with BOOST_ASIO_SEPARATE_COMPILATION
defined in the project/compiler settings. Alternatively, BOOST_ASIO_DYN_LINK
may be defined to
build a separately-compiled Asio as part of a shared library.
BOOST_ASIO_DISABLE_FENCED_BLOCK
to permit the disabling of memory fences around completion handlers, even
if thread support is enabled.
const
types.
null_buffers
variant of async_send_to
(#4170).
unsigned char
is used with isdigit
in
getaddrinfo
emulation (#4201).
operator+
overload in buffers_iterator
(#4382).
null_buffers
operations on Windows.
timerfd
for dispatching timers on Linux, when available.
ip::resolver_query_base::flags
as per the TR2 proposal. This type prevents implicit conversion from int
to flags
,
allowing the compiler to catch cases where users incorrectly pass a numeric
port number as the service name.
#define NOMINMAX
for all Windows compilers. Users can define BOOST_ASIO_NO_NOMINMAX
to suppress this definition (#3901).
error::eof
result to the completion handler
(#4023).
io_control()
member functions to always call ioctl
on the underlying descriptor when
modifying blocking mode (#3307).
InternetProtocol::resolver_query
and InternetProtocol::resolver_iterator
,
as neither typedef is part of the documented InternetProtocol
requirements. The corresponding typedefs in the ip::tcp
,
ip::udp
and ip::icmp
classes have been deprecated.
select()
.
BOOST_ASIO_DISABLE_THREADS
macro that allows Asio's threading support to be independently disabled.
boost::addressof
to get the address of handler objects, rather than applying operator&
directly (#2977).
OVERLAPPED
structure
to be valid until both the initiating function call has returned and the
completion packet has been delivered.
boost_
prefix to
the extern "C"
thread entry point function (#3809).
getaddrinfo
emulation,
only check the socket type (SOCK_STREAM
or SOCK_DGRAM
) if a service
name has been specified. This should allow the emulation to work with raw
sockets.
buffered*_stream<>
templates to treat 0-byte reads and writes as no-ops, to comply with the
documented type requirements for SyncReadStream
,
AsyncReadStream
, SyncWriteStream
and AsyncWriteStream
.
throw
keyword to boost::throw_exception()
to allow Asio to be used when exception support is disabled. Note that
the SSL wrappers still require exception support (#2754).
/dev/poll
backend.
_GLIBCXX_DEBUG
is defined (#3098).
BOOST_ASIO_HASH_MAP_BUCKETS
may be used
to tweak the sizes used for the bucket arrays. (N.B. this feature introduced
a bug which was fixed in Asio 1.4.3 / Boost 1.40.)
io_control()
so that it adheres to the documented
type requirements for IoControlCommand (#2820).
ReadFile
call fails with ERROR_MORE_DATA
. This enables a hack
where a windows::stream_handle
can be used with a message-oriented
named pipe (#2936).
BOOST_ASIO_DISABLE_SERIAL_PORT
is defined (#2917).
windows::overlapped_ptr::complete()
are correctly passed to the completion
handler (#2614).
size_t
CompletionCondition(error_code ec, size_t total)
,
where the return value indicates the maximum number of bytes to be transferred
on the next read or write operation. (The old CompletionCondition signature
is still supported for backwards compatibility).
HANDLE
s
such as named pipes (requires HANDLE
s
that work with I/O completion ports).
HANDLE
s
such as files (requires HANDLE
s
that work with I/O completion ports).
null_buffers
type.
read_until()
and async_read_until()
overloads that take a user-defined function object for locating message
boundaries.
BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE
) that
may provide better io_service
scalability across many processors.
First release of Asio as part of Boost.