Author: dmeyer
Date: Thu Jan 26 20:54:39 2006
New Revision: 7880

Modified:
   trunk/core/src/ipc/mbus_wrapper.py

Log:
add mbus.register for events

Modified: trunk/core/src/ipc/mbus_wrapper.py
==============================================================================
--- trunk/core/src/ipc/mbus_wrapper.py  (original)
+++ trunk/core/src/ipc/mbus_wrapper.py  Thu Jan 26 20:54:39 2006
@@ -209,7 +209,8 @@
         self.entity = entity
         self.valid = True
         self.signals = { 'lost-entity': Signal() }
-
+        self.registrations = []
+        
     def send(self, event, *args):
         self.entity.sendReliable(self.addr, event, _toMType(args))
 
@@ -218,6 +219,9 @@
             callback = _dummy_callback
         return RPCClient(self, command, callback, *args, **kwargs)
 
+    def register(self, prefix):
+        self.rpc('mbus.register', None).call(prefix)
+        
     def __str__(self):
         return '<RemoteEntity %s>' % self.addr
     
@@ -315,8 +319,10 @@
         self.addr = mbus.MAddress({'type': 'home-theatre', 'module': name })
         self.__remote_entities = {}
         self.__modules = []
+        
         self.signals = { 'new-entity': EntitySignal(self.__remote_entities),
-                         'lost-entity': Signal()
+                         'lost-entity': Signal(),
+                         'register': Signal()
                        }
 
         self.events = EventDict(self)
@@ -329,6 +335,7 @@
         self.signal_connect( 'unknown-message', self.mbus_error )
         self.signal_connect( 'error', self.mbus_error )
         self.onErrorInvokeRPCCallback = True
+        self.connect_rpc(self.register_request, 'mbus.register', 
add_source=True)
 
 
     def get_entities(self):
@@ -351,7 +358,6 @@
         """
         pyMbus callback for new entity
         """
-        # FIXME: handle case when signal is connected after this!
         self.signals['new-entity'].emit(self.get_entity(maddr))
 
 
@@ -374,6 +380,15 @@
         log.info('mbus error %s' % error)
 
 
+    def register_request(self, entity, prefix):
+        """
+        Register request from the other side.
+        """
+        entity.registrations.append(prefix)
+        self.signals['register'].emit(entity, prefix)
+        return []
+
+    
     def connect_rpc(self, function, command, *args, **kwargs):
         """
         connect rpc to mbus.
@@ -422,7 +437,22 @@
                 self.connect_rpc(func, command, add_command=ac, add_source=as)
 
 
-
+    def send_event(self, event, *args):
+        send_to = []
+        print 'send', event
+        args = _toMType(args)
+        for entity in self.__remote_entities.values():
+            if not entity.valid:
+                print 'invalid', entity
+                continue
+            for ev in entity.registrations:
+                if event.startswith(ev):
+                    print 'send to', entity
+                    self.sendReliable(entity.addr, event, args)
+                    break
+            else:
+                print 'skip', entity
+                                    
 
 # Check for mbus configuration file. It is either ~/.mbus or defined
 # in the environment variable MBUS.


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to