)]}'
{
  "commit": "589859984f43af1ed0f9ee45ce8374a0d1640813",
  "tree": "542ef2b0e9b7979373ab9736bafffc89995e47b0",
  "parents": [
    "3e5d2d72b4f48e2008462fbb9ac86f76011ceb91"
  ],
  "author": {
    "name": "dweatherford",
    "email": "dev-null@apache.org",
    "time": "Tue Jun 19 23:10:19 2007 +0000"
  },
  "committer": {
    "name": "dweatherford",
    "email": "dev-null@apache.org",
    "time": "Tue Jun 19 23:10:19 2007 +0000"
  },
  "message": "[thrift] Add optional callback inside of serve()\n\nSummary: If enabled, the callback function will be run after the listening socket is opened and the event loop initialized, just prior to calling event_loop()\n\nThis is handy if you want to defer some of your initialization until after the socket is open -- allowing clients to connect, but not processing requests until the initialization is complete. I use this in the Synapse tablet server to minimize the communications interruption that happens during a tablet split (replaying commit logs after opening the listening socket).\n\nReview: mcslee\nTest Plan: compiled it into Synapse\u0027s tablet server\nRevert: ok\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665137 13f79535-47bb-0310-9956-ffa450edef68\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5c4dc8c9950ba40e79f2d09b58d9ef8e76b623b4",
      "old_mode": 33188,
      "old_path": "lib/cpp/src/server/TNonblockingServer.cpp",
      "new_id": "df84ba52337e496dc822ce52bb0328da0b6a63f3",
      "new_mode": 33188,
      "new_path": "lib/cpp/src/server/TNonblockingServer.cpp"
    },
    {
      "type": "modify",
      "old_id": "6da9bf5557c2c56b6fb83bf8b017d87d466d2af6",
      "old_mode": 33188,
      "old_path": "lib/cpp/src/server/TNonblockingServer.h",
      "new_id": "6997c45de1c5e71c31eaf26515010e67b399f84c",
      "new_mode": 33188,
      "new_path": "lib/cpp/src/server/TNonblockingServer.h"
    }
  ]
}
