summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/jobs.py
diff options
context:
space:
mode:
authorThom Nichols <tmnichols@gmail.com>2010-06-01 22:54:30 -0400
committerThom Nichols <tmnichols@gmail.com>2010-06-01 22:54:30 -0400
commit49f5767aea2815211349d93aa03ce2b9dc088c1e (patch)
tree3a63f08d009dc7d16560ac2fc464482649b4cd47 /sleekxmpp/plugins/jobs.py
parent3e83b16a586b34dd686a4aeaea77c50a92f54b51 (diff)
parente6c2fde2834fafbc35b52da7e523f2b351f53a15 (diff)
downloadslixmpp-49f5767aea2815211349d93aa03ce2b9dc088c1e.tar.gz
slixmpp-49f5767aea2815211349d93aa03ce2b9dc088c1e.tar.bz2
slixmpp-49f5767aea2815211349d93aa03ce2b9dc088c1e.tar.xz
slixmpp-49f5767aea2815211349d93aa03ce2b9dc088c1e.zip
merged changes from fritzy
Diffstat (limited to 'sleekxmpp/plugins/jobs.py')
-rw-r--r--sleekxmpp/plugins/jobs.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/jobs.py b/sleekxmpp/plugins/jobs.py
new file mode 100644
index 00000000..bb2e2554
--- /dev/null
+++ b/sleekxmpp/plugins/jobs.py
@@ -0,0 +1,44 @@
+from . import base
+import logging
+from xml.etree import cElementTree as ET
+
+class jobs(base.base_plugin):
+ def plugin_init(self):
+ self.xep = 'pubsubjob'
+ self.description = "Job distribution over Pubsub"
+
+ def post_init(self):
+ pass
+ #TODO add event
+
+ def createJobNode(self, host, jid, node, config=None):
+ pass
+
+ def createJob(self, host, node, jobid=None, payload=None):
+ return self.xmpp.plugin['xep_0060'].setItem(host, node, ((jobid, payload),))
+
+ def claimJob(self, host, node, jobid, ifrom=None):
+ return self._setState(host, node, jobid, ET.Element('{http://andyet.net/protocol/pubsubjob}claimed'))
+
+ def unclaimJob(self, jobid):
+ return self._setState(host, node, jobid, ET.Element('{http://andyet.net/protocol/pubsubjob}unclaimed'))
+
+ def finishJob(self, host, node, jobid, payload=None):
+ finished = ET.Element('{http://andyet.net/protocol/pubsubjob}finished')
+ if payload is not None:
+ finished.append(payload)
+ return self._setState(host, node, jobid, finished)
+
+ def _setState(self, host, node, jobid, state, ifrom=None):
+ iq = self.xmpp.Iq()
+ iq['to'] = host
+ if ifrom: iq['from'] = ifrom
+ iq['type'] = 'set'
+ iq['psstate']['node'] = node
+ iq['psstate']['item'] = jobid
+ iq['psstate']['payload'] = state
+ result = iq.send()
+ if result is None or result['type'] != 'result':
+ return False
+ return True
+