On Fri, May 21, 2010 at 11:17:13AM -0400, Darryl L. Pierce wrote:
On Fri, May 21, 2010 at 10:10:13AM -0500, Ryan O'Hara wrote:
> > Our goal in this is to avoid reinventing the wheel if some existing
> > framework can do the job for us. If anybody has recommendations for what
> > could provide what we need (remote method calls that works with
> > character devices, with cross platform support for windows guests)
> > please recommend them.
>
> I believe that any true RPC solution is going to require a
> network. Perhaps I am wrong, or perhaps we are not agreeing on what
> constitutes RPC.
For me, "rpc" (I'll use quotes and lower case letters) is anything that
allows us to, from the host machine, make function calls on the guest
over virtio.
OK. Note that what I initially had in mind would meet this
definition. From what I gathered, the major issue with my initial idea
was that it would require code (at least a header file for types,
potentially a library) on the host/application/console side.
To me, RPC is much more. It involves have a server that registers
calls, listens for those calls and maps them accordinly. This, as far
as I can tell, always involves a server listening on a network. Think
Sun RPC. Even XML RPC has this mode. Hours of searching and reading
bought me to the conclusion that RPC (my defition) requires a network
for some sort of RPC server to listen on. That my my understanding
from the start, and I didn't find a solution that would work without a
network.
The story so far is this:
For virtio we will have a char device in the guest which maps to a
UNIX domain socket on the host. This is our channel. There is no TCP,
no network, etc. It is more like a named pipe than anything else. We
want to provide a mechanism for requesting information from the guest
and getting a response. We don't want to add any new code to the
application (host) side.
Back to your definition of RPC, Darryl. I think you have the right
idea, I just wouldn't call it RPC. If I understand all the
requirements, we should be able to simply send our requests/responses
in XML format between the two endpoints. We can publish a DTD and
application developers can adhere to that. Personally, I think a
library would be useful, but we can worry about that later.
Am I making sense or is this complete rubbish?
Ryan