)]}'
{
  "commit": "364478046fe60979aae31cebb45bc6480a294688",
  "tree": "089336ae82e671cf48c00cec2ac1f13c89d7cd91",
  "parents": [
    "df0ef1f333304c37e638f9f46076cf7dfec403ce"
  ],
  "author": {
    "name": "birenroy",
    "email": "birenroy@google.com",
    "time": "Tue Sep 15 14:21:58 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Sep 15 14:22:36 2026 -0700"
  },
  "message": "Modernizes HTTP/2 frame representations in spdy_protocol.h\n\nThis is a roll-forward of the original change, with a one-line fix to build properly on 32-bit platforms.\n\nIntroduces value-semantic, standard-layout POD structs, C++20 type\ntraits, concepts, compile-time size calculation and serialization,\nand a 64-byte single-cache-line SpdyFrame variant based on the analysis in\ngo/http2-frame-representations.\n\nThis change introduces the types, but does not use them anywhere, yet.\n\nKey changes:\n- Defined standard-layout POD structs for all 14 HTTP/2 frame types\n  (DataFrame, HeadersFrame, PriorityFrame, RstStreamFrame, SettingsFrame,\n  PushPromiseFrame, PingFrame, GoAwayFrame, WindowUpdateFrame,\n  ContinuationFrame, AltSvcFrame, PriorityUpdateFrame, AcceptChFrame,\n  UnknownFrame).\n- Added C++20 FrameTraits\u003cT\u003e and Http2Frame concept.\n- Added compile-time FrameSize\u003cT\u003e and SerializeFrame\u003cT\u003e in SpdyFrameBuilder.\n- Added SpdyFrame variant fitting in 64 bytes (1 cache line) and dispatch\n  helpers.\n- Maintained backward compatibility for all existing SpdyFrameIR\n  classes and SpdyFrameVisitor without changing callers.\n\nPiperOrigin-RevId: 982039230\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ee879a4fa30bf57a748b54f56e76353e893eca36",
      "old_mode": 33188,
      "old_path": "quiche/http2/core/spdy_frame_builder.h",
      "new_id": "5628753799fd623170bb44ce101e02c7e2d0a842",
      "new_mode": 33188,
      "new_path": "quiche/http2/core/spdy_frame_builder.h"
    },
    {
      "type": "modify",
      "old_id": "9f400c43e638547c28067d3dfceb911efefdc87b",
      "old_mode": 33188,
      "old_path": "quiche/http2/core/spdy_framer.cc",
      "new_id": "699eb96da6bcc265db998ad5e209dd70efd08c1a",
      "new_mode": 33188,
      "new_path": "quiche/http2/core/spdy_framer.cc"
    },
    {
      "type": "modify",
      "old_id": "a5ec174d9dbcfdf5d463a8c91faa56baae892ca7",
      "old_mode": 33188,
      "old_path": "quiche/http2/core/spdy_protocol.h",
      "new_id": "d074786486ccc6358bc5846d11f3bcf8c14f427d",
      "new_mode": 33188,
      "new_path": "quiche/http2/core/spdy_protocol.h"
    },
    {
      "type": "modify",
      "old_id": "1adef2943ac0a5aabf316a890051b431eb3964fc",
      "old_mode": 33188,
      "old_path": "quiche/http2/core/spdy_protocol_test.cc",
      "new_id": "82100e3040d6d8e071f792491960bd6882fe5d7e",
      "new_mode": 33188,
      "new_path": "quiche/http2/core/spdy_protocol_test.cc"
    }
  ]
}
