{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc/issues/15771","repository_url":"https://api.github.com/repos/grpc/grpc","labels_url":"https://api.github.com/repos/grpc/grpc/issues/15771/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc/issues/15771/comments","events_url":"https://api.github.com/repos/grpc/grpc/issues/15771/events","html_url":"https://github.com/grpc/grpc/pull/15771","id":332580476,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk1MDMwNTI2","number":15771,"title":"Support Per-Method Codegen Generic on Server Side","user":{"login":"ncteisen","id":6148140,"node_id":"MDQ6VXNlcjYxNDgxNDA=","avatar_url":"https://avatars1.githubusercontent.com/u/6148140?v=4","gravatar_id":"","url":"https://api.github.com/users/ncteisen","html_url":"https://github.com/ncteisen","followers_url":"https://api.github.com/users/ncteisen/followers","following_url":"https://api.github.com/users/ncteisen/following{/other_user}","gists_url":"https://api.github.com/users/ncteisen/gists{/gist_id}","starred_url":"https://api.github.com/users/ncteisen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ncteisen/subscriptions","organizations_url":"https://api.github.com/users/ncteisen/orgs","repos_url":"https://api.github.com/users/ncteisen/repos","events_url":"https://api.github.com/users/ncteisen/events{/privacy}","received_events_url":"https://api.github.com/users/ncteisen/received_events","type":"User","site_admin":false},"labels":[{"id":155504844,"node_id":"MDU6TGFiZWwxNTU1MDQ4NDQ=","url":"https://api.github.com/repos/grpc/grpc/labels/kind/enhancement","name":"kind/enhancement","color":"93732c","default":false},{"id":166332908,"node_id":"MDU6TGFiZWwxNjYzMzI5MDg=","url":"https://api.github.com/repos/grpc/grpc/labels/lang/c++","name":"lang/c++","color":"fad8c7","default":false},{"id":360790193,"node_id":"MDU6TGFiZWwzNjA3OTAxOTM=","url":"https://api.github.com/repos/grpc/grpc/labels/priority/P2","name":"priority/P2","color":"dd7172","default":false}],"state":"open","locked":false,"assignee":{"login":"vjpai","id":8864912,"node_id":"MDQ6VXNlcjg4NjQ5MTI=","avatar_url":"https://avatars0.githubusercontent.com/u/8864912?v=4","gravatar_id":"","url":"https://api.github.com/users/vjpai","html_url":"https://github.com/vjpai","followers_url":"https://api.github.com/users/vjpai/followers","following_url":"https://api.github.com/users/vjpai/following{/other_user}","gists_url":"https://api.github.com/users/vjpai/gists{/gist_id}","starred_url":"https://api.github.com/users/vjpai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vjpai/subscriptions","organizations_url":"https://api.github.com/users/vjpai/orgs","repos_url":"https://api.github.com/users/vjpai/repos","events_url":"https://api.github.com/users/vjpai/events{/privacy}","received_events_url":"https://api.github.com/users/vjpai/received_events","type":"User","site_admin":false},"assignees":[{"login":"vjpai","id":8864912,"node_id":"MDQ6VXNlcjg4NjQ5MTI=","avatar_url":"https://avatars0.githubusercontent.com/u/8864912?v=4","gravatar_id":"","url":"https://api.github.com/users/vjpai","html_url":"https://github.com/vjpai","followers_url":"https://api.github.com/users/vjpai/followers","following_url":"https://api.github.com/users/vjpai/following{/other_user}","gists_url":"https://api.github.com/users/vjpai/gists{/gist_id}","starred_url":"https://api.github.com/users/vjpai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vjpai/subscriptions","organizations_url":"https://api.github.com/users/vjpai/orgs","repos_url":"https://api.github.com/users/vjpai/repos","events_url":"https://api.github.com/users/vjpai/events{/privacy}","received_events_url":"https://api.github.com/users/vjpai/received_events","type":"User","site_admin":false},{"login":"yang-g","id":10122250,"node_id":"MDQ6VXNlcjEwMTIyMjUw","avatar_url":"https://avatars0.githubusercontent.com/u/10122250?v=4","gravatar_id":"","url":"https://api.github.com/users/yang-g","html_url":"https://github.com/yang-g","followers_url":"https://api.github.com/users/yang-g/followers","following_url":"https://api.github.com/users/yang-g/following{/other_user}","gists_url":"https://api.github.com/users/yang-g/gists{/gist_id}","starred_url":"https://api.github.com/users/yang-g/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yang-g/subscriptions","organizations_url":"https://api.github.com/users/yang-g/orgs","repos_url":"https://api.github.com/users/yang-g/repos","events_url":"https://api.github.com/users/yang-g/events{/privacy}","received_events_url":"https://api.github.com/users/yang-g/received_events","type":"User","site_admin":false}],"milestone":null,"comments":42,"created_at":"2018-06-14T22:04:38Z","updated_at":"2018-06-28T21:39:40Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/grpc/grpc/pulls/15771","html_url":"https://github.com/grpc/grpc/pull/15771","diff_url":"https://github.com/grpc/grpc/pull/15771.diff","patch_url":"https://github.com/grpc/grpc/pull/15771.patch"},"body":"Working towards #15764.\r\n\r\nThis PR adds the ability to hand pick methods on the server that will go through custom serialization. The method maintains the codegen, so switching an existing async service to be generic becomes trivial.\r\n\r\nThis is not production ready, but I wanted to put it out there for an early look"},"comment":{"url":"https://api.github.com/repos/grpc/grpc/issues/comments/401181785","html_url":"https://github.com/grpc/grpc/pull/15771#issuecomment-401181785","issue_url":"https://api.github.com/repos/grpc/grpc/issues/15771","id":401181785,"node_id":"MDEyOklzc3VlQ29tbWVudDQwMTE4MTc4NQ==","user":{"login":"yang-g","id":10122250,"node_id":"MDQ6VXNlcjEwMTIyMjUw","avatar_url":"https://avatars0.githubusercontent.com/u/10122250?v=4","gravatar_id":"","url":"https://api.github.com/users/yang-g","html_url":"https://github.com/yang-g","followers_url":"https://api.github.com/users/yang-g/followers","following_url":"https://api.github.com/users/yang-g/following{/other_user}","gists_url":"https://api.github.com/users/yang-g/gists{/gist_id}","starred_url":"https://api.github.com/users/yang-g/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yang-g/subscriptions","organizations_url":"https://api.github.com/users/yang-g/orgs","repos_url":"https://api.github.com/users/yang-g/repos","events_url":"https://api.github.com/users/yang-g/events{/privacy}","received_events_url":"https://api.github.com/users/yang-g/received_events","type":"User","site_admin":false},"created_at":"2018-06-28T21:39:40Z","updated_at":"2018-06-28T21:39:40Z","author_association":"CONTRIBUTOR","body":"Regarding 1, I have not looked closely but am not sure we need the unbalanced case in the generated code with concern of too much bloat. Is the unbalanced case pretty much some syntax sugar to make the special use cases easier? If they can handle one side, why not handle the other as well?\r\n\r\nRegarding 2, yes I understand this will make wrapping AsyncService easier as I pointed out in the previous comment. What I was saying is that whether we should force users to make it explicit (aka not to use AsyncService but break it up). Note the current generic is done this way, as you cannot say `WithGenericA(AsyncService)`."}}
{"actor":{"display_login":"yang-g"}}