Author: dmeyer
Date: Fri Oct 26 13:55:04 2007
New Revision: 2883

Log:
make rpc thread safe

Modified:
   trunk/base/src/rpc.py

Modified: trunk/base/src/rpc.py
==============================================================================
--- trunk/base/src/rpc.py       (original)
+++ trunk/base/src/rpc.py       Fri Oct 26 13:55:04 2007
@@ -225,6 +225,12 @@
         """
         Call the remote command and return InProgress.
         """
+        if not kaa.notifier.is_mainthread():
+            # create InProgress object and return
+            callback = kaa.notifier.InProgress()
+            kwargs['_kaa_rpc_callback'] = callback
+            kaa.notifier.MainThreadCallback(self.rpc)(cmd, *args, **kwargs)
+            return callback
         if not self._wmon:
             raise IOError('channel is disconnected')
         seq = self._next_seq
@@ -233,7 +239,7 @@
         payload = cPickle.dumps((cmd, args, kwargs), pickle.HIGHEST_PROTOCOL)
         self._send_packet(seq, packet_type, payload)
         # create InProgress object and return
-        callback = kaa.notifier.InProgress()
+        callback = kwargs.pop('_kaa_rpc_callback', kaa.notifier.InProgress())
         # callback with error handler
         self._rpc_in_progress[seq] = callback
         return callback

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to