I think the right approach to something like this would be to use the
existing service definition support and write a protoc plugin that does the
code gen. To layer on extra things -- for concepts/features that OSGI
supports but that can't be modeled just with proto service definitions --
 you could probably use custom options for services and methods. More
complicated things may require clever modeling with the request/response
types (and maybe custom message and field options, too). These primitives
can likely take you pretty far, without introducing any special syntax or
keywords in protos.


----
*Josh Humphries*
jh...@bluegosling.com

On Tue, Apr 25, 2017 at 6:53 PM, Scott Lewis <scottsle...@gmail.com> wrote:

> I've been happily using protocol buffers to implement Java <-> Python
> interaction using OSGi Remote Services [1,2].
>
> Remote Services is a spec that extends OSGi services to out-of-process
> access.   A nice thing about the Remote Services spec is that it is
> transport-independent...allowing arbitrary wire protocols and
> serialization formats via a distribution provider.  For example, I've
> created distribution providers based upon Py4j [1], and grcp/protocol
> buffers [2].  The distribution provider(s) can be selected at runtime for
> individual remote services.
>
> One thought I've had would be to allow remote services to be declared in
> .proto files, and generate the osgi remote service a) metadata; b) impl
> code; c) client code.
>
> I think one way to do this would be to implement protoc language additions
> for handling the service keyword, as grcp does.  Another way would be to
> add something like osgiremoteservice keyword to protoc for handling
> declaring and generating osgi remote services across multiple languages.
>
> Question:  Is there a way to add a new keyword to protoc?   I would prefer
> not to just provide an impl of the existing proto3 'service' keyword,
> because an osgi remote service has other/additional behavior (e.g.
> dynamics, async access, etc) based upon the OSGi service registry.
>
> Thanks,
>
> Scott
>
> [1] https://github.com/ECF/Py4j-RemoteServicesProvider
>
> [2] https://github.com/ECF/grpc-RemoteServicesProvider
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to protobuf+unsubscr...@googlegroups.com.
> To post to this group, send email to protobuf@googlegroups.com.
> Visit this group at https://groups.google.com/group/protobuf.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to