)]}'
{
  "commit": "8bb255fd2017e15025565a6d76ef9d3963dd277b",
  "tree": "2019761a5cb9a6b113a5c1a41a1d87110393c1bb",
  "parents": [
    "ff98090acd414d38be03cfc1ce7c0bc244e0da69"
  ],
  "author": {
    "name": "Christopher Kohlhoff",
    "email": "chris@kohlhoff.com",
    "time": "Sun May 19 11:41:18 2013 +1000"
  },
  "committer": {
    "name": "Christopher Kohlhoff",
    "email": "chris@kohlhoff.com",
    "time": "Sun May 19 14:48:30 2013 +1000"
  },
  "message": "Add generic socket protocols and converting move constructors.\n\nFour new protocol classes have been added:\n\n- asio::generic::datagram_protocol\n- asio::generic::raw_protocol\n- asio::generic::seq_packet_protocol\n- asio::generic::stream_protocol\n\nThese classes implement the Protocol type requirements, but allow the\nuser to specify the address family (e.g. AF_INET) and protocol type\n(e.g. IPPROTO_TCP) at runtime.\n\nA new endpoint class template, asio::generic::basic_endpoint, has been\nadded to support these new protocol classes. This endpoint can hold any\nother endpoint type, provided its native representation fits into a\nsockaddr_storage object.\n\nWhen using C++11, it is now possible to perform move construction from a\nsocket (or acceptor) object to convert to the more generic protocol\u0027s\nsocket (or acceptor) type. If the protocol conversion is valid:\n\n  Protocol1 p1 \u003d ...;\n  Protocol2 p2(p1);\n\nthen the corresponding socket conversion is allowed:\n\n  Protocol1::socket socket1(io_service);\n  ...\n  Protocol2::socket socket2(std::move(socket1));\n\nFor example, one possible conversion is from a TCP socket to a generic\nstream-oriented socket:\n\n  asio::ip::tcp::socket socket1(io_service);\n  ...\n  asio::generic::stream_protocol::socket socket2(std::move(socket1));\n\nThe conversion is also available for move-assignment. Note that these\nconversions are not limited to the newly added generic protocol classes.\nUser-defined protocols may take advantage of this feature by similarly\nensuring the conversion from Protocol1 to Protocol2 is valid, as above.\n\nAs a convenience, the socket acceptor\u0027s accept() and async_accept()\nfunctions have been changed so that they can directly accept into a\ndifferent protocol\u0027s socket type, provided the protocol conversion is\nvalid. For example, the following is now possible:\n\n  asio::ip::tcp::acceptor acceptor(io_service);\n  ...\n  asio::generic::stream_protocol::socket socket1(io_service);\n  acceptor.accept(socket1);\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "03b3649ee434f8efe14406855f11f56a6c19b838",
      "old_mode": 33261,
      "old_path": "asio/boostify.pl",
      "new_id": "1beadd0daf9f3522071b964632d1d59956bfbb0e",
      "new_mode": 33261,
      "new_path": "asio/boostify.pl"
    },
    {
      "type": "modify",
      "old_id": "e573d6f9e69dd38ba394e6ec3466e4ac9adce0b4",
      "old_mode": 33188,
      "old_path": "asio/include/Makefile.am",
      "new_id": "fa32331879057becd9e35f1f6743f561d6df5949",
      "new_mode": 33188,
      "new_path": "asio/include/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "06647288a12c15fa1b56db7228a7443bf0a04ede",
      "old_mode": 33188,
      "old_path": "asio/include/asio.hpp",
      "new_id": "02cd1d5d5b348c565fd06e662af58b6972ddd31d",
      "new_mode": 33188,
      "new_path": "asio/include/asio.hpp"
    },
    {
      "type": "modify",
      "old_id": "75005f88c1d86159adee69f03914bb6e5bd28832",
      "old_mode": 33188,
      "old_path": "asio/include/asio/basic_datagram_socket.hpp",
      "new_id": "6d9b4b63407d7384f54b5a91f512c3a095403e86",
      "new_mode": 33188,
      "new_path": "asio/include/asio/basic_datagram_socket.hpp"
    },
    {
      "type": "modify",
      "old_id": "db144c62c1f468e2a45de3716a8b058bddfaa0c8",
      "old_mode": 33188,
      "old_path": "asio/include/asio/basic_raw_socket.hpp",
      "new_id": "33c1530ed77269e7b16a2543b5a1108ffede8793",
      "new_mode": 33188,
      "new_path": "asio/include/asio/basic_raw_socket.hpp"
    },
    {
      "type": "modify",
      "old_id": "17f1bad125498cb87989de096e62210532c5a9dc",
      "old_mode": 33188,
      "old_path": "asio/include/asio/basic_seq_packet_socket.hpp",
      "new_id": "74d3976451711d093a8e54962fb585c13b157580",
      "new_mode": 33188,
      "new_path": "asio/include/asio/basic_seq_packet_socket.hpp"
    },
    {
      "type": "modify",
      "old_id": "3407e7623f2fed00b322f41519b3f5fba6bf96e8",
      "old_mode": 33188,
      "old_path": "asio/include/asio/basic_socket.hpp",
      "new_id": "64f55b472f2204f567a9bbfdfe1d81445c461a88",
      "new_mode": 33188,
      "new_path": "asio/include/asio/basic_socket.hpp"
    },
    {
      "type": "modify",
      "old_id": "d8a395ad3cfad1f0936b8e31591a87d4b18f5a14",
      "old_mode": 33188,
      "old_path": "asio/include/asio/basic_socket_acceptor.hpp",
      "new_id": "5606c51fcaa41b4eb9b6c012c6a2b980cbc96ae8",
      "new_mode": 33188,
      "new_path": "asio/include/asio/basic_socket_acceptor.hpp"
    },
    {
      "type": "modify",
      "old_id": "b370ddd65872167a8884594ad65130a0edb418d2",
      "old_mode": 33188,
      "old_path": "asio/include/asio/basic_stream_socket.hpp",
      "new_id": "eaa86e6c245a10b1efb4e0fcdd7b5980b1366b56",
      "new_mode": 33188,
      "new_path": "asio/include/asio/basic_stream_socket.hpp"
    },
    {
      "type": "modify",
      "old_id": "2c35c79c45a00d03962551fd8a209c4d2b06c708",
      "old_mode": 33188,
      "old_path": "asio/include/asio/datagram_socket_service.hpp",
      "new_id": "eb8ac5e0a374c12a17933e6271c6c67042b584ab",
      "new_mode": 33188,
      "new_path": "asio/include/asio/datagram_socket_service.hpp"
    },
    {
      "type": "modify",
      "old_id": "ccc74bc43b0c115fab4ffb9990462818b81a31b9",
      "old_mode": 33188,
      "old_path": "asio/include/asio/detail/config.hpp",
      "new_id": "3b08aac0c8ee387fca5a077d32f6d11ca8bb496e",
      "new_mode": 33188,
      "new_path": "asio/include/asio/detail/config.hpp"
    },
    {
      "type": "modify",
      "old_id": "4ef4b3f1f0deb8d5058b9e467af93cbc0e95b3d7",
      "old_mode": 33188,
      "old_path": "asio/include/asio/detail/reactive_socket_service.hpp",
      "new_id": "bcce2548ccf03d36a5e1c4d7351ca86969b56bba",
      "new_mode": 33188,
      "new_path": "asio/include/asio/detail/reactive_socket_service.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "77452b42e5ce6c10ac14be76618b349d297ba12f",
      "new_mode": 33188,
      "new_path": "asio/include/asio/generic/basic_endpoint.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6370bc67720c5d8f740b06e2de56b985b6104ecd",
      "new_mode": 33188,
      "new_path": "asio/include/asio/generic/datagram_protocol.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b9415ae832d279601fac15636d42adf14fa712b8",
      "new_mode": 33188,
      "new_path": "asio/include/asio/generic/detail/endpoint.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8399d95e351b8b2eda8d49209ee28a859d869b42",
      "new_mode": 33188,
      "new_path": "asio/include/asio/generic/detail/impl/endpoint.ipp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e054a7f91f62dad838aecc86544526717676cae1",
      "new_mode": 33188,
      "new_path": "asio/include/asio/generic/raw_protocol.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fdd068df8fa16d260394bced8511b232e3546014",
      "new_mode": 33188,
      "new_path": "asio/include/asio/generic/seq_packet_protocol.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "369071c17d3739aacbccac74fb9bc6b53de932ec",
      "new_mode": 33188,
      "new_path": "asio/include/asio/generic/stream_protocol.hpp"
    },
    {
      "type": "modify",
      "old_id": "7dd7c6bcdc648ace3364508772ed19185d48cd10",
      "old_mode": 33188,
      "old_path": "asio/include/asio/impl/src.hpp",
      "new_id": "1b3df968e837819e52d3c74916d8384d6579621e",
      "new_mode": 33188,
      "new_path": "asio/include/asio/impl/src.hpp"
    },
    {
      "type": "modify",
      "old_id": "4a79f25697ddf07f9ea37ab8ed92a7b0c99cf42a",
      "old_mode": 33188,
      "old_path": "asio/include/asio/raw_socket_service.hpp",
      "new_id": "0dd63d510684c65650a043a5808f9e16fc9befe0",
      "new_mode": 33188,
      "new_path": "asio/include/asio/raw_socket_service.hpp"
    },
    {
      "type": "modify",
      "old_id": "6f62c519f5bb431cdf7b5d6d7330f254ed1b7234",
      "old_mode": 33188,
      "old_path": "asio/include/asio/seq_packet_socket_service.hpp",
      "new_id": "955a2349c70abfa45ece53817c8cd7b4dc097bf1",
      "new_mode": 33188,
      "new_path": "asio/include/asio/seq_packet_socket_service.hpp"
    },
    {
      "type": "modify",
      "old_id": "39e9587733589e04e4daa61c66f3ed980fc0f715",
      "old_mode": 33188,
      "old_path": "asio/include/asio/socket_acceptor_service.hpp",
      "new_id": "d07fa5222dff3bdf6adcecaf841574a36de1473b",
      "new_mode": 33188,
      "new_path": "asio/include/asio/socket_acceptor_service.hpp"
    },
    {
      "type": "modify",
      "old_id": "3fc3d21383cf7ad7d5cc91badd285007f57767d5",
      "old_mode": 33188,
      "old_path": "asio/include/asio/stream_socket_service.hpp",
      "new_id": "e94e731519736ef64a6c4f5441c3bb3f8d62ff84",
      "new_mode": 33188,
      "new_path": "asio/include/asio/stream_socket_service.hpp"
    },
    {
      "type": "modify",
      "old_id": "655e79da79bf468cbb12bc7585621a923e558003",
      "old_mode": 33188,
      "old_path": "asio/src/Makefile.mgw",
      "new_id": "015da58d3478b549f43690396dd3e2aa2e22a903",
      "new_mode": 33188,
      "new_path": "asio/src/Makefile.mgw"
    },
    {
      "type": "modify",
      "old_id": "04cb77621bdf9b782fb4ffb95f28c28fedf7a945",
      "old_mode": 33188,
      "old_path": "asio/src/Makefile.msc",
      "new_id": "ca491a157abaa88dab3267ee99aaed2b8ee47ca1",
      "new_mode": 33188,
      "new_path": "asio/src/Makefile.msc"
    },
    {
      "type": "modify",
      "old_id": "640e35f1f31bb74bb714751cb4d5fa8cb487850b",
      "old_mode": 33188,
      "old_path": "asio/src/doc/reference.xsl",
      "new_id": "24c6f038c1e69d9a6b42fde9d2279aa4759e85a0",
      "new_mode": 33188,
      "new_path": "asio/src/doc/reference.xsl"
    },
    {
      "type": "modify",
      "old_id": "0aeedefc72ea539e4133811874e55f896ea8faba",
      "old_mode": 33188,
      "old_path": "asio/src/tests/Makefile.am",
      "new_id": "f3d601ecc81ec4e674cbb659d51bdbeb4e85a48a",
      "new_mode": 33188,
      "new_path": "asio/src/tests/Makefile.am"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c057144330879fd61681b5098e9073f8abe046c3",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/generic/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e42fd2415c46a2ccdf1fd4aa1aa5ec87f60f6d9",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/generic/basic_endpoint.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6bd35af378d8f33f9855d373d8beda40b6815462",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/generic/datagram_protocol.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f53335b621eb189a2912123020a7a89d47bbea36",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/generic/raw_protocol.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "705dbdf5b06e4ccfe35e794371bc88805e730272",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/generic/seq_packet_protocol.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d40e3cc2e1b5f5afc88318422ecbf4a097caf70e",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/generic/stream_protocol.cpp"
    }
  ]
}
