summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/jobs.py
diff options
context:
space:
mode:
authorTom Nichols <tmnichols@gmail.com>2010-06-02 15:45:51 -0400
committerTom Nichols <tmnichols@gmail.com>2010-06-02 15:45:51 -0400
commit77bff9cce7deff133017c3aa2c36ff121adfd544 (patch)
tree4eed9803932e32dd6e691b9dc2c6dc8b081dbb01 /sleekxmpp/plugins/jobs.py
parent3f41fdd231998aeb68a7490f723d3c092bd7e380 (diff)
parent7930ed22f2371ba3405f9644f427bec9554d2a15 (diff)
downloadslixmpp-77bff9cce7deff133017c3aa2c36ff121adfd544.tar.gz
slixmpp-77bff9cce7deff133017c3aa2c36ff121adfd544.tar.bz2
slixmpp-77bff9cce7deff133017c3aa2c36ff121adfd544.tar.xz
slixmpp-77bff9cce7deff133017c3aa2c36ff121adfd544.zip
Merge branch 'hacks' of git@github.com:tomstrummer/SleekXMPP into hacks
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
+