{"action":"created","comment":{"url":"https://api.github.com/repos/yarpc/yarpc-go/pulls/comments/157883556","pull_request_review_id":84598614,"id":157883556,"diff_hunk":"@@ -0,0 +1,165 @@\n+// Copyright (c) 2017 Uber Technologies, Inc.\n+//\n+// Permission is hereby granted, free of charge, to any person obtaining a copy\n+// of this software and associated documentation files (the \"Software\"), to deal\n+// in the Software without restriction, including without limitation the rights\n+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+// copies of the Software, and to permit persons to whom the Software is\n+// furnished to do so, subject to the following conditions:\n+//\n+// The above copyright notice and this permission notice shall be included in\n+// all copies or substantial portions of the Software.\n+//\n+// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n+// THE SOFTWARE.\n+\n+package transport\n+\n+import (\n+\t\"context\"\n+\t\"io\"\n+\n+\t\"go.uber.org/yarpc/yarpcerrors\"\n+)\n+\n+// StreamRequest is used to establish a streaming request.  It contains basic\n+// Metadata information, and any Stream-specfic configuration for creating a","path":"api/transport/stream.go","position":31,"original_position":31,"commit_id":"14c9af11a920a12144897757bdb5000ce8f1657a","original_commit_id":"14c9af11a920a12144897757bdb5000ce8f1657a","user":{"login":"abhinav","id":41730,"avatar_url":"https://avatars0.githubusercontent.com/u/41730?v=4","gravatar_id":"","url":"https://api.github.com/users/abhinav","html_url":"https://github.com/abhinav","followers_url":"https://api.github.com/users/abhinav/followers","following_url":"https://api.github.com/users/abhinav/following{/other_user}","gists_url":"https://api.github.com/users/abhinav/gists{/gist_id}","starred_url":"https://api.github.com/users/abhinav/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/abhinav/subscriptions","organizations_url":"https://api.github.com/users/abhinav/orgs","repos_url":"https://api.github.com/users/abhinav/repos","events_url":"https://api.github.com/users/abhinav/events{/privacy}","received_events_url":"https://api.github.com/users/abhinav/received_events","type":"User","site_admin":false},"body":"\"and any stream-specific configuration\" doesn't exist at this time, right? I would drop that part of the comment for now.","created_at":"2017-12-19T21:43:23Z","updated_at":"2017-12-19T21:50:16Z","html_url":"https://github.com/yarpc/yarpc-go/pull/1359#discussion_r157883556","pull_request_url":"https://api.github.com/repos/yarpc/yarpc-go/pulls/1359","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/yarpc/yarpc-go/pulls/comments/157883556"},"html":{"href":"https://github.com/yarpc/yarpc-go/pull/1359#discussion_r157883556"},"pull_request":{"href":"https://api.github.com/repos/yarpc/yarpc-go/pulls/1359"}},"in_reply_to_id":157883316},"pull_request":{"url":"https://api.github.com/repos/yarpc/yarpc-go/pulls/1359","id":152440430,"html_url":"https://github.com/yarpc/yarpc-go/pull/1359","diff_url":"https://github.com/yarpc/yarpc-go/pull/1359.diff","patch_url":"https://github.com/yarpc/yarpc-go/pull/1359.patch","issue_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/1359","number":1359,"state":"open","locked":false,"title":"Stream3: Add Core Streaming API and Dispatcher Hook-in.","user":{"login":"willhug","id":613317,"avatar_url":"https://avatars0.githubusercontent.com/u/613317?v=4","gravatar_id":"","url":"https://api.github.com/users/willhug","html_url":"https://github.com/willhug","followers_url":"https://api.github.com/users/willhug/followers","following_url":"https://api.github.com/users/willhug/following{/other_user}","gists_url":"https://api.github.com/users/willhug/gists{/gist_id}","starred_url":"https://api.github.com/users/willhug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/willhug/subscriptions","organizations_url":"https://api.github.com/users/willhug/orgs","repos_url":"https://api.github.com/users/willhug/repos","events_url":"https://api.github.com/users/willhug/events{/privacy}","received_events_url":"https://api.github.com/users/willhug/received_events","type":"User","site_admin":false},"body":"Summary: This PR is the central PR for adding streaming support to yarpc. We've\nbroken the PR into individually reviewable \"commits\" with detailed commit messages\nwith the hopes that this will make reviewing this code easier.\n\nA quick summary of the changes are:\n\n[Commit 1] Add Stream Transport APIs.\n- Add a new Streaming handler type.\n- Add streaming handler/outbound interfaces && structs.\n- Add RequestMeta/ResponseMeta objects (which don't include the \"Body\"\nfield which is the limitation of the existing Response/Request).  The\n\"Meta\" objects don't include all of this information, ideally in YARPC 2.0\nwe'll have Request/Response embed the \"Meta\" objects.\n- Add Server/Client/Base(Stream) interfaces.  These are largely similar to\nthe GRPC interfaces for the similar purpose. The largest change is the\nintroduction of the \"StreamMessage\" object which allows us to embed extra\ninformation in a non-breaking way in the future if we want. It might make\nsense to split the StreamMessage 'ReadCloser' into a 'Reader' and a\n'Closer' individually so they can be wrapped easier.\n\n[Commit 2] Add Encoding API.\n-  Adds support with OutboundCall\n\n[Commit 3] Adding Stream Middleware API.\n[Commit 4] Update Autogenerated Code.\n[Commit 5] Adding Middleware Tests\n[Commit 6] Add inbound and outbound stream middleware chains.\n\n[Commit 7] Hook up stream APIs in dispatcher.\n-  Includes adding validation, start/stop, middleware, etc.","created_at":"2017-11-14T08:29:39Z","updated_at":"2017-12-19T21:50:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b1a761d1cbd556b8b48a4cc780b0c0de0ea3c5ad","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/yarpc/yarpc-go/pulls/1359/commits","review_comments_url":"https://api.github.com/repos/yarpc/yarpc-go/pulls/1359/comments","review_comment_url":"https://api.github.com/repos/yarpc/yarpc-go/pulls/comments{/number}","comments_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/1359/comments","statuses_url":"https://api.github.com/repos/yarpc/yarpc-go/statuses/14c9af11a920a12144897757bdb5000ce8f1657a","head":{"label":"yarpc:stream/3/api","ref":"stream/3/api","sha":"14c9af11a920a12144897757bdb5000ce8f1657a","user":{"login":"yarpc","id":16569504,"avatar_url":"https://avatars2.githubusercontent.com/u/16569504?v=4","gravatar_id":"","url":"https://api.github.com/users/yarpc","html_url":"https://github.com/yarpc","followers_url":"https://api.github.com/users/yarpc/followers","following_url":"https://api.github.com/users/yarpc/following{/other_user}","gists_url":"https://api.github.com/users/yarpc/gists{/gist_id}","starred_url":"https://api.github.com/users/yarpc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarpc/subscriptions","organizations_url":"https://api.github.com/users/yarpc/orgs","repos_url":"https://api.github.com/users/yarpc/repos","events_url":"https://api.github.com/users/yarpc/events{/privacy}","received_events_url":"https://api.github.com/users/yarpc/received_events","type":"Organization","site_admin":false},"repo":{"id":50390111,"name":"yarpc-go","full_name":"yarpc/yarpc-go","owner":{"login":"yarpc","id":16569504,"avatar_url":"https://avatars2.githubusercontent.com/u/16569504?v=4","gravatar_id":"","url":"https://api.github.com/users/yarpc","html_url":"https://github.com/yarpc","followers_url":"https://api.github.com/users/yarpc/followers","following_url":"https://api.github.com/users/yarpc/following{/other_user}","gists_url":"https://api.github.com/users/yarpc/gists{/gist_id}","starred_url":"https://api.github.com/users/yarpc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarpc/subscriptions","organizations_url":"https://api.github.com/users/yarpc/orgs","repos_url":"https://api.github.com/users/yarpc/repos","events_url":"https://api.github.com/users/yarpc/events{/privacy}","received_events_url":"https://api.github.com/users/yarpc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yarpc/yarpc-go","description":"A message passing platform for Go","fork":false,"url":"https://api.github.com/repos/yarpc/yarpc-go","forks_url":"https://api.github.com/repos/yarpc/yarpc-go/forks","keys_url":"https://api.github.com/repos/yarpc/yarpc-go/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yarpc/yarpc-go/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yarpc/yarpc-go/teams","hooks_url":"https://api.github.com/repos/yarpc/yarpc-go/hooks","issue_events_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/events{/number}","events_url":"https://api.github.com/repos/yarpc/yarpc-go/events","assignees_url":"https://api.github.com/repos/yarpc/yarpc-go/assignees{/user}","branches_url":"https://api.github.com/repos/yarpc/yarpc-go/branches{/branch}","tags_url":"https://api.github.com/repos/yarpc/yarpc-go/tags","blobs_url":"https://api.github.com/repos/yarpc/yarpc-go/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yarpc/yarpc-go/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yarpc/yarpc-go/git/refs{/sha}","trees_url":"https://api.github.com/repos/yarpc/yarpc-go/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yarpc/yarpc-go/statuses/{sha}","languages_url":"https://api.github.com/repos/yarpc/yarpc-go/languages","stargazers_url":"https://api.github.com/repos/yarpc/yarpc-go/stargazers","contributors_url":"https://api.github.com/repos/yarpc/yarpc-go/contributors","subscribers_url":"https://api.github.com/repos/yarpc/yarpc-go/subscribers","subscription_url":"https://api.github.com/repos/yarpc/yarpc-go/subscription","commits_url":"https://api.github.com/repos/yarpc/yarpc-go/commits{/sha}","git_commits_url":"https://api.github.com/repos/yarpc/yarpc-go/git/commits{/sha}","comments_url":"https://api.github.com/repos/yarpc/yarpc-go/comments{/number}","issue_comment_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/comments{/number}","contents_url":"https://api.github.com/repos/yarpc/yarpc-go/contents/{+path}","compare_url":"https://api.github.com/repos/yarpc/yarpc-go/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yarpc/yarpc-go/merges","archive_url":"https://api.github.com/repos/yarpc/yarpc-go/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yarpc/yarpc-go/downloads","issues_url":"https://api.github.com/repos/yarpc/yarpc-go/issues{/number}","pulls_url":"https://api.github.com/repos/yarpc/yarpc-go/pulls{/number}","milestones_url":"https://api.github.com/repos/yarpc/yarpc-go/milestones{/number}","notifications_url":"https://api.github.com/repos/yarpc/yarpc-go/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yarpc/yarpc-go/labels{/name}","releases_url":"https://api.github.com/repos/yarpc/yarpc-go/releases{/id}","deployments_url":"https://api.github.com/repos/yarpc/yarpc-go/deployments","created_at":"2016-01-26T00:04:14Z","updated_at":"2017-12-18T19:15:30Z","pushed_at":"2017-12-19T01:52:52Z","git_url":"git://github.com/yarpc/yarpc-go.git","ssh_url":"git@github.com:yarpc/yarpc-go.git","clone_url":"https://github.com/yarpc/yarpc-go.git","svn_url":"https://github.com/yarpc/yarpc-go","homepage":"","size":10216,"stargazers_count":83,"watchers_count":83,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":16,"mirror_url":null,"archived":false,"open_issues_count":9,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":16,"open_issues":9,"watchers":83,"default_branch":"dev"}},"base":{"label":"yarpc:dev","ref":"dev","sha":"0261590d61db974edb804eadcf588d7f16175ada","user":{"login":"yarpc","id":16569504,"avatar_url":"https://avatars2.githubusercontent.com/u/16569504?v=4","gravatar_id":"","url":"https://api.github.com/users/yarpc","html_url":"https://github.com/yarpc","followers_url":"https://api.github.com/users/yarpc/followers","following_url":"https://api.github.com/users/yarpc/following{/other_user}","gists_url":"https://api.github.com/users/yarpc/gists{/gist_id}","starred_url":"https://api.github.com/users/yarpc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarpc/subscriptions","organizations_url":"https://api.github.com/users/yarpc/orgs","repos_url":"https://api.github.com/users/yarpc/repos","events_url":"https://api.github.com/users/yarpc/events{/privacy}","received_events_url":"https://api.github.com/users/yarpc/received_events","type":"Organization","site_admin":false},"repo":{"id":50390111,"name":"yarpc-go","full_name":"yarpc/yarpc-go","owner":{"login":"yarpc","id":16569504,"avatar_url":"https://avatars2.githubusercontent.com/u/16569504?v=4","gravatar_id":"","url":"https://api.github.com/users/yarpc","html_url":"https://github.com/yarpc","followers_url":"https://api.github.com/users/yarpc/followers","following_url":"https://api.github.com/users/yarpc/following{/other_user}","gists_url":"https://api.github.com/users/yarpc/gists{/gist_id}","starred_url":"https://api.github.com/users/yarpc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarpc/subscriptions","organizations_url":"https://api.github.com/users/yarpc/orgs","repos_url":"https://api.github.com/users/yarpc/repos","events_url":"https://api.github.com/users/yarpc/events{/privacy}","received_events_url":"https://api.github.com/users/yarpc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yarpc/yarpc-go","description":"A message passing platform for Go","fork":false,"url":"https://api.github.com/repos/yarpc/yarpc-go","forks_url":"https://api.github.com/repos/yarpc/yarpc-go/forks","keys_url":"https://api.github.com/repos/yarpc/yarpc-go/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yarpc/yarpc-go/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yarpc/yarpc-go/teams","hooks_url":"https://api.github.com/repos/yarpc/yarpc-go/hooks","issue_events_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/events{/number}","events_url":"https://api.github.com/repos/yarpc/yarpc-go/events","assignees_url":"https://api.github.com/repos/yarpc/yarpc-go/assignees{/user}","branches_url":"https://api.github.com/repos/yarpc/yarpc-go/branches{/branch}","tags_url":"https://api.github.com/repos/yarpc/yarpc-go/tags","blobs_url":"https://api.github.com/repos/yarpc/yarpc-go/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yarpc/yarpc-go/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yarpc/yarpc-go/git/refs{/sha}","trees_url":"https://api.github.com/repos/yarpc/yarpc-go/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yarpc/yarpc-go/statuses/{sha}","languages_url":"https://api.github.com/repos/yarpc/yarpc-go/languages","stargazers_url":"https://api.github.com/repos/yarpc/yarpc-go/stargazers","contributors_url":"https://api.github.com/repos/yarpc/yarpc-go/contributors","subscribers_url":"https://api.github.com/repos/yarpc/yarpc-go/subscribers","subscription_url":"https://api.github.com/repos/yarpc/yarpc-go/subscription","commits_url":"https://api.github.com/repos/yarpc/yarpc-go/commits{/sha}","git_commits_url":"https://api.github.com/repos/yarpc/yarpc-go/git/commits{/sha}","comments_url":"https://api.github.com/repos/yarpc/yarpc-go/comments{/number}","issue_comment_url":"https://api.github.com/repos/yarpc/yarpc-go/issues/comments{/number}","contents_url":"https://api.github.com/repos/yarpc/yarpc-go/contents/{+path}","compare_url":"https://api.github.com/repos/yarpc/yarpc-go/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yarpc/yarpc-go/merges","archive_url":"https://api.github.com/repos/yarpc/yarpc-go/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yarpc/yarpc-go/downloads","issues_url":"https://api.github.com/repos/yarpc/yarpc-go/issues{/number}","pulls_url":"https://api.github.com/repos/yarpc/yarpc-go/pulls{/number}","milestones_url":"https://api.github.com/repos/yarpc/yarpc-go/milestones{/number}","notifications_url":"https://api.github.com/repos/yarpc/yarpc-go/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yarpc/yarpc-go/labels{/name}","releases_url":"https://api.github.com/repos/yarpc/yarpc-go/releases{/id}","deployments_url":"https://api.github.com/repos/yarpc/yarpc-go/deployments","created_at":"2016-01-26T00:04:14Z","updated_at":"2017-12-18T19:15:30Z","pushed_at":"2017-12-19T01:52:52Z","git_url":"git://github.com/yarpc/yarpc-go.git","ssh_url":"git@github.com:yarpc/yarpc-go.git","clone_url":"https://github.com/yarpc/yarpc-go.git","svn_url":"https://github.com/yarpc/yarpc-go","homepage":"","size":10216,"stargazers_count":83,"watchers_count":83,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":16,"mirror_url":null,"archived":false,"open_issues_count":9,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":16,"open_issues":9,"watchers":83,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/yarpc/yarpc-go/pulls/1359"},"html":{"href":"https://github.com/yarpc/yarpc-go/pull/1359"},"issue":{"href":"https://api.github.com/repos/yarpc/yarpc-go/issues/1359"},"comments":{"href":"https://api.github.com/repos/yarpc/yarpc-go/issues/1359/comments"},"review_comments":{"href":"https://api.github.com/repos/yarpc/yarpc-go/pulls/1359/comments"},"review_comment":{"href":"https://api.github.com/repos/yarpc/yarpc-go/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/yarpc/yarpc-go/pulls/1359/commits"},"statuses":{"href":"https://api.github.com/repos/yarpc/yarpc-go/statuses/14c9af11a920a12144897757bdb5000ce8f1657a"}},"author_association":"OWNER"}}
{"actor":{"display_login":"abhinav"}}