- elif isinstance(other, PortRef):
- if other.peer is not self:
- other.connect(self)
- else:
- raise TypeError, \
- "assigning non-port reference '%s' to port '%s'" \
- % (other, self)
-
- # Allow a master/slave port pair to be spliced between
- # a port and its connected peer. Useful operation for connecting
- # instrumentation structures into a system when it is necessary
- # to connect the instrumentation after the full system has been
- # constructed.
- def splice(self, new_master_peer, new_slave_peer):
- if self.peer and not proxy.isproxy(self.peer):
- if isinstance(new_master_peer, PortRef) and \
- isinstance(new_slave_peer, PortRef):
- old_peer = self.peer
- if self.role == 'SLAVE':
- self.peer = new_master_peer
- old_peer.peer = new_slave_peer
- new_master_peer.connect(self)
- new_slave_peer.connect(old_peer)
- elif self.role == 'MASTER':
- self.peer = new_slave_peer
- old_peer.peer = new_master_peer
- new_slave_peer.connect(self)
- new_master_peer.connect(old_peer)
- else:
- panic("Port %s has unknown role, "+\
- "cannot splice in new peers\n", self)
- else:
- raise TypeError, \
- "Splicing non-port references '%s','%s' to port '%s'"\
- % (new_peer, peers_new_peer, self)
- else:
+ return
+ elif not isinstance(other, PortRef):
+ raise TypeError("assigning non-port reference '%s' to port '%s'" \
+ % (other, self))
+
+ if not Port.is_compat(self, other):
+ fatal("Ports %s and %s with roles '%s' and '%s' "
+ "are not compatible", self, other, self.role, other.role)
+
+ if other.peer is not self:
+ other.connect(self)
+
+ # Allow a compatible port pair to be spliced between a port and its
+ # connected peer. Useful operation for connecting instrumentation
+ # structures into a system when it is necessary to connect the
+ # instrumentation after the full system has been constructed.
+ def splice(self, new_1, new_2):
+ if not self.peer or proxy.isproxy(self.peer):