Add C++11 examples to documentation.
diff --git a/asio/release.pl b/asio/release.pl index b00bd97..05b39e8 100755 --- a/asio/release.pl +++ b/asio/release.pl
@@ -5,6 +5,7 @@ use Date::Format; use File::Path; use File::Copy; +use File::Basename; our $version_major; our $version_minor; @@ -178,6 +179,27 @@ system("cp -vR src/doc/html/* doc"); } +sub build_example_diffs +{ + my @cpp11_files = `find src/examples/cpp11 -type f -name "*.*pp"`; + foreach my $cpp11_file (@cpp11_files) + { + chomp($cpp11_file); + + my $cpp03_file = $cpp11_file; + $cpp03_file =~ s/\/cpp11\//\/cpp03\//; + my $output_diff = $cpp11_file; + $output_diff =~ s/src\/examples\/cpp11\///g; + my ($output_diff_name, $output_dir) = fileparse($output_diff); + my $output_html = $output_diff . ".html"; + + mkpath("doc/examples/diffs/$output_dir"); + system("diff -U1000000 $cpp03_file $cpp11_file > doc/examples/diffs/$output_diff"); + system("cd doc/examples/diffs && diff2html.py -i $output_diff -o $output_html"); + unlink("doc/examples/diffs/$output_diff"); + } +} + sub make_asio_packages { system("./autogen.sh"); @@ -359,6 +381,7 @@ update_asio_version_hpp(); update_boost_asio_version_hpp(); build_asio_doc(); +build_example_diffs(); make_asio_packages(); build_boost_asio_doc(); create_boost_asio_content();
diff --git a/asio/src/doc/examples.qbk b/asio/src/doc/examples.qbk index 296ae7d..c34f7f6 100644 --- a/asio/src/doc/examples.qbk +++ b/asio/src/doc/examples.qbk
@@ -8,6 +8,20 @@ [section:examples Examples] +* [link asio.examples.cpp03_examples C++03 Examples]: Illustrates the use of +Asio using only C++03 language and library features. Where necessary, the +examples make use of selected Boost C++ libraries. + +* [link asio.examples.cpp11_examples C++11 Examples]: Contains a limited set of +the C++03 Asio examples, updated to use only C++11 library and language +facilities. These examples do not make direct use of Boost C++ libraries. To +show the changes between C++03 and C++11, these examples include a diff between +the C++03 and C++11 versions. + + +[section:cpp03_examples C++03 Examples] + + [heading Allocation] This example shows how to customise the allocation of memory associated with @@ -313,3 +327,86 @@ [endsect] + + +[section:cpp11_examples C++11 Examples] + + +[heading Allocation] + +This example shows how to customise the allocation of memory associated with +asynchronous operations. + +* [@../src/examples/cpp11/allocation/server.cpp] ([@examples/diffs/allocation/server.cpp.html diff to C++03]) + + +[heading Buffers] + +This example demonstrates how to create reference counted buffers that can be +used with socket read and write operations. + +* [@../src/examples/cpp11/buffers/reference_counted.cpp] ([@examples/diffs/buffers/reference_counted.cpp.html diff to C++03]) + + +[heading Chat] + +This example implements a chat server and client. The programs use a custom +protocol with a fixed length message header and variable length message body. + +* [@../src/examples/cpp11/chat/chat_message.hpp] ([@examples/diffs/chat/chat_message.hpp.html diff to C++03]) +* [@../src/examples/cpp11/chat/chat_client.cpp] ([@examples/diffs/chat/chat_client.cpp.html diff to C++03]) +* [@../src/examples/cpp11/chat/chat_server.cpp] ([@examples/diffs/chat/chat_server.cpp.html diff to C++03]) + + +[heading Echo] + +A collection of simple clients and servers, showing the use of both synchronous +and asynchronous operations. + +* [@../src/examples/cpp11/echo/async_tcp_echo_server.cpp] ([@examples/diffs/echo/async_tcp_echo_server.cpp.html diff to C++03]) +* [@../src/examples/cpp11/echo/async_udp_echo_server.cpp] ([@examples/diffs/echo/async_udp_echo_server.cpp.html diff to C++03]) +* [@../src/examples/cpp11/echo/blocking_tcp_echo_client.cpp] ([@examples/diffs/echo/blocking_tcp_echo_client.cpp.html diff to C++03]) +* [@../src/examples/cpp11/echo/blocking_tcp_echo_server.cpp] ([@examples/diffs/echo/blocking_tcp_echo_server.cpp.html diff to C++03]) +* [@../src/examples/cpp11/echo/blocking_udp_echo_client.cpp] ([@examples/diffs/echo/blocking_udp_echo_client.cpp.html diff to C++03]) +* [@../src/examples/cpp11/echo/blocking_udp_echo_server.cpp] ([@examples/diffs/echo/blocking_udp_echo_server.cpp.html diff to C++03]) + + +[heading HTTP Server] + +This example illustrates the use of asio in a simple single-threaded server +implementation of HTTP 1.0. It demonstrates how to perform a clean shutdown by +cancelling all outstanding asynchronous operations. + +* [@../src/examples/cpp11/http/server/connection.cpp] ([@examples/diffs/http/server/connection.cpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/connection.hpp] ([@examples/diffs/http/server/connection.hpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/connection_manager.cpp] ([@examples/diffs/http/server/connection_manager.cpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/connection_manager.hpp] ([@examples/diffs/http/server/connection_manager.hpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/header.hpp] ([@examples/diffs/http/server/header.hpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/main.cpp] ([@examples/diffs/http/server/main.cpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/mime_types.cpp] ([@examples/diffs/http/server/mime_types.cpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/mime_types.hpp] ([@examples/diffs/http/server/mime_types.hpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/reply.cpp] ([@examples/diffs/http/server/reply.cpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/reply.hpp] ([@examples/diffs/http/server/reply.hpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/request.hpp] ([@examples/diffs/http/server/request.hpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/request_handler.cpp] ([@examples/diffs/http/server/request_handler.cpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/request_handler.hpp] ([@examples/diffs/http/server/request_handler.hpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/request_parser.cpp] ([@examples/diffs/http/server/request_parser.cpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/request_parser.hpp] ([@examples/diffs/http/server/request_parser.hpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/server.cpp] ([@examples/diffs/http/server/server.cpp.html diff to C++03]) +* [@../src/examples/cpp11/http/server/server.hpp] ([@examples/diffs/http/server/server.hpp.html diff to C++03]) + + +[heading Spawn] + +Example of using the asio::spawn() function, a wrapper around the +[@www.boost.org/doc/libs/release/libs/coroutine/index.html Boost.Coroutine] +library, to implement a chain of asynchronous operations using stackful +coroutines. + +* [@../src/examples/cpp11/spawn/echo_server.cpp] ([@examples/diffs/spawn/echo_server.cpp.html diff to C++03]) + + +[endsect] + + +[endsect]
diff --git a/asio/src/doc/overview/allocation.qbk b/asio/src/doc/overview/allocation.qbk index aa7051a..5cbd489 100644 --- a/asio/src/doc/overview/allocation.qbk +++ b/asio/src/doc/overview/allocation.qbk
@@ -52,6 +52,7 @@ [link asio.reference.asio_handler_allocate asio_handler_allocate], [link asio.reference.asio_handler_deallocate asio_handler_deallocate], -[link asio.examples.allocation custom memory allocation example]. +[link asio.examples.cpp03_examples.allocation custom memory allocation example (C++03)], +[link asio.examples.cpp11_examples.allocation custom memory allocation example (C++11)]. [endsect]
diff --git a/asio/src/doc/overview/buffers.qbk b/asio/src/doc/overview/buffers.qbk index aab8d72..89c037a 100644 --- a/asio/src/doc/overview/buffers.qbk +++ b/asio/src/doc/overview/buffers.qbk
@@ -157,6 +157,7 @@ [link asio.reference.streambuf streambuf], [link asio.reference.ConstBufferSequence ConstBufferSequence], [link asio.reference.MutableBufferSequence MutableBufferSequence], -[link asio.examples.buffers buffers example]. +[link asio.examples.cpp03_examples.buffers buffers example (C++03)], +[link asio.examples.cpp11_examples.buffers buffers example (c++11)]. [endsect]
diff --git a/asio/src/doc/overview/iostreams.qbk b/asio/src/doc/overview/iostreams.qbk index a526de5..ef69aba 100644 --- a/asio/src/doc/overview/iostreams.qbk +++ b/asio/src/doc/overview/iostreams.qbk
@@ -62,7 +62,7 @@ [link asio.reference.ip__tcp.iostream ip::tcp::iostream], [link asio.reference.basic_socket_iostream basic_socket_iostream], -[link asio.examples.iostreams iostreams examples]. +[link asio.examples.cpp03_examples.iostreams iostreams examples]. [heading Notes]
diff --git a/asio/src/doc/overview/line_based.qbk b/asio/src/doc/overview/line_based.qbk index 339d7ac..736ada4 100644 --- a/asio/src/doc/overview/line_based.qbk +++ b/asio/src/doc/overview/line_based.qbk
@@ -113,6 +113,6 @@ [link asio.reference.is_match_condition is_match_condition], [link asio.reference.read_until read_until()], [link asio.reference.streambuf streambuf], -[link asio.examples.http_client HTTP client example]. +[link asio.examples.cpp03_examples.http_client HTTP client example]. [endsect]
diff --git a/asio/src/doc/overview/posix.qbk b/asio/src/doc/overview/posix.qbk index 4989a4b..bcb331d 100644 --- a/asio/src/doc/overview/posix.qbk +++ b/asio/src/doc/overview/posix.qbk
@@ -61,7 +61,7 @@ [link asio.reference.local__stream_protocol.endpoint local::stream_protocol::endpoint], [link asio.reference.local__stream_protocol.iostream local::stream_protocol::iostream], [link asio.reference.local__stream_protocol.socket local::stream_protocol::socket], -[link asio.examples.unix_domain_sockets UNIX domain sockets examples]. +[link asio.examples.cpp03_examples.unix_domain_sockets UNIX domain sockets examples]. [heading Notes]
diff --git a/asio/src/doc/overview/protocols.qbk b/asio/src/doc/overview/protocols.qbk index 1e780cd..0ea1811 100644 --- a/asio/src/doc/overview/protocols.qbk +++ b/asio/src/doc/overview/protocols.qbk
@@ -150,6 +150,6 @@ [link asio.reference.ip__udp ip::udp], [link asio.reference.ip__icmp ip::icmp], [link asio.tutorial.tutdaytime1 daytime protocol tutorials], -[link asio.examples.icmp ICMP ping example]. +[link asio.examples.cpp03_examples.icmp ICMP ping example]. [endsect]
diff --git a/asio/src/doc/overview/reactor.qbk b/asio/src/doc/overview/reactor.qbk index 4bd6fe8..37a883e 100644 --- a/asio/src/doc/overview/reactor.qbk +++ b/asio/src/doc/overview/reactor.qbk
@@ -39,6 +39,6 @@ [link asio.reference.null_buffers null_buffers], [link asio.reference.basic_socket.non_blocking basic_socket::non_blocking()], [link asio.reference.basic_socket.native_non_blocking basic_socket::native_non_blocking()], -[link asio.examples.nonblocking nonblocking example]. +[link asio.examples.cpp03_examples.nonblocking nonblocking example]. [endsect]
diff --git a/asio/src/doc/overview/signals.qbk b/asio/src/doc/overview/signals.qbk index 1750b67..87f99a7 100644 --- a/asio/src/doc/overview/signals.qbk +++ b/asio/src/doc/overview/signals.qbk
@@ -38,6 +38,7 @@ [heading See Also] [link asio.reference.signal_set signal_set], -[link asio.examples.http_server HTTP server example]. +[link asio.examples.cpp03_examples.http_server HTTP server example (C++03)], +[link asio.examples.cpp11_examples.http_server HTTP server example (C++11)]. [endsect]
diff --git a/asio/src/doc/overview/ssl.qbk b/asio/src/doc/overview/ssl.qbk index 74349c7..1da540b 100644 --- a/asio/src/doc/overview/ssl.qbk +++ b/asio/src/doc/overview/ssl.qbk
@@ -110,7 +110,7 @@ [link asio.reference.ssl__context ssl::context], [link asio.reference.ssl__rfc2818_verification ssl::rfc2818_verification], [link asio.reference.ssl__stream ssl::stream], -[link asio.examples.ssl SSL example]. +[link asio.examples.cpp03_examples.ssl SSL example]. [heading Notes]
diff --git a/asio/src/doc/overview/strands.qbk b/asio/src/doc/overview/strands.qbk index 749ee37..932b964 100644 --- a/asio/src/doc/overview/strands.qbk +++ b/asio/src/doc/overview/strands.qbk
@@ -57,6 +57,6 @@ [link asio.reference.io_service__strand io_service::strand], [link asio.tutorial.tuttimer5 tutorial Timer.5], -[link asio.examples.http_server_3 HTTP server 3 example]. +[link asio.examples.cpp03_examples.http_server_3 HTTP server 3 example]. [endsect]