)]}'
{
  "commit": "712d367245b7396e9c15a5ff75ed32d341c16c77",
  "tree": "270158a4f453a3b6a98781f92116ac6c5fd134b1",
  "parents": [
    "356bf9786defcc303c27952c68b90ae007c0d746"
  ],
  "author": {
    "name": "Wyatt Hepler",
    "email": "hepler@google.com",
    "time": "Mon Jul 13 15:52:11 2020 -0700"
  },
  "committer": {
    "name": "CQ Bot Account",
    "email": "commit-bot@chromium.org",
    "time": "Thu Jul 16 21:12:12 2020 +0000"
  },
  "message": "pw_rpc: Update for protocol changes\n\n- Update to handle STREAM_END and CANCEL packet semantics.\n- Detect and handle packet decoding errors.\n- Send ERROR packets when a malformed or unexpected packet is received.\n- Switch from uint32 to fixed32 for service and method IDs. fixed32\n  stores evenly distributed uint32s (like hashes) more efficiently than\n  uint32.\n- Use a void return type for server streaming RPCs, since the status is\n  sent from the ServerWriter.\n- Move response sending from the Server to the Method. Previously, the\n  server always sent a response. However, only unary RPCs should send an\n  immediate response. This structure also gives the Method class more\n  control over the semantics for RPCs.\n\nChange-Id: Ie88e4a24baf4e039463adf411f7dad7a0c64a710\nReviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/13960\nCommit-Queue: Wyatt Hepler \u003chepler@google.com\u003e\nReviewed-by: Alexei Frolov \u003cfrolv@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "93136890196de93d0fd94233bf438538ca2aa727",
      "old_mode": 33188,
      "old_path": "pw_protobuf/py/pw_protobuf/proto_tree.py",
      "new_id": "e2a2c8a483a9f7012a1c11875bc85a3e088da750",
      "new_mode": 33188,
      "new_path": "pw_protobuf/py/pw_protobuf/proto_tree.py"
    },
    {
      "type": "modify",
      "old_id": "d57a898666a469f36cb80bc1fa6141f308d76c72",
      "old_mode": 33188,
      "old_path": "pw_rpc/BUILD.gn",
      "new_id": "13b88cbe804d916833ff89c8d85b49735c5e18fd",
      "new_mode": 33188,
      "new_path": "pw_rpc/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "67abc6f9110695d29f45d29703ee9623d6410ae6",
      "old_mode": 33188,
      "old_path": "pw_rpc/base_server_writer.cc",
      "new_id": "6ddd136d3330502efd366e9f03c51252fa7e0c65",
      "new_mode": 33188,
      "new_path": "pw_rpc/base_server_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "04d37db9eb2fe750f41d0d5d7d8c1d50e9f12915",
      "old_mode": 33188,
      "old_path": "pw_rpc/base_server_writer_test.cc",
      "new_id": "ce9e806b45b4282d5569540e4363fd7f00f42f4e",
      "new_mode": 33188,
      "new_path": "pw_rpc/base_server_writer_test.cc"
    },
    {
      "type": "modify",
      "old_id": "b63535b5e0b52f7f2797ea74cdea8251488e0ebe",
      "old_mode": 33188,
      "old_path": "pw_rpc/channel_test.cc",
      "new_id": "c2938dcc500914aa87b2e9d5bb5358ec3d93f0c4",
      "new_mode": 33188,
      "new_path": "pw_rpc/channel_test.cc"
    },
    {
      "type": "modify",
      "old_id": "aee90bbb725594753ca929bc7f5e402b3ff1bdb0",
      "old_mode": 33188,
      "old_path": "pw_rpc/docs.rst",
      "new_id": "81efb4f57f220a200ee2f02ac39d2d56af2da021",
      "new_mode": 33188,
      "new_path": "pw_rpc/docs.rst"
    },
    {
      "type": "modify",
      "old_id": "3d91070bff7d9fc964a5bf4dde2711f6fc3def45",
      "old_mode": 33188,
      "old_path": "pw_rpc/nanopb/method.cc",
      "new_id": "6c96d0ab9204ea5860081cd14fba8583a0bcbc5e",
      "new_mode": 33188,
      "new_path": "pw_rpc/nanopb/method.cc"
    },
    {
      "type": "modify",
      "old_id": "80fd216fb6f82e3e52680e9fe87e66e2313db232",
      "old_mode": 33188,
      "old_path": "pw_rpc/nanopb/method_test.cc",
      "new_id": "b90406f7a38cbe800f0d1158846857c905fa6b0e",
      "new_mode": 33188,
      "new_path": "pw_rpc/nanopb/method_test.cc"
    },
    {
      "type": "modify",
      "old_id": "19f1497c8632373b2f6304d8b73022913f2b8ea1",
      "old_mode": 33188,
      "old_path": "pw_rpc/nanopb/public_overrides/pw_rpc/internal/method.h",
      "new_id": "0a5d2a2dddacfc0890c1f30cfa8dc1bb7c75ef4c",
      "new_mode": 33188,
      "new_path": "pw_rpc/nanopb/public_overrides/pw_rpc/internal/method.h"
    },
    {
      "type": "modify",
      "old_id": "9a7e34fd6b3a8dc6d7ceefb1971d72e1cb5437a2",
      "old_mode": 33188,
      "old_path": "pw_rpc/packet.cc",
      "new_id": "dfbdb50753bc25263f9bd89da8f9bcab25b7cbee",
      "new_mode": 33188,
      "new_path": "pw_rpc/packet.cc"
    },
    {
      "type": "modify",
      "old_id": "87d5c836920dbfc20b07c87d6eac93f94a1a057e",
      "old_mode": 33188,
      "old_path": "pw_rpc/packet_test.cc",
      "new_id": "e4ac4b60002e9946bbc10e378e96800a3ef2d282",
      "new_mode": 33188,
      "new_path": "pw_rpc/packet_test.cc"
    },
    {
      "type": "modify",
      "old_id": "745b615307103514556c1a4b7cd73f69e598fcb4",
      "old_mode": 33188,
      "old_path": "pw_rpc/public/pw_rpc/internal/base_server_writer.h",
      "new_id": "2b4b0faa29a542b2296d269d03b4e46020f3b14b",
      "new_mode": 33188,
      "new_path": "pw_rpc/public/pw_rpc/internal/base_server_writer.h"
    },
    {
      "type": "modify",
      "old_id": "b42c8a052fa2689ad444648e3ddba67f6bde3e7f",
      "old_mode": 33188,
      "old_path": "pw_rpc/public/pw_rpc/internal/channel.h",
      "new_id": "ba03f071fd44390ebe3477d2f85b019bf497ddde",
      "new_mode": 33188,
      "new_path": "pw_rpc/public/pw_rpc/internal/channel.h"
    },
    {
      "type": "modify",
      "old_id": "79b18f687ab048d0b9208f6b31415dd7eb58b649",
      "old_mode": 33188,
      "old_path": "pw_rpc/public/pw_rpc/internal/packet.h",
      "new_id": "15904f71e962ab52a7a5c8afd9cbc99c8efe4bc1",
      "new_mode": 33188,
      "new_path": "pw_rpc/public/pw_rpc/internal/packet.h"
    },
    {
      "type": "modify",
      "old_id": "9cd5695190ded3b445050ae5cf110431effd9dd9",
      "old_mode": 33188,
      "old_path": "pw_rpc/public/pw_rpc/server.h",
      "new_id": "5fa5f6a3d5c2aa24dea37929c75d41ea88af98f2",
      "new_mode": 33188,
      "new_path": "pw_rpc/public/pw_rpc/server.h"
    },
    {
      "type": "modify",
      "old_id": "8ad045b6decfd0eb49de0e2388bd9284b8376618",
      "old_mode": 33188,
      "old_path": "pw_rpc/pw_rpc_private/test_utils.h",
      "new_id": "0bf32723ffdff65375b334ca8f28971e920efdf9",
      "new_mode": 33188,
      "new_path": "pw_rpc/pw_rpc_private/test_utils.h"
    },
    {
      "type": "modify",
      "old_id": "cd031944976a486c48bac6265c264525f2960ffc",
      "old_mode": 33188,
      "old_path": "pw_rpc/pw_rpc_protos/packet.proto",
      "new_id": "df226c7d6d3a750f42b7ce651c036a931a5aea36",
      "new_mode": 33188,
      "new_path": "pw_rpc/pw_rpc_protos/packet.proto"
    },
    {
      "type": "modify",
      "old_id": "3a67f910e947d18c99647511b5c1bbf3abfc30f8",
      "old_mode": 33188,
      "old_path": "pw_rpc/pw_rpc_test_protos/test.proto",
      "new_id": "16c40225b99db0f84c15231339c4ac21f9764dd6",
      "new_mode": 33188,
      "new_path": "pw_rpc/pw_rpc_test_protos/test.proto"
    },
    {
      "type": "modify",
      "old_id": "3ea7d4d0ab2dc7c50e7dcec7a444d969b0d428f6",
      "old_mode": 33188,
      "old_path": "pw_rpc/py/pw_rpc/codegen_nanopb.py",
      "new_id": "fbfbe1c67fc6e98aeef405caedd4f75ee1795d88",
      "new_mode": 33188,
      "new_path": "pw_rpc/py/pw_rpc/codegen_nanopb.py"
    },
    {
      "type": "modify",
      "old_id": "7c5866b1907ccab82c24830c2d89a1269665f642",
      "old_mode": 33188,
      "old_path": "pw_rpc/server.cc",
      "new_id": "0760091f9676e46a1973a3f46b132d248ad87eed",
      "new_mode": 33188,
      "new_path": "pw_rpc/server.cc"
    },
    {
      "type": "modify",
      "old_id": "47b62e56d719b9050e18533aef4351c9b1861829",
      "old_mode": 33188,
      "old_path": "pw_rpc/server_test.cc",
      "new_id": "a78118c4b665163bc79f3ec129109a9b56477c6d",
      "new_mode": 33188,
      "new_path": "pw_rpc/server_test.cc"
    },
    {
      "type": "modify",
      "old_id": "297f14e63db46a3bad213cf95cd34651cd8fdca3",
      "old_mode": 33188,
      "old_path": "pw_rpc/test_impl/public_overrides/pw_rpc/internal/method.h",
      "new_id": "41ed781e13f359deec3b800f69f9f102267ab4e5",
      "new_mode": 33188,
      "new_path": "pw_rpc/test_impl/public_overrides/pw_rpc/internal/method.h"
    }
  ]
}
