commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 01/02: grc: only fix old message connection


From: git
Subject: [Commit-gnuradio] [gnuradio] 01/02: grc: only fix old message connections if both ends are valid
Date: Tue, 26 Aug 2014 19:40:06 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

jcorgan pushed a commit to branch maint
in repository gnuradio.

commit cbdfeb409479c6735c756fdb74110eb4e80dc7b3
Author: Sebastian Koslowski <address@hidden>
Date:   Tue Aug 26 13:08:02 2014 +0200

    grc: only fix old message connections if both ends are valid
---
 grc/base/FlowGraph.py | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/grc/base/FlowGraph.py b/grc/base/FlowGraph.py
index 519d399..2281e24 100644
--- a/grc/base/FlowGraph.py
+++ b/grc/base/FlowGraph.py
@@ -296,9 +296,10 @@ class FlowGraph(Element):
                 #get the blocks
                 source_block = self.get_block(source_block_id)
                 sink_block = self.get_block(sink_block_id)
-                # update numeric message ports keys
-                source_key = self.update_message_port_key(source_key, 
source_block.get_sources())
-                sink_key = self.update_message_port_key(sink_key, 
sink_block.get_sinks())
+                # fix old, numeric message ports keys
+                source_key, sink_key = self.update_old_message_port_keys(
+                    source_key, sink_key, source_block, sink_block
+                )
                 #verify the ports
                 if source_key not in source_block.get_source_keys():
                     # dummy blocks learn their ports here
@@ -325,7 +326,8 @@ class FlowGraph(Element):
         self.rewrite() #global rewrite
 
 
-    def update_message_port_key(self, key, ports):
+    @staticmethod
+    def update_old_message_port_keys(source_key, sink_key, source_block, 
sink_block):
         """Backward compatibility for message port keys
 
         Message ports use their names as key (like in the 'connect' method).
@@ -334,18 +336,18 @@ class FlowGraph(Element):
         respective port. The correct message port is deduced from the integer
         value of the key (assuming the order has not changed).
 
-        :param key: the port key to be updated
-        :param ports: list of candidate ports
-        :returns: the updated key or the original one
+        The connection ends are updated only if both ends translate into a
+        message port.
         """
-        if key.isdigit():  # don't bother current message port keys
-            try:
-                port = ports[int(key)]  # get port (assuming liner indexed 
keys)
-                if port.get_type() == "message":
-                    return port.get_key()  # for message ports get updated key
-            except IndexError:
-                pass
-        return key  # do nothing
+        try:
+            # get ports using the "old way" (assuming liner indexed keys)
+            source_port = source_block.get_sources()[int(source_key)]
+            sink_port = sink_block.get_sinks()[int(sink_key)]
+            if source_port.get_type() == "message" and sink_port.get_type() == 
"message":
+                source_key, sink_key = source_port.get_key(), 
sink_port.get_key()
+        except (ValueError, IndexError):
+            pass
+        return source_key, sink_key  # do nothing
 
 
 def _initialize_dummy_block(block, block_n):
@@ -370,4 +372,4 @@ def _dummy_block_add_port(block, key, dir):
     if port.is_source():
         block.get_sources().append(port)
     else:
-        block.get_sinks().append(port)
\ No newline at end of file
+        block.get_sinks().append(port)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]