)]}'
{
  "commit": "d0281ad84fcf7bef0a9f8efca62e15e803339d5b",
  "tree": "7bdb08289b35a13241a2fa04e18a0fc8e4f7d5bb",
  "parents": [
    "23c62e1355fade2be5ef26cda4d43736a74364ba"
  ],
  "author": {
    "name": "Christopher Kohlhoff",
    "email": "chris@kohlhoff.com",
    "time": "Tue Nov 02 08:54:32 2021 +1100"
  },
  "committer": {
    "name": "Christopher Kohlhoff",
    "email": "chris@kohlhoff.com",
    "time": "Thu Nov 04 01:55:34 2021 +1100"
  },
  "message": "Add experimental support for channels.\n\nThis adds experimental::channel and experimental::concurrent_channel.\nChannels may be used to send completions as messages. For example:\n\n  // Create a channel with no buffer space.\n  channel\u003cvoid(error_code, size_t)\u003e ch(ctx);\n\n  // The call to try_send fails as there is no buffer\n  // space and no waiting receive operations.\n  bool ok \u003d ch.try_send(asio::error::eof, 123);\n  assert(!ok);\n\n  // The async_send operation blocks until a receive\n  // operation consumes the message.\n  ch.async_send(asio::error::eof, 123,\n      [](error_code ec)\n      {\n        // ...\n      });\n\n  // The async_receive consumes the message. Both the\n  // async_send and async_receive operations complete\n  // immediately.\n  ch.async_receive(\n      [](error_code ec, size_t n)\n      {\n        // ...\n      });\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3142d4e2f9633b84bcb38375d3c70fbe7c87bffc",
      "old_mode": 33261,
      "old_path": "asio/boostify.pl",
      "new_id": "b2ded90b235961d3982f07c5fe8de0c2d7fd6b41",
      "new_mode": 33261,
      "new_path": "asio/boostify.pl"
    },
    {
      "type": "modify",
      "old_id": "6d01b9613fdc05d23fc8e38aa1bbc5fc5cf385cf",
      "old_mode": 33188,
      "old_path": "asio/include/Makefile.am",
      "new_id": "2d59a9973438c3af77b34ce41116b7a8aea8fb2b",
      "new_mode": 33188,
      "new_path": "asio/include/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "b54573398436c3379b42568b44919dcafb7885c9",
      "old_mode": 33188,
      "old_path": "asio/include/asio/detail/null_mutex.hpp",
      "new_id": "1672ae58d464c15cc2b683b0363d711c4b26440a",
      "new_mode": 33188,
      "new_path": "asio/include/asio/detail/null_mutex.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e70b7e28626cee0041563416826ea6ce7b9a8072",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/basic_channel.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5557a44f1f77fc2cd62b62b0bcbee99db99ba123",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/basic_concurrent_channel.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3dc6a8b7dc5805741db2311d53c3c334a5950274",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/channel.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1b3e4f4cd357b31daa2a874c8eb3df7e96950ab5",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/channel_error.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a436e504f8d03775b606d7f4e5769e2b14e6ca6e",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/channel_traits.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0519b4e7b8ad6cd5919a757b549b11cd02d146a4",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/concurrent_channel.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "04e3700dd287c4cda6c5d21cdac83869cdb97e90",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/channel_handler.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c4183d8c9e4b15c68b02729af30888fbf8da766",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/channel_message.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a1ff1effaa391e9c5334dd021b4b32dafe14ce06",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/channel_operation.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eaf75982b66ce2a970cdad048173af040a1f4bb9",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/channel_payload.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "233a14570e30451d992afe47b934330f86f82008",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/channel_receive_op.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "878e58cbe2be95b8646e7b9d3d633c948ed9da10",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/channel_send_functions.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "027671f68abba5fc6b4d5a439e4df6f5f5f1d217",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/channel_send_op.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "98d9724521e829f1f48f579f11f85296e8b9a2c5",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/channel_service.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ae72e1d7583c0a4902c0bc00bb9c287e7c963169",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/has_signature.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "616bd45bba2940ae22a2466e851b10a013a956b5",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/detail/impl/channel_service.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c30e0242163a24e6946b240e4b6e55a46ee6583e",
      "new_mode": 33188,
      "new_path": "asio/include/asio/experimental/impl/channel_error.ipp"
    },
    {
      "type": "modify",
      "old_id": "503bbb6b67c506ec8a4df9aca3ba497e2a7aaa8d",
      "old_mode": 33188,
      "old_path": "asio/include/asio/impl/src.hpp",
      "new_id": "9d159eb5b8bed0a18312d29ccd52c889e69c5943",
      "new_mode": 33188,
      "new_path": "asio/include/asio/impl/src.hpp"
    },
    {
      "type": "modify",
      "old_id": "8853b7447bf3080ba8d79b887a3c81d3e31f27d4",
      "old_mode": 33188,
      "old_path": "asio/src/doc/quickref.xml",
      "new_id": "d1dc9b2b8ebb26ff4144a44c929c81cc58a7a76e",
      "new_mode": 33188,
      "new_path": "asio/src/doc/quickref.xml"
    },
    {
      "type": "modify",
      "old_id": "1014945da0f3f433a1000b1e8540ca42f1ded892",
      "old_mode": 33188,
      "old_path": "asio/src/doc/reference.qbk",
      "new_id": "9a2cd6de4c13b076777ad840a53f29cfa4ecaa88",
      "new_mode": 33188,
      "new_path": "asio/src/doc/reference.qbk"
    },
    {
      "type": "modify",
      "old_id": "b73033abedf7ed781efc61f159f89fb77bd1c3e4",
      "old_mode": 33188,
      "old_path": "asio/src/doc/reference.xsl",
      "new_id": "01f5b9fb592266fe59bfaf8a300e2c201ba3170f",
      "new_mode": 33188,
      "new_path": "asio/src/doc/reference.xsl"
    },
    {
      "type": "modify",
      "old_id": "54702cea3a1c3d8fb2079d814173a99724667611",
      "old_mode": 33188,
      "old_path": "asio/src/tests/Makefile.am",
      "new_id": "235e8377512a3dd653e911334fb4d853724b18b9",
      "new_mode": 33188,
      "new_path": "asio/src/tests/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "71dfdfd5db80f8168df8484165788d65de91a869",
      "old_mode": 33188,
      "old_path": "asio/src/tests/unit/experimental/.gitignore",
      "new_id": "aca939b105ad085e402c00c46525ba6c1f46c298",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/experimental/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4bb41343c5e1989a6f25887d386722a8f03df4ad",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/experimental/basic_channel.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f0907b4c2c3a25df13ff6ebea225d776d32efbc1",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/experimental/basic_concurrent_channel.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "19c20cc7f7ebad894b5c297c4f3f63dfd2c01032",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/experimental/channel.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ff1a04f542be34a408726f1e9076b894e48bd23d",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/experimental/channel_traits.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7562efa9603d0c8c3f9029ba196da18b2a943f66",
      "new_mode": 33188,
      "new_path": "asio/src/tests/unit/experimental/concurrent_channel.cpp"
    }
  ]
}
