summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/jobs.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2010-06-02 15:57:18 -0400
committerLance Stout <lancestout@gmail.com>2010-06-02 15:57:18 -0400
commit6469cdb4ca4b94b9154d7efb408aba3a7a7b42e4 (patch)
treeae0bdcce7b02e0a11231f8fff44f925adb7fc5cd /sleekxmpp/plugins/jobs.py
parentf5cae85af5c2f9c79ade1e6413436c1206689bdd (diff)
parent18e27d65ce47d877d6b2c810979df640aba7d8ba (diff)
downloadslixmpp-6469cdb4ca4b94b9154d7efb408aba3a7a7b42e4.tar.gz
slixmpp-6469cdb4ca4b94b9154d7efb408aba3a7a7b42e4.tar.bz2
slixmpp-6469cdb4ca4b94b9154d7efb408aba3a7a7b42e4.tar.xz
slixmpp-6469cdb4ca4b94b9154d7efb408aba3a7a7b42e4.zip
Merge branch 'develop' of git://github.com/fritzy/SleekXMPP into develop
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
+