diff --git a/python/libjack.py b/python/libjack.py index 799386b..b5b464b 100644 --- a/python/libjack.py +++ b/python/libjack.py @@ -255,6 +255,8 @@ class JackGraph( object ): while ("%s-%d"%(cname_prefix,num)) in (self.clients.keys()+self.reserved_names+other_names): num+=1 + return ("%s-%d"%(cname_prefix,num)) + def remove_client( self, name ): diff --git a/python/state.py b/python/state.py index 64e8665..2cc8219 100644 --- a/python/state.py +++ b/python/state.py @@ -1,5 +1,6 @@ from xml.dom.minidom import getDOMImplementation, parse, Element +import string impl = getDOMImplementation() @@ -95,12 +96,31 @@ class SessionDom( object ): return retval + def renameclient( self, celem, newname ): + doc = self.dom.documentElement + celem.setAttribute( "jackname", newname ) + for pelem in celem.getElementsByTagName( "port" ): + old_pname = pelem.getAttribute( "name" ) + pname_split = old_pname.split(":") + pname_split[0] = newname + new_pname = string.join( pname_split, ":" ) + pelem.setAttribute( "name", new_pname ) + for dst in doc.getElementsByTagName( "conn" ): + if dst.getAttribute( "dst" ) == old_pname: + dst.setAttribute( "dst", new_pname ) + + + def fixup_client_names( self, graph ): doc = self.dom.documentElement for c in doc.getElementsByTagName( "jackclient" ): + if c.getAttribute( "infra" ) == "True": + continue cname = c.getAttribute( "jackname" ) if cname in graph.get_taken_names(): - c.setAttribute( "jackname", graph.get_free_name( cname, self.get_reg_client_names() ) ) + free_name = graph.get_free_name( cname, self.get_reg_client_names() ) + print "name taken %s rename to %s"%(cname, free_name ) + self.renameclient( c, free_name )