{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc-go/issues/906","repository_url":"https://api.github.com/repos/grpc/grpc-go","labels_url":"https://api.github.com/repos/grpc/grpc-go/issues/906/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc-go/issues/906/comments","events_url":"https://api.github.com/repos/grpc/grpc-go/issues/906/events","html_url":"https://github.com/grpc/grpc-go/issues/906","id":178544854,"node_id":"MDU6SXNzdWUxNzg1NDQ4NTQ=","number":906,"title":"Feature Request: Add support for In-Process transport","user":{"login":"Merovius","id":720787,"node_id":"MDQ6VXNlcjcyMDc4Nw==","avatar_url":"https://avatars3.githubusercontent.com/u/720787?v=4","gravatar_id":"","url":"https://api.github.com/users/Merovius","html_url":"https://github.com/Merovius","followers_url":"https://api.github.com/users/Merovius/followers","following_url":"https://api.github.com/users/Merovius/following{/other_user}","gists_url":"https://api.github.com/users/Merovius/gists{/gist_id}","starred_url":"https://api.github.com/users/Merovius/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Merovius/subscriptions","organizations_url":"https://api.github.com/users/Merovius/orgs","repos_url":"https://api.github.com/users/Merovius/repos","events_url":"https://api.github.com/users/Merovius/events{/privacy}","received_events_url":"https://api.github.com/users/Merovius/received_events","type":"User","site_admin":false},"labels":[{"id":528927681,"node_id":"MDU6TGFiZWw1Mjg5Mjc2ODE=","url":"https://api.github.com/repos/grpc/grpc-go/labels/P2","name":"P2","color":"610B0B","default":false},{"id":586671104,"node_id":"MDU6TGFiZWw1ODY2NzExMDQ=","url":"https://api.github.com/repos/grpc/grpc-go/labels/Type:%20Feature","name":"Type: Feature","color":"bfdadc","default":false}],"state":"open","locked":false,"assignee":{"login":"dfawley","id":26072277,"node_id":"MDQ6VXNlcjI2MDcyMjc3","avatar_url":"https://avatars1.githubusercontent.com/u/26072277?v=4","gravatar_id":"","url":"https://api.github.com/users/dfawley","html_url":"https://github.com/dfawley","followers_url":"https://api.github.com/users/dfawley/followers","following_url":"https://api.github.com/users/dfawley/following{/other_user}","gists_url":"https://api.github.com/users/dfawley/gists{/gist_id}","starred_url":"https://api.github.com/users/dfawley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dfawley/subscriptions","organizations_url":"https://api.github.com/users/dfawley/orgs","repos_url":"https://api.github.com/users/dfawley/repos","events_url":"https://api.github.com/users/dfawley/events{/privacy}","received_events_url":"https://api.github.com/users/dfawley/received_events","type":"User","site_admin":false},"assignees":[{"login":"dfawley","id":26072277,"node_id":"MDQ6VXNlcjI2MDcyMjc3","avatar_url":"https://avatars1.githubusercontent.com/u/26072277?v=4","gravatar_id":"","url":"https://api.github.com/users/dfawley","html_url":"https://github.com/dfawley","followers_url":"https://api.github.com/users/dfawley/followers","following_url":"https://api.github.com/users/dfawley/following{/other_user}","gists_url":"https://api.github.com/users/dfawley/gists{/gist_id}","starred_url":"https://api.github.com/users/dfawley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dfawley/subscriptions","organizations_url":"https://api.github.com/users/dfawley/orgs","repos_url":"https://api.github.com/users/dfawley/repos","events_url":"https://api.github.com/users/dfawley/events{/privacy}","received_events_url":"https://api.github.com/users/dfawley/received_events","type":"User","site_admin":false}],"milestone":null,"comments":27,"created_at":"2016-09-22T07:55:32Z","updated_at":"2018-07-31T23:26:02Z","closed_at":null,"author_association":"NONE","body":"Say I want, for example\n- Developing a frontend and a backend as separate logical services, but deploy them in one binary. For traditional systems, having both run in a single binary will just make deployment, installation and running it much simpler. But I also want to have the option to easily split them apart for more complex usecases.\n- Use an embedded database (like leveldb), but I want, for debugging, to be able to peek and poke at it too. I can't just open it twice (it uses locking to prevent that). So instead I want to expose it as a grpc service for debugging. To reuse all my application-level code to interpret the raw bytes in the db, however, I also want that to only use the exposed grpc service. The service can then just open a leveldb, wrap it in a service and use that to talk to the database, whereas the debugger can connect to the service and use that client.\n\nSo, I want to be able to implement a FooServer and then connect to it from the same process. Of course, I could just listen on localhost and connect to that or something like that, but then I'd pay the penalty of serializing and deserializing everything and running the bytes through the kernel (which is significant when it's in the path of talking to your database, for example).\n\nInstead, it would be cool if grpc allowed me to get a \"local\" connection, like `func LocalPair() (*grpc.Client, *grpc.Server)`, which doesn't use a network at all and just directly passes the `proto.Message`s around.\n\nI'd be willing to try to implement that myself, but first I wanted to ask if this is a use case you'd be willing to support.\n"},"comment":{"url":"https://api.github.com/repos/grpc/grpc-go/issues/comments/409399820","html_url":"https://github.com/grpc/grpc-go/issues/906#issuecomment-409399820","issue_url":"https://api.github.com/repos/grpc/grpc-go/issues/906","id":409399820,"node_id":"MDEyOklzc3VlQ29tbWVudDQwOTM5OTgyMA==","user":{"login":"annismckenzie","id":16936,"node_id":"MDQ6VXNlcjE2OTM2","avatar_url":"https://avatars3.githubusercontent.com/u/16936?v=4","gravatar_id":"","url":"https://api.github.com/users/annismckenzie","html_url":"https://github.com/annismckenzie","followers_url":"https://api.github.com/users/annismckenzie/followers","following_url":"https://api.github.com/users/annismckenzie/following{/other_user}","gists_url":"https://api.github.com/users/annismckenzie/gists{/gist_id}","starred_url":"https://api.github.com/users/annismckenzie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/annismckenzie/subscriptions","organizations_url":"https://api.github.com/users/annismckenzie/orgs","repos_url":"https://api.github.com/users/annismckenzie/repos","events_url":"https://api.github.com/users/annismckenzie/events{/privacy}","received_events_url":"https://api.github.com/users/annismckenzie/received_events","type":"User","site_admin":false},"created_at":"2018-07-31T23:26:02Z","updated_at":"2018-07-31T23:26:02Z","author_association":"NONE","body":"So sorry, I didn’t mean to be condescending or plain wrong in that assertion – thanks for all the hard work!\n\n> On Aug 1, 2018, at 12:46 AM, dfawley <notifications@github.com> wrote:\n> \n> @annismckenzie I'm targeting something in the next month or so. I am taking a couple weeks off soon, but hopefully I can wrap things up pretty quickly when I return since I already have a working prototype.\n> \n> I'm not sure what you mean about adding \"another 2 layers\". This is basically just drawing a more consistent line between our existing, hard-coded HTTP/2 transport and the grpc package, and making it pluggable.\n> \n> —\n> You are receiving this because you were mentioned.\n> Reply to this email directly, view it on GitHub, or mute the thread.\n"}}
{"actor":{"display_login":"annismckenzie"}}