)]}'
{
  "commit": "7baddb9c094f312a3c541c07f8ba454c69450a71",
  "tree": "60a72c304cc082e773aea6f7237ae32670cb3164",
  "parents": [
    "f1420cae27a7b3209d754e2e1363ee2ba290ffbd"
  ],
  "author": {
    "name": "martinduke",
    "email": "martinduke@google.com",
    "time": "Wed Jul 08 09:32:32 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Jul 08 09:33:20 2026 -0700"
  },
  "message": "Refactor callbacks and request lifetime.\n\nMigrating SUBSCRIBE to a bidi stream has revealed several problems with object lifetimes and a complex web of callbacks. This revises the architecture in advance of the bidi migration.\n\n* MoqtBidiStreamBase has a pure-virtual Detach() function that frees the session of any state related to the request, called when the stream is Reset and other FINed events (like REQUEST_ERROR). Waiting for Reset streams to be cleaned up in the QUIC stack was creating problems for reconnect test cases, and this is more thoughtful about when resources should be freed.\n\n* BidiStreamDeletedCallback was not useful because it has no arguments. Now, each Bidi stream type has its own bespoke callbacks for deletion, and (for response streams) to register the key properties with the session in the first place.\n\n* The specifics of what properties to use as keys are moved back into MoqtSession. The callbacks just present a pointer to the value/context. For example, MoqtNamespaceStream no longer has a notion of SubscribeNamespaceTree. It just asks the Session if a SUBSCRIBE_NAMESPACE is allowed.\n\n* Add a static function for MoqtSession to check if it\u0027s still alive, and use it in callbacks generated by the session.\n\n* Condense AI test bloat in moqt_publish_stream_test.\n\nPiperOrigin-RevId: 944543487\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "23b1d4e75d65b17315b12f4fc0bbc2f03ccdac9b",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_bidi_stream.h",
      "new_id": "0ebb74c6a0cc3054d7056f46adb03282f7f25041",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_bidi_stream.h"
    },
    {
      "type": "modify",
      "old_id": "9b8dc62072348fbf69c244034bf48a0a0fa77deb",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_bidi_stream_test.cc",
      "new_id": "8b5f0113c34d00997db3d85b81934108cdc329f7",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_bidi_stream_test.cc"
    },
    {
      "type": "modify",
      "old_id": "b2b984faf87f5ff00812039f57a1049cb3722853",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_control_message_queue.cc",
      "new_id": "1b7e377360a64673499854562e77d320640517d7",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_control_message_queue.cc"
    },
    {
      "type": "modify",
      "old_id": "ec3668dcd53c8e2590c8923b5ee95acd25e1b686",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_namespace_stream.cc",
      "new_id": "b7a96722651187f760a0455971ae9e98c77a6a88",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_namespace_stream.cc"
    },
    {
      "type": "modify",
      "old_id": "737426077a46902cf069be2967e1b81f19feff36",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_namespace_stream.h",
      "new_id": "a80c4a17091402d03f1b5509f6cc0bb0233188c4",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_namespace_stream.h"
    },
    {
      "type": "modify",
      "old_id": "63b51dcbde101d42032bd7a101691c54af07ad7a",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_namespace_stream_test.cc",
      "new_id": "e94a45c031402b2b39ec185fd09e97411d6f5dd6",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_namespace_stream_test.cc"
    },
    {
      "type": "modify",
      "old_id": "1e10548d87b8bd092125e8dfd17b37dab1e6c8e4",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_publish_stream.cc",
      "new_id": "dd7c36e62689c38f8cc847e5e7e641584a858e26",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_publish_stream.cc"
    },
    {
      "type": "modify",
      "old_id": "b10f5fd35b2796bdc2f7894c3ba784c5d83a5620",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_publish_stream.h",
      "new_id": "a3cef790d2c440d8f27e9ee9f71d7aaa463e5912",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_publish_stream.h"
    },
    {
      "type": "modify",
      "old_id": "6c863a39d49fb8da6eaaccf97019b138531c5d52",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_publish_stream_test.cc",
      "new_id": "e59cb951024ddb85c9889298f6111064936309e2",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_publish_stream_test.cc"
    },
    {
      "type": "modify",
      "old_id": "e9c62b67015805f1c57527c2e284357c07ce2527",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_session.cc",
      "new_id": "f7f8333127475e645872b18421bdf6ba430d4ccf",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_session.cc"
    },
    {
      "type": "modify",
      "old_id": "b47935fcef528d68db5b50f6d098d4ad00ef95ab",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_session.h",
      "new_id": "d0bcb2131732129bba76b17936f0cf135d08a3c1",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_session.h"
    },
    {
      "type": "modify",
      "old_id": "79f9e7341b5c43813f7d70b33c92815d9eba9ff1",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_session_test.cc",
      "new_id": "c327f5e591c4f84c623764f895b9e2ea83d5319a",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_session_test.cc"
    },
    {
      "type": "modify",
      "old_id": "b3d541688453c9fd1fd27afb90085ca1d4db65be",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_subscription.cc",
      "new_id": "9bf4513822d096bc8e6b6be98aa23b40e4cef8d4",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_subscription.cc"
    },
    {
      "type": "modify",
      "old_id": "b058beb87dca251d4d16f1d8e7066c0ff61af79f",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_subscription.h",
      "new_id": "d32ed4c1fdbccb1b05997c0bf95db19111280e3d",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_subscription.h"
    },
    {
      "type": "modify",
      "old_id": "791c05f992af8c18926b8cccc94109a2971cc2a1",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_subscription_test.cc",
      "new_id": "154725b7ea606f2357c059ad43f6370a2b87430e",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_subscription_test.cc"
    },
    {
      "type": "modify",
      "old_id": "4530cd9f4eb2dce76f499c980efd7ad74867bf1e",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_track.cc",
      "new_id": "36e06cfa6a123a884c65bd7daff35ae9a2dd4889",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_track.cc"
    },
    {
      "type": "modify",
      "old_id": "1d85bbb0fd539b8bde47aef1938dd3c40c06dc25",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_track.h",
      "new_id": "54716d18a64676acfb5ec1a4de52ffafaacd173e",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_track.h"
    },
    {
      "type": "modify",
      "old_id": "2e3b52fce149860084bd97f218c33cda81fcefa4",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_track_test.cc",
      "new_id": "010cda9d0b03890b1c2adaf0e12c6bc4f5c962ca",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_track_test.cc"
    },
    {
      "type": "modify",
      "old_id": "f56c5c72aea9013262bbca37285afd36774af885",
      "old_mode": 33188,
      "old_path": "quiche/quic/moqt/moqt_uni_stream_test.cc",
      "new_id": "9efcabdd42bb4d8325b259754349e1181f17dddd",
      "new_mode": 33188,
      "new_path": "quiche/quic/moqt/moqt_uni_stream_test.cc"
    }
  ]
}
