diff src/plugins/plugin_misc_radiocol.py @ 849:c5a8f602662b

plugin room_game, radiocol: RoomGame.send returns a Deferred.
author souliane <souliane@mailoo.org>
date Tue, 18 Feb 2014 17:49:33 +0100
parents 8f335c03eebb
children c238d2c02237
line wrap: on
line diff
--- a/src/plugins/plugin_misc_radiocol.py	Tue Feb 18 16:24:19 2014 +0100
+++ b/src/plugins/plugin_misc_radiocol.py	Tue Feb 18 17:49:33 2014 +0100
@@ -22,7 +22,7 @@
 from twisted.words.xish import domish
 from twisted.internet import reactor
 from twisted.words.protocols.jabber import jid
-from twisted.internet import threads, defer
+from twisted.internet import defer
 from sat.core import exceptions
 import os.path
 import copy
@@ -89,7 +89,9 @@
         """This method is called by libervia when a song has been uploaded
         @param referee: JID of the referee in the room (room userhost + '/' + nick)
         @song_path: absolute path of the song added
-        @param profile_key: %(doc_profile_key)s"""
+        @param profile_key: %(doc_profile_key)s
+        @return: a Deferred instance
+        """
         #XXX: this is a Q&D way for the proof of concept. In the future, the song should
         #     be streamed to the backend using XMPP file copy
         #     Here we cheat because we know we are on the same host, and we don't
@@ -111,14 +113,7 @@
                  }
         radio_data = self.games[jid.JID(referee).userhost()]  # FIXME: referee comes from Libervia's client side, it's unsecure
         radio_data['to_delete'][attrs['filename']] = song_path  # FIXME: works only because of the same host trick, see the note under the docstring
-
-        # XXX: avoid deferToThread which is causing testing troubles. When using deferToThread,
-        # the callbacks that are added (by the test) to the Deferred instance returned by this
-        # method are not run. And if you run d.callback again, you get a AlreadyCalledError.
-        d = defer.Deferred()
-        d.addCallback(self.send, ('', 'song_added'), attrs, profile=profile)
-        d.callback(jid.JID(referee))
-        return d
+        return self.send(jid.JID(referee), ('', 'song_added'), attrs, profile=profile)
 
     def playNext(self, room_jid, profile):
         """"Play next song in queue if exists, and put a timer