)]}'
{
  "commit": "7eef071bd3d6738a167533695485c559310435bf",
  "tree": "9a978ffafca6fa3e22472c23f0af98b30441e72d",
  "parents": [
    "4031554ff78aa22fdf6711589c5d820c67b35f5c"
  ],
  "author": {
    "name": "QUICHE team",
    "email": "quiche-dev@google.com",
    "time": "Thu May 09 09:42:38 2019 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu May 09 09:45:35 2019 -0700"
  },
  "message": "Change SendOrQueueMessage to take a QuicMemSliceSpan.\n\nQuicMemSliceSpan now has a `ConsumeAll` method in its API, which allows us to\nmove the mem slices into a queue of messages to send.  This is now the same\nmechanism used to store mem slice spans in a stream or message\u0027s send buffer.\nIt ensures that mem slices are properly ref-counted so that the contents are not\ndeleted after storing them.\n\nThis should enable zero-copy writes down the line.  However, currently, we still\nhave two copies:\n - One in the application layer, where we create mem slices by copying data\n - One in the session, when converting mem slices back into a mem slice span\n\nNothing stops us from fixing the former, but it requires a bit of refactoring at\nthe application layer.\n\nThe latter requires an API for building a QuicMemSliceSpan out of QuicMemSlices\nwithout copying them.  This should be possible, but doesn\u0027t seem to exist today.\n\ngfe-relnote: n/a (Quartc only)\nPiperOrigin-RevId: 247442584\nChange-Id: Ie1bc1ad2f878ee312a5e13b048fd2233864c3d18\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4d363056a5d743f3f1bbd534e61c1ec9e56993e7",
      "old_mode": 33188,
      "old_path": "quic/quartc/quartc_session.cc",
      "new_id": "59bb2c2675b3a974ff16500827f6512b405c24cb",
      "new_mode": 33188,
      "new_path": "quic/quartc/quartc_session.cc"
    },
    {
      "type": "modify",
      "old_id": "9da306e010bb06ec2ba886dfcc74b7c36ba82388",
      "old_mode": 33188,
      "old_path": "quic/quartc/quartc_session.h",
      "new_id": "8e28addfe98808988abf2a2822374eba597e4d78",
      "new_mode": 33188,
      "new_path": "quic/quartc/quartc_session.h"
    },
    {
      "type": "modify",
      "old_id": "c6488a1d3d2b79ac59075f47ea05c03fb69b2f31",
      "old_mode": 33188,
      "old_path": "quic/quartc/quartc_session_test.cc",
      "new_id": "75fd20a5dedc6621bd6da5bd87878b83aa3a5a13",
      "new_mode": 33188,
      "new_path": "quic/quartc/quartc_session_test.cc"
    },
    {
      "type": "modify",
      "old_id": "2e9ba87480c88c5fa0e2be9bb220c1f23d1a36b2",
      "old_mode": 33188,
      "old_path": "quic/quartc/test/bidi_test_runner.cc",
      "new_id": "07ad80ed58f9ecf846c27788ec8f16374feb3d93",
      "new_mode": 33188,
      "new_path": "quic/quartc/test/bidi_test_runner.cc"
    },
    {
      "type": "modify",
      "old_id": "3918c330650369cff2312a82190d61d8b68572cb",
      "old_mode": 33188,
      "old_path": "quic/quartc/test/quartc_peer.cc",
      "new_id": "9cecd18849bfa011575e19aba0d45aa61586ec0f",
      "new_mode": 33188,
      "new_path": "quic/quartc/test/quartc_peer.cc"
    },
    {
      "type": "modify",
      "old_id": "68cb9eebcd465ec8cd13ed670766ecc032be3f75",
      "old_mode": 33188,
      "old_path": "quic/quartc/test/quartc_peer.h",
      "new_id": "8a62ba70e501ac6157e9d0c16a0416305fcb9a64",
      "new_mode": 33188,
      "new_path": "quic/quartc/test/quartc_peer.h"
    },
    {
      "type": "modify",
      "old_id": "3eca7034e3b63167d3fcae794dfd4704cb9ffa1f",
      "old_mode": 33188,
      "old_path": "quic/quartc/test/quartc_peer_test.cc",
      "new_id": "fe76acf3552331e278299506d85f4ba3c55b684f",
      "new_mode": 33188,
      "new_path": "quic/quartc/test/quartc_peer_test.cc"
    }
  ]
}
