{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc/issues/7386","repository_url":"https://api.github.com/repos/grpc/grpc","labels_url":"https://api.github.com/repos/grpc/grpc/issues/7386/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc/issues/7386/comments","events_url":"https://api.github.com/repos/grpc/grpc/issues/7386/events","html_url":"https://github.com/grpc/grpc/pull/7386","id":165450999,"number":7386,"title":"[C-API] runtime","user":{"login":"tengyifei","id":2877531,"avatar_url":"https://avatars.githubusercontent.com/u/2877531?v=3","gravatar_id":"","url":"https://api.github.com/users/tengyifei","html_url":"https://github.com/tengyifei","followers_url":"https://api.github.com/users/tengyifei/followers","following_url":"https://api.github.com/users/tengyifei/following{/other_user}","gists_url":"https://api.github.com/users/tengyifei/gists{/gist_id}","starred_url":"https://api.github.com/users/tengyifei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tengyifei/subscriptions","organizations_url":"https://api.github.com/users/tengyifei/orgs","repos_url":"https://api.github.com/users/tengyifei/repos","events_url":"https://api.github.com/users/tengyifei/events{/privacy}","received_events_url":"https://api.github.com/users/tengyifei/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/grpc/grpc/labels/cla:%20yes","name":"cla: yes","color":"009800"}],"state":"closed","locked":false,"assignee":{"login":"sreecha","id":2754995,"avatar_url":"https://avatars.githubusercontent.com/u/2754995?v=3","gravatar_id":"","url":"https://api.github.com/users/sreecha","html_url":"https://github.com/sreecha","followers_url":"https://api.github.com/users/sreecha/followers","following_url":"https://api.github.com/users/sreecha/following{/other_user}","gists_url":"https://api.github.com/users/sreecha/gists{/gist_id}","starred_url":"https://api.github.com/users/sreecha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sreecha/subscriptions","organizations_url":"https://api.github.com/users/sreecha/orgs","repos_url":"https://api.github.com/users/sreecha/repos","events_url":"https://api.github.com/users/sreecha/events{/privacy}","received_events_url":"https://api.github.com/users/sreecha/received_events","type":"User","site_admin":false},"assignees":[{"login":"sreecha","id":2754995,"avatar_url":"https://avatars.githubusercontent.com/u/2754995?v=3","gravatar_id":"","url":"https://api.github.com/users/sreecha","html_url":"https://github.com/sreecha","followers_url":"https://api.github.com/users/sreecha/followers","following_url":"https://api.github.com/users/sreecha/following{/other_user}","gists_url":"https://api.github.com/users/sreecha/gists{/gist_id}","starred_url":"https://api.github.com/users/sreecha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sreecha/subscriptions","organizations_url":"https://api.github.com/users/sreecha/orgs","repos_url":"https://api.github.com/users/sreecha/repos","events_url":"https://api.github.com/users/sreecha/events{/privacy}","received_events_url":"https://api.github.com/users/sreecha/received_events","type":"User","site_admin":false},{"login":"vjpai","id":8864912,"avatar_url":"https://avatars.githubusercontent.com/u/8864912?v=3","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":"ctiller","id":10120821,"avatar_url":"https://avatars.githubusercontent.com/u/10120821?v=3","gravatar_id":"","url":"https://api.github.com/users/ctiller","html_url":"https://github.com/ctiller","followers_url":"https://api.github.com/users/ctiller/followers","following_url":"https://api.github.com/users/ctiller/following{/other_user}","gists_url":"https://api.github.com/users/ctiller/gists{/gist_id}","starred_url":"https://api.github.com/users/ctiller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ctiller/subscriptions","organizations_url":"https://api.github.com/users/ctiller/orgs","repos_url":"https://api.github.com/users/ctiller/repos","events_url":"https://api.github.com/users/ctiller/events{/privacy}","received_events_url":"https://api.github.com/users/ctiller/received_events","type":"User","site_admin":false}],"milestone":null,"comments":5,"created_at":"2016-07-14T00:26:08Z","updated_at":"2016-07-26T19:11:47Z","closed_at":"2016-07-26T19:11:47Z","pull_request":{"url":"https://api.github.com/repos/grpc/grpc/pulls/7386","html_url":"https://github.com/grpc/grpc/pull/7386","diff_url":"https://github.com/grpc/grpc/pull/7386.diff","patch_url":"https://github.com/grpc/grpc/pull/7386.patch"},"body":"This PR implements all blocking APIs and a async unary call.\r\n\r\nTo reviewers:\r\n+ `include/grpc_c` contains the public headers that the final user could see\r\n+ `src/c` contains the implementations of those methods defined in `include`\r\n+ `test/c/end2end` contains end-to-end tests for the APIs.\r\n\r\nThe tests are written in C++, since it depends on a server implementation which the C runtime does not provide yet. As a result they are subsumed under C++ tests and can be run by specifying `-l c++` in the test script.\r\n\r\nSince this is a huge PR, I hope to split it into different functional components and have multiple reviewers each going over a section:\r\n\r\n+ Unary blocking call: `src/c/unary_blocking_call.c`\r\n+ Client streaming block call: `src/c/client_streaming_blocking_call.c`\r\n+ Server streaming block call: `src/c/server_streaming_blocking_call.c`\r\n+ Bidi streaming block call: `src/c/bidi_streaming_blocking_call.c`\r\n+ Unary async call: `src/c/unary_async_call.c`\r\n\r\nSome useful files:\r\n+ `src/c/completion_queue.c` handles unwrapping of tags. A `call_op_set` is always used as tag during async operations. The user tag is stored in the set and is what `completion_queue_next` returns.\r\n+ `src/c/call_ops.c` handles filling a `grpc_op` array using operations specified in `call_op_set`. The library can declaratively indicate the actions to be performed in a `call_start_batch`, much like C++."},"comment":{"url":"https://api.github.com/repos/grpc/grpc/issues/comments/235373491","html_url":"https://github.com/grpc/grpc/pull/7386#issuecomment-235373491","issue_url":"https://api.github.com/repos/grpc/grpc/issues/7386","id":235373491,"user":{"login":"tengyifei","id":2877531,"avatar_url":"https://avatars.githubusercontent.com/u/2877531?v=3","gravatar_id":"","url":"https://api.github.com/users/tengyifei","html_url":"https://github.com/tengyifei","followers_url":"https://api.github.com/users/tengyifei/followers","following_url":"https://api.github.com/users/tengyifei/following{/other_user}","gists_url":"https://api.github.com/users/tengyifei/gists{/gist_id}","starred_url":"https://api.github.com/users/tengyifei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tengyifei/subscriptions","organizations_url":"https://api.github.com/users/tengyifei/orgs","repos_url":"https://api.github.com/users/tengyifei/repos","events_url":"https://api.github.com/users/tengyifei/events{/privacy}","received_events_url":"https://api.github.com/users/tengyifei/received_events","type":"User","site_admin":false},"created_at":"2016-07-26T19:11:46Z","updated_at":"2016-07-26T19:11:46Z","body":"Closed in favor of https://github.com/grpc/grpc/pull/7531"}}
{"actor":{"display_login":"tengyifei"}}