Hi Stephen,
So I've read the IOData spec over and over (and over) and am starting
to grok it. Basically, as I see it, what separates it from Ad-Hoc
commands is general-purpose XML communication (the child of <in> and
<out> can be any XML, not just data forms)... (and it seems some other
things about schema discovery, but I don't understand the full
implication of that yet.)
I have a question that hopefully you could answer.
There is the notion of a session-id for a single procedure execution,
but what about an "environment-id." In Linked Process, each submitted
job (set of statements to execute) alters the state of a virtual
machine (and there can be many virtual machines running on the same
physical server). The virtual machine has a unique identifier and when
you issue a job, you need to state to which virtual machine that job
is intended. Thus, in IOData syntax, I believe there needs to be
something like:
<iq type='set' from='[email protected]/123' to='[email protected]/456' id='xxxx'>
<command xmlns='http://jabber.org/protocol/commands'
sessionid='RPC-SESSION-0000002'
environmentid='VM-1234'
node='submit_job'
action='execute'/>
<iodata xmlns='urn:xmpp:tmp:io-data' type='input'>
<in>
<code>
for(int i=0; i<10; i++) {
temp + 1;
}
</code>
</in>
</iodata>
</iq>
In short, the "environmentid" is needed to state to which environment
you are altering the state of (which VM you are altering the state
of). While this could be in the "to=" of the IQ tag, the farm is the
only XMPP client in the architecture (much faster/efficient to create
virtual machines without having to log them into an XMPP server and
flood the network with <presence/> -- and no server components
wanted.). Or it could be in the "<code/>" tag -- e.g. <code
vm_id="VM-1234"/>??. What are you thoughts on this "routing" issue?
Thank you for your time,
Marko.
http://markorodriguez.com
On Sep 29, 2009, at 10:26 AM, Stephen Pendleton wrote:
The IO Data XEP already has definitions and an extensible framework
for
everything you are trying to do, and more. I think if you tried to
implement
a non-trivial instance of Linked Process you would find that you
would need
the facilities of IO-DATA. This includes support for asynch errors,
job
status, job cancel, synchronous and asynchronous jobs, schemata
discovery.