)]}'
{
  "commit": "5c7bf01d22935ebf669aa85a615923ebc420c1a9",
  "tree": "7ad765941f83f6e7c08aa1c65eae1a345923e477",
  "parents": [
    "ff73cf261ccf5daef1489db05d11b49aeab270a0"
  ],
  "author": {
    "name": "Alex Vakulenko",
    "email": "avakulenko@chromium.org",
    "time": "Thu Oct 30 16:28:38 2014 -0700"
  },
  "committer": {
    "name": "chrome-internal-fetch",
    "email": "chrome-internal-fetch@google.com",
    "time": "Thu Nov 06 06:32:38 2014 +0000"
  },
  "message": "libchromeos: Add support for async D-Bus method handlers\n\nChanged DBusObject implementation infrastructure in libchromeos\nto add support for registering asynchronous D-Bus method handlers.\n\nAlso changed the simple synchronous method handler signature to\neliminate the confusion when a handler returning a value throws\nan error.\n\nCurrently, there are four kinds of D-Bus method handlers:\n- SimpleMethodHandler - has one of the following signatures:\n\n    RetVal Handler(Args... args)\n    void Handler(Args... args)\n\n  The first one takes only input parameters (by value or const\n  reference) and returns a single value as a function return.\n  The second handler can mix both input (value/const reference)\n  and output (pointer) values.\n\n  This handler is synchronous (response is sent as soon as the\n  handler returns) and does not provide any error returns\n  (it always succeeds).\n\n- SimpleMethodHanderWithError\n  This is similar to SimpleMethodHandler but provides a way\n  to return an error. The handler signature is as follows:\n\n    bool Handler(ErrorPtr* error, Args... args)\n\n  The parameters can include both IN and OUT arguments.\n\n  If the handler succeeds, it must return true. On failures,\n  it returns false and provides error details in |error|.\n\n- MethodHandler - a generic (possibly asynchronous) handler\n  that has the following signature:\n\n    void Handler(scoped_ptr\u003cDBusMethodResponse\u003e response,\n                 Args... args)\n\n  The parameters include only IN arguments and the method\n  sends back any return values using the |response| object.\n\n  The handler owns the |response| so it can start an\n  asynchronous operation (that holds on to the response) and\n  exit immediately. The D-Bus method response is sent only\n  when the handler provides the reply using the response\n  object.\n\n- RawMethodHandler\n  This is the low-level method handler that does not go through\n  any of the parameter/return value parsing. It is provided\n  with the raw method call D-Bus message and is expected to\n  provide the response manually. The handler signtaure is:\n\n    void Handler(dbus::MethodCall* method_call,\n                 ResponseSender sender)\n\n  This type of handler is useful to implement D-Bus methods\n  with variable number of parameters or those which\n  can accept a number of different types of arguments.\n\nBUG\u003dchromium:428390\nTEST\u003dFEATURES\u003dtest emerge-link libchromeos peerd buffet attestation\nCQ-DEPEND\u003dCL:227281\n\nChange-Id: I1dde6b279ada9d350a4d0e6743c56d3b12cc38cf\nReviewed-on: https://chromium-review.googlesource.com/226666\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nTested-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "170d900de2c6ad169ba583705ca7971f6a7a9211",
      "old_mode": 33188,
      "old_path": "buffet/commands/dbus_command_dispatcher_unittest.cc",
      "new_id": "9de6889159a03167431c29b2fd97bfca66ee59a2",
      "new_mode": 33188,
      "new_path": "buffet/commands/dbus_command_dispatcher_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "0b97c06ab1c975a0b867c8b4b1ab449ae4dc4467",
      "old_mode": 33188,
      "old_path": "buffet/commands/dbus_command_proxy.cc",
      "new_id": "07ead325b46d2e48fd71cc72656df585e7cc943c",
      "new_mode": 33188,
      "new_path": "buffet/commands/dbus_command_proxy.cc"
    },
    {
      "type": "modify",
      "old_id": "553470e686519d0c0239e32e0e9b4f42967bbc6d",
      "old_mode": 33188,
      "old_path": "buffet/commands/dbus_command_proxy.h",
      "new_id": "50878fb1fb8ce1e6b1cadb947baf921b69e2a1aa",
      "new_mode": 33188,
      "new_path": "buffet/commands/dbus_command_proxy.h"
    },
    {
      "type": "modify",
      "old_id": "f8fba8ddd7fa8d67b197446d569f783bd18bd5aa",
      "old_mode": 33188,
      "old_path": "buffet/commands/dbus_command_proxy_unittest.cc",
      "new_id": "ae91b136664e1390e209a74c2ff236a210c4f0a7",
      "new_mode": 33188,
      "new_path": "buffet/commands/dbus_command_proxy_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "bc9fdf87c33d6758682c63f8c43017050035c1bd",
      "old_mode": 33188,
      "old_path": "buffet/manager.cc",
      "new_id": "7deb36f782bd8bfcaea99d93fe41c9004b202344",
      "new_mode": 33188,
      "new_path": "buffet/manager.cc"
    },
    {
      "type": "modify",
      "old_id": "7ce33cc23304b3fd160f1d1a21abc848166ac484",
      "old_mode": 33188,
      "old_path": "buffet/manager.h",
      "new_id": "b8ef91ad0cd897c6ff593f391a1b6e4a701ea1ff",
      "new_mode": 33188,
      "new_path": "buffet/manager.h"
    }
  ]
}
