3 # SUPERV Supervision : contains the implementation of interfaces of SuperVision described in SUPERV.idl
5 # Copyright (C) 2003 CEA/DEN, EDF R&D
13 from salome import orb
14 from salome import lcc
15 from salome import naming_service
16 from salome import CORBA
18 import SALOME_ModuleCatalog
23 from LifeCycleCORBA import *
24 from SALOME_NamingServicePy import *
27 import SALOME_ModuleCatalog
29 # from libSuperVision_Swig import SuperV_Swig
30 # print 'SuperV_Swig imported'
33 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
34 lcc = LifeCycleCORBA(orb)
35 naming_service = SALOME_NamingServicePy_i(orb)
43 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
44 # SuperVision.Swig = 1
45 # print 'SuperV_Swig created'
47 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
48 # SuperVision.Swig = 0
49 # print 'Supervision Component loaded'
51 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
54 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
58 def PortInputFloat(obj, x):
59 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
61 def PortInputLong(obj, x):
62 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
64 def PortInputObject(obj, x):
66 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
68 return obj.Input( SuperVision.AnyValue( x ) )
70 def PortInputString(obj, x):
71 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
73 def InputFloat(obj, nodein_port, x):
74 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
76 def InputLong(obj, nodein_port, x):
77 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
79 def InputObject(obj, nodein_port, x):
81 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
83 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
85 def InputString(obj, nodein_port, x):
86 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
90 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
92 def getRealArgs(self,args):
98 types.append(typestring.match(self).group(1))
101 types.append(type(self))
102 realargs.append(self)
106 types.append(typestring.match(a).group(1))
109 types.append(type(a))
112 return tuple(types), tuple(realargs)
114 bs_AddInput_valuedict = {
115 (InstanceType, FloatType) : PortInputFloat,
116 (InstanceType, IntType) : PortInputLong,
117 (InstanceType, StringType) : PortInputString,
118 (InstanceType, InstanceType) : PortInputObject,
119 (InstanceType, StringType, FloatType) : InputFloat,
120 (InstanceType, StringType, IntType) : InputLong,
121 (InstanceType, StringType, StringType) : InputString,
122 (InstanceType, StringType, InstanceType) : InputObject,
123 (InstanceType, StringType, ListType) : InputObject,
127 def Args( aService , aNodeName , verbose ):
128 lenin = len( aService.ServiceinParameter )
129 infos = aNodeName + 'info = "'
130 infos = infos + 'NodeName : ' + aNodeName + '\\n'
131 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
132 infos = infos + 'PortNames : \\n'
133 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
136 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
137 valname = aNodeName + "\\\\"
138 valname = valname + aService.ServiceinParameter[ i ].Parametername
139 defnames = defnames + argname + " = " + "'" + valname + "' ; "
140 infos = infos + str(i) + '. ' + argname + ' : Input'
141 infos = infos + str(i) + ' '
142 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
143 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
145 lenout = len( aService.ServiceoutParameter )
148 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
149 valname = aNodeName + "\\\\"
150 valname = valname + aService.ServiceoutParameter[ i ].Parametername
151 defnames = defnames + argname + " = " + "'" + valname + "' ; "
152 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
153 infos = infos + str(i) + ' '
154 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
155 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
158 defnames = defnames + infos
160 defnames = defnames + " ; print " + aNodeName + "info"
163 def Service_Swig( aCatalogService ) :
164 aService = SuperVision.Service()
165 aService.ServiceName = aCatalogService.ServiceName
167 while i < len( aCatalogService.ServiceinParameter ) :
168 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
169 SuperVision.AddInParameter( aService , p )
172 while i < len( aCatalogService.ServiceoutParameter ) :
173 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
174 SuperVision.AddOutParameter( aService , p )
178 ##########################################################
180 ##########################################################
181 def __init__( self , aNode , Verbose ):
183 self.N.Verbose = Verbose
187 return self.N.Service()
190 def CreationDate( self ):
191 return self.N.CreationDate()
192 def LastUpdateDate( self ):
193 return self.N.LastUpdateDate()
195 return self.N.Version()
197 return self.N.Author()
199 return self.N.Comment()
201 def SetName( self , aNewName ):
202 return self.N.SetName( aNewName )
203 def SetAuthor( self , anAuthor ):
204 return self.N.SetAuthor( anAuthor )
205 def SetComment( self , aComment ):
206 return self.N.SetComment( aComment )
209 print "Name ",self.N.Name()
210 if self.N.IsFactory() :
211 print "ComponentName ",self.N.GetComponentName()
212 print "InterfaceName ",self.N.GetInterfaceName()
213 if self.N.IsStreamGraph() :
214 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
215 print "Timeout",Timeout
216 print "DataStreamTrace",DataStreamTrace
217 print "DeltaTime",DeltaTime
218 aService = self.N.Service()
219 print "Service Name ",aService.ServiceName
220 lenin = len( aService.ServiceinParameter )
221 print " ",lenin," input argument(s) :"
224 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
226 lenout = len( aService.ServiceoutParameter )
227 print " ",lenout," output argument(s) :"
230 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
232 aKind = self.N.Kind()
233 print "KindOfNode",aKind
234 aFirstCreation = self.N.CreationDate()
235 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
236 aLastModification = self.N.LastUpdateDate()
237 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
238 print "Version ",self.N.Version()
239 print "Author ",self.N.Author()
240 if self.N.IsFactory() :
241 print "Container ",self.N.GetContainer()
242 print "Comment ",self.N.Comment()
243 print "Coords ",self.N.X()," ",self.N.Y()
244 def Port( self , aPortName ):
245 aPort = self.N.Port( aPortName )
247 myPort = Port( aPort , self.N.Verbose )
250 print "Error while creating the Port : ",aPortName
252 def Input( self , *args ):
253 types, realargs = getRealArgs(self.N,args)
254 fn = bs_AddInput_valuedict[types]
255 anInput = apply( fn, realargs)
257 myInput = Port( anInput , self.N.Verbose )
259 ErrMsg = "Failed to create the Input"
263 def InStreamPort( self , aParameterName , aParameterType , aDependency ):
264 aPort = self.N.InStreamPort( aParameterName , aParameterType , aDependency )
266 myPort = StreamPort( aPort , self.N.Verbose )
269 print "Error while creating the Port : ",aParameterName
271 def OutStreamPort( self , aParameterName , aParameterType , aDependency ):
272 aPort = self.N.OutStreamPort( aParameterName , aParameterType , aDependency )
274 myPort = StreamPort( aPort , self.N.Verbose )
277 print "Error while creating the Port : ",aParameterName
279 def GetInPort( self , aParameterName ):
280 aPort = self.N.GetInPort( aParameterName )
282 myPort = Port( aPort , self.N.Verbose )
285 print "Error while creating the Port : ",aParameterName
287 def GetOutPort( self , aParameterName ):
288 aPort = self.N.GetOutPort( aParameterName )
290 myPort = Port( aPort , self.N.Verbose )
293 print "Error while creating the Port : ",aParameterName
295 def GetInStreamPort( self , aParameterName ):
296 aPort = self.N.GetInStreamPort( aParameterName )
298 myPort = StreamPort( aPort , self.N.Verbose )
301 print "Error while creating the Port : ",aParameterName
303 def GetOutStreamPort( self , aParameterName ):
304 aPort = self.N.GetOutStreamPort( aParameterName )
306 myPort = StreamPort( aPort , self.N.Verbose )
309 print "Error while creating the Port : ",aParameterName
312 ports = self.N.Ports()
314 while i < len( ports ) :
315 ports[ i ] = Port( ports[i] , self.N.Verbose )
318 def StreamPorts( self ):
319 ports = self.N.StreamPorts()
321 while i < len( ports ) :
322 ports[ i ] = StreamPort( ports[i] , self.N.Verbose )
325 def AllPorts( self ):
326 allports = self.N.Ports()
327 lenports = len( allports )
330 allports[ i ] = Port( allports[i] , self.N.Verbose )
332 ports = self.N.StreamPorts()
334 while i < len( ports ) :
335 allports.append( StreamPort( ports[i] , self.N.Verbose ) )
338 def ListPorts( self , *args ):
339 if len( args ) == 0 :
340 aName = self.N.Name()
343 ports = self.AllPorts()
347 portsname = ports[ 0 ].Name()
348 bs = portsname.find('\\')
350 portsname1,portsname2 = portsname.split('\\')
351 portsname = portsname1 + portsname2
352 if ports[ 0 ].IsInput():
353 listofports = 'I' + aName + portsname
355 listofports = 'O' + aName + portsname
357 while i < len( ports ) :
358 portsname = ports[ i ].Name()
359 bs = portsname.find('\\')
361 portsname1,portsname2 = portsname.split('\\')
362 portsname = portsname1 + portsname2
363 if ports[ i ].IsInput():
364 listofports = listofports + ',' + 'I' + aName + portsname
366 listofports = listofports + ',' + 'O' + aName + portsname
369 if len( ports ) == 1 :
370 listofports = "[" + listofports + "] = " + aName + ".AllPorts()"
372 listofports = listofports + " = " + aName + ".AllPorts()"
374 def PrintPorts( self ):
375 ports = self.AllPorts()
377 while i < len( ports ) :
379 if ports[ i ].IsInput() :
381 if ( ports[ i ].IsDataStream() ) & ( self.N.IsStreamGraph() == 0 ) :
382 if ports[ i ].IsInput() :
383 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = ports[ i ].Params()
384 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
386 numberofvalues = ports[ i ].NumberOfValues()
387 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),'NumberOfValues',numberofvalues
389 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
392 links = self.N.Links()
394 while i < len( links ) :
395 links[ i ] = Link( links[i] , self.N.Verbose )
398 def StreamLinks( self ) :
399 links = self.N.StreamLinks()
401 while i < len( links ) :
402 links[ i ] = StreamLink( links[i] , self.N.Verbose )
405 def AllLinks( self ) :
406 alllinks = self.N.Links()
407 lenlinks = len( alllinks )
410 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
412 links = self.N.StreamLinks()
414 while i < len( links ) :
415 alllinks.append( StreamLink( links[i] , self.N.Verbose ) )
418 def ListLinks( self , *args ):
419 links = self.AllLinks()
421 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
422 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
423 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
424 listoflinks = listoflinks + links[ 0 ].InPort().Name()
426 while i < len( links ) :
427 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
428 listoflinks = listoflinks + links[ i ].OutPort().Name()
429 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
430 listoflinks = listoflinks + links[ i ].InPort().Name()
433 if len( args ) == 0 :
434 aName = self.N.Name()
437 if len( links ) == 1 :
438 listoflinks = "[" + listoflinks + "] = " + aName + ".AllLinks()"
440 listoflinks = listoflinks + " = " + aName + ".AllLinks()"
442 def PrintLinks( self ):
443 links = self.AllLinks()
445 while i < len( links ) :
448 def IsStreamGraph( self ):
449 return self.N.IsStreamGraph()
451 return self.N.IsGraph()
453 return self.N.IsMacro()
454 def IsFlowMacro( self ):
455 return self.N.IsFlowMacro()
456 def IsStreamMacro( self ):
457 return self.N.IsStreamMacro()
458 def IsComputing( self ):
459 return self.N.IsComputing()
460 def IsFactory( self ):
461 return self.N.IsFactory()
462 def IsInLine( self ):
463 return self.N.IsInLine()
465 return self.N.IsGOTO()
467 return self.N.IsLoop()
468 def IsEndLoop( self ):
469 return self.N.IsEndLoop()
470 def IsSwitch( self ):
471 return self.N.IsSwitch()
472 def IsEndSwitch( self ):
473 return self.N.IsEndSwitch()
474 def GraphLevel( self ) :
475 return self.N.GraphLevel()
476 def SubGraph( self ):
477 return self.N.SubGraph()
478 def SubStreamGraph( self ):
479 return self.N.SubStreamGraph()
481 return self.N.Thread()
482 def IsWaiting( self ):
483 return self.N.IsWaiting()
484 def IsRunning( self ):
485 return self.N.IsRunning()
487 return self.N.IsDone()
488 def IsSuspended( self ):
489 return self.N.IsSuspended()
491 return self.N.State()
493 return self.N.Control()
494 def ControlClear( self ):
495 return self.N.ControlClear()
497 return self.N.ReadyW()
498 def RunningW( self ):
499 return self.N.RunningW()
501 return self.N.DoneW()
502 def SuspendedW( self ):
503 return self.N.SuspendedW()
505 # return self.N.ReRun()
506 #def ReStart( self ):
507 # return self.N.ReStart()
508 #def ReRunAt( self , aNodeName ):
509 # return self.N.ReRunAt( aNodeName )
510 #def ReStartAt( self , aNodeName ):
511 # return self.N.ReStartAt( aNodeName )
516 def KillDone( self ):
517 return self.N.KillDone()
519 return self.N.Suspend()
520 def SuspendDone( self ):
521 return self.N.SuspendDone()
523 return self.N.Resume()
526 def Coords( self , X , Y ):
527 return self.N.Coords( X , Y )
535 return self.N.CpuUsed()
537 ##########################################################
539 ##########################################################
540 def __init__( self , aNode , Verbose ):
542 self.N.Verbose = Verbose
543 def GetComponentName( self ):
544 return self.N.GetComponentName()
545 def GetInterfaceName( self ):
546 return self.N._get_interfaceName()
547 def GetContainer( self ):
548 return self.N.GetContainer()
549 def SetComponentName( self , aComponentName ):
550 return self.N.SetComponentName( aComponentName )
551 def SetInterfaceName( self , anInterfaceName ):
552 return self.N.SetInterfaceName( anInterfaceName )
553 def SetContainer( self , aComputer ):
554 return self.N.SetContainer( aComputer )
556 ##########################################################
558 ##########################################################
559 def __init__( self , aNode , Verbose ):
561 self.N.Verbose = Verbose
562 def Edit( self , FuncName , PyFunc ) :
565 suf = str(random.randrange(1,10000))
566 file = '/tmp/' + FuncName + '_' + suf + '.py'
570 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
574 while ( i < len( PyFunc ) ) :
575 print i,'/',len( PyFunc ),PyFunc[ i ]
576 os.write( fd , PyFunc[ i ] + '\n' )
579 edit = '${EDITOR} ' + file
581 fd = os.open( file , os.O_RDONLY )
582 line = os.read( fd , 132 )
586 line = os.read( fd , 132 )
588 PyFunc = res.splitlines()
590 while i < len( PyFunc ) :
594 print "Open of",file,"failed."
596 def SetPyFunction( self , FuncName , aPyFunction ):
597 return self.N.SetPyFunction( FuncName , aPyFunction )
598 def PyFunction( self ):
599 return self.N.PyFunction()
600 def PyFuncName( self ):
601 return self.N.PyFuncName()
602 def InPort( self , aParameterName , aParameterType ):
603 aPort = self.N.InPort( aParameterName ,
606 myPort = Port( aPort , self.N.Verbose )
609 print "Error while creating the Port : ",aParameterName
611 def OutPort( self , aParameterName , aParameterType ):
612 aPort = self.N.OutPort( aParameterName ,
615 myPort = Port( aPort , self.N.Verbose )
618 print "Error while creating the Port : ",aParameterName
621 PyFunc = self.N.PyFunction()
622 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
623 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
625 ##########################################################
627 ##########################################################
628 def __init__( self , aNode , Verbose ):
630 self.N.Verbose = Verbose
631 def SetCoupled( self , anInLineNode ):
633 node = self.N.SetCoupled( anInLineNode )
638 node = self.N.Coupled()
641 node = INode( node , self.N.Verbose )
643 node = LNode( node , self.N.Verbose )
644 elif node.IsEndLoop() :
645 node = ELNode( node , self.N.Verbose )
646 elif node.IsSwitch() :
647 node = SNode( node , self.N.Verbose )
648 elif node.IsEndSwitch() :
649 node = ESNode( node , self.N.Verbose )
652 ##########################################################
654 ##########################################################
655 def __init__( self , aNode , Verbose ):
657 self.N.Verbose = Verbose
658 def SetPyInit( self , InitName , aPyFunction ):
659 return self.N.SetPyInit( InitName , aPyFunction )
661 return self.N.PyInit()
662 def PyInitName( self ) :
663 return self.N.PyInitName()
665 PyFunc = self.N.PyFunction()
666 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
667 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
668 def SetPyMore( self , MoreName , aPyFunction ):
669 return self.N.SetPyMore( MoreName , aPyFunction )
671 return self.N.PyMore()
672 def PyMoreName( self ) :
673 return self.N.PyMoreName()
675 PyMore = self.N.PyMore()
676 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
677 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
678 def SetPyNext( self , NextName , aPyFunction ):
679 return self.N.SetPyNext( NextName , aPyFunction )
681 return self.N.PyNext()
682 def PyNextName( self ) :
683 return self.N.PyNextName()
685 PyNext = self.N.PyNext()
686 PyNext = self.Edit( self.N.PyNextName() , PyNext )
687 self.N.SetPyNext( self.N.PyNextName() , PyNext )
689 ##########################################################
691 ##########################################################
692 def __init__( self , aNode , Verbose ):
694 self.N.Verbose = Verbose
696 ##########################################################
698 ##########################################################
699 def __init__( self , aNode , Verbose ):
701 self.N.Verbose = Verbose
703 ##########################################################
705 ##########################################################
706 def __init__( self , aNode , Verbose ):
708 self.N.Verbose = Verbose
710 ##########################################################
711 #class ServicesParameter_Swig :
712 ##########################################################
713 # def __init__( self , aServicesParameter ):
714 # self.Parametertype = aServicesParameter.Parametertype
715 # self.Parametername = aServicesParameter.Parametername
717 ##########################################################
719 ##########################################################
720 def __init__( self , aName ):
722 graph = SuperVision.Graph( aName )
725 graph = aName.G.Copy()
729 if graph.IsStreamGraph() :
730 aGraph = graph.ToStreamGraph()
732 graph = StreamGraph( aGraph )
734 print "Graph creation failed"
740 print "Graph creation failed"
741 def CNode( self , *args ):
742 if len( args ) == 1 :
745 aComponent = args[ 0 ]
746 anInterface = args[ 1 ]
748 NodeComponent = modulecatalog.GetComponent( aComponent )
749 aService = NodeComponent.GetService( anInterface , aService )
750 aNode = self.G.CNode( aService )
752 myNode = CNode( aNode , self.G.Verbose )
754 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
758 def Node( self , aComponent , anInterface , aService ):
759 #if SuperVision.Swig :
760 #aService = Service_Swig( aService )
761 return self.FNode( aComponent , anInterface , aService )
762 def FNode( self , aComponent , anInterface , aService ):
763 NodeComponent = modulecatalog.GetComponent( aComponent )
764 aService = NodeComponent.GetService( anInterface , aService )
765 #if SuperVision.Swig :
766 #aService = Service_Swig( aService )
767 aNode = self.G.FNode( aComponent , anInterface , aService )
769 myNode = FNode( aNode , self.G.Verbose )
771 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
775 def INode( self , FuncName , aPythonFunction ):
776 aNode = self.G.INode( FuncName , aPythonFunction )
778 myNode = INode( aNode , self.G.Verbose )
780 ErrMsg = "Failed to create a Node"
784 def GNode( self , FuncName , aPythonFunction , anINode ):
785 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
787 myNode = GNode( aNode , self.G.Verbose )
789 ErrMsg = "Failed to create a Node"
793 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
794 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
796 myNode = LNode( aNode , self.G.Verbose )
797 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
798 return myNode,myEndOfLoop
799 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
803 def SNode( self , FuncName , aPythonFunction ):
804 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
806 myNode = SNode( aNode , self.G.Verbose )
807 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
808 return myNode,myEndOfSwitch
809 ErrMsg = "Failed to create a Node"
813 def MNode( self , aGraphXml ):
814 aMNode = self.G.MNode( aGraphXml )
816 myMNode = MNode( aMNode , self.G.Verbose )
818 ErrMsg = "Failed to create a MNode"
822 def GraphMNode( self , aGraph ):
823 aGraphMNode = self.G.GraphMNode( aGraph.G )
824 if aGraphMNode != None :
825 myMNode = MNode( aGraphMNode , self.G.Verbose )
827 ErrMsg = "Failed to create a MNode"
831 def FlowObjRef( self ) :
832 aGraph = self.G.FlowObjRef()
834 myGraph = Graph( aGraph )
837 def StreamObjRef( self ) :
838 aGraph = self.G.StreamObjRef()
840 myGraph = StreamGraph( aGraph )
843 def PrintService( self , aComponent , anInterface , aService ):
844 NodeComponent = modulecatalog.GetComponent( aComponent )
845 aService = NodeComponent.GetService( anInterface , aService )
846 print "ServiceName ",aService.ServiceName," :"
847 lenin = len( aService.ServiceinParameter )
848 print " ",lenin," input argument(s) :"
851 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
853 lenout = len( aService.ServiceoutParameter )
854 print " ",lenout," output argument(s) :"
857 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
859 def Link( self , aFromNodePort , aToNodePort ):
860 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
862 myLink = Link( aLink , self.G.Verbose )
864 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
868 def Import( self , anXmlFileName ):
869 return self.G.Import( anXmlFileName )
870 def Export( self , anXmlFileName ):
871 return self.G.Export( anXmlFileName )
872 def IsReadOnly( self ) :
873 return self.G.IsReadOnly()
874 def ComponentRef( self , aFactoryServer , aComponent ) :
875 return self.G.ComponentRef( aFactoryServer , aComponent )
877 return self.G.IsValid()
878 def IsExecutable( self ):
879 return self.G.IsExecutable()
880 def IsEditing( self ):
881 return self.G.IsEditing()
882 def IsExecuting( self ):
883 return self.G.IsExecuting()
884 def LevelMax( self ):
885 return self.G.LevelMax()
886 def ThreadsMax( self ):
887 return self.G.ThreadsMax()
888 def SubGraphsNumber( self ):
889 return self.G.SubGraphsNumber()
890 def LevelNodes( self , aLevel ):
891 nodes = self.G.LevelNodes( aLevel )
892 return self.nodesTuple( nodes )
893 def Run( self , *args ):
895 aService = self.Service()
899 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
900 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
904 def Start( self , *args ):
906 aService = self.Service()
910 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
911 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
914 return self.G.Start()
916 sts,aNode,anEvent,aState = self.G.Event()
918 return sts,aNode,anEvent,aState
919 def EventNoW( self ):
920 sts,aNode,anEvent,aState = self.G.EventNoW()
922 return sts,aNode,anEvent,aState
924 sts,aNode,anEvent,aState = self.G.EventW()
926 return sts,aNode,anEvent,aState
929 sts,aNode,anEvent,aState = self.G.EventW()
931 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
934 return self.G.Threads()
935 def SuspendedThreads( self ):
936 return self.G.SuspendedThreads()
937 def LastLevelDone( self ):
938 return self.G.LastLevelDone()
939 def Verbose( self , verbose ):
940 preverbose = self.G.Verbose
941 self.G.Verbose = verbose
944 nodes = self.G.Nodes()
945 return self.nodesTuple( nodes )
946 def nodesTuple( self , nodes ) :
947 n = len( nodes.CNodes )
952 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
955 n = len( nodes.FNodes )
958 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
961 n = len( nodes.INodes )
964 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
967 n = len( nodes.GNodes )
970 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
973 n = len( nodes.LNodes )
976 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
979 n = len( nodes.ELNodes )
982 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
985 n = len( nodes.SNodes )
988 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
991 n = len( nodes.ESNodes )
994 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
997 n = len( nodes.Graphs )
1000 pynodes.append( MNode( nodes.Graphs[i] , self.G.Verbose ) )
1004 def ListNodes( self , *args ):
1005 nodes = self.Nodes()
1008 listofnodes = nodes[ 0 ].Name()
1010 while i < len( nodes ) :
1011 listofnodes = listofnodes + ',' + nodes[ i ].Name()
1014 if len( args ) == 0 :
1015 aName = self.N.Name()
1018 if len( nodes ) == 1 :
1019 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
1021 listofnodes = listofnodes + " = " + aName + ".Nodes()"
1023 def PrintNodes( self ):
1024 nodes = self.Nodes()
1031 def PrintThreads( self ):
1032 nodes = self.Nodes()
1034 while i < len( nodes ) :
1035 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i]
1038 links = self.G.GLinks()
1040 linkslen = len( links )
1041 #print 'GLinks ',linkslen,'Links'
1042 while i < linkslen :
1043 links[ i ] = Link( links[i] , self.G.Verbose )
1045 def GStreamLinks( self ):
1046 streamlinks = self.G.GStreamLinks()
1048 #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
1049 while i < len( streamlinks ) :
1050 streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
1053 def GAllLinks( self ) :
1054 alllinks = self.G.GLinks()
1055 lenlinks = len( alllinks )
1057 while i < lenlinks :
1058 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
1060 links = self.G.StreamLinks()
1062 while j < len(links) :
1063 alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
1067 def ListLinks( self , *args ):
1068 links = self.GAllLinks()
1070 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
1071 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
1072 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
1073 listoflinks = listoflinks + links[ 0 ].InPort().Name()
1075 while i < len( links ) :
1076 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
1077 listoflinks = listoflinks + links[ i ].OutPort().Name()
1078 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
1079 listoflinks = listoflinks + links[ i ].InPort().Name()
1082 if len( args ) == 0 :
1083 aName = self.N.Name()
1086 if len( links ) == 1 :
1087 listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
1089 listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
1091 def PrintLinks( self ):
1092 links = self.GAllLinks()
1094 while i < len( links ) :
1097 def SubGraphsNodes( self , ):
1098 graphs = self.G.SubGraphsNodes()
1101 while i < len( graphs ) :
1102 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1103 outgraphs[ i ].Merge( graphs[i] )
1107 aCopy = self.G.Copy()
1109 myCopy = Graph( aCopy )
1111 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1115 def ToStreamGraph( self ):
1116 aGraph = self.G.ToStreamGraph()
1118 return StreamGraph( aGraph )
1120 def SubGraphsNodes( self , aSubGraphsNumber ):
1121 nodes = self.G.SubGraphsNodes( aSubGraphsNumber )
1122 return self.nodesTuple( nodes )
1123 def Merge( self , aGraph ):
1124 return self.G.Merge( aGraph.G )
1125 def Destroy( self ):
1128 ##########################################################
1129 class GraphE(Graph):
1130 ##########################################################
1131 def __init__( self , aName ):
1132 graph = SuperVision.GraphE( aName )
1137 def ToStreamGraph( self ):
1138 aGraph = self.G.ToStreamGraph()
1140 return StreamGraphE( aGraph )
1143 ##########################################################
1145 ##########################################################
1146 def __init__( self , aMNode , Verbose ):
1148 self.G.Verbose = Verbose
1150 self.N.Verbose = Verbose
1152 ##########################################################
1153 class StreamGraph(Graph):
1154 ##########################################################
1155 def __init__( self , aName ):
1157 graph = SuperVision.StreamGraph( aName )
1160 graph = aName.G.StreamCopy()
1169 print "StreamGraph creation failed"
1170 def StreamCopy( self ):
1171 aCopy = self.G.StreamCopy()
1173 myCopy = StreamGraph( aCopy )
1175 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1179 def StreamLink( self , anOutStreamPort , anInStreamPort ) :
1180 aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
1181 if aStreamLink!= None:
1182 myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
1184 ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
1188 def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
1189 return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
1190 def StreamParams( self ):
1191 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
1192 return Timeout,DataStreamTrace,DeltaTime
1193 def ToFlowGraph( self ):
1194 return self.G.ToFlowGraph()
1195 def SubStreamGraphsNumber( self ):
1196 return self.G.SubStreamGraphsNumber()
1197 def SubStreamGraphsNodes( self , aSubStreamGraphsNumber ):
1198 nodes = self.G.SubStreamGraphsNodes( aSubStreamGraphsNumber )
1199 return self.nodesTuple( nodes )
1200 def StreamMerge( self , aStreamGraph ):
1201 return self.G.StreamMerge( aStreamGraph.G )
1203 ##########################################################
1204 class StreamGraphE(StreamGraph):
1205 ##########################################################
1206 def __init__( self , aName ):
1207 graph = SuperVision.StreamGraphE( aName )
1213 ##########################################################
1215 ##########################################################
1216 def __init__( self , aValue , Verbose ):
1218 self.V.Verbose = Verbose
1219 def ToString( self ):
1220 return self.V.ToString()
1222 return self.V.ToAny()
1223 def Destroy( self ):
1226 ##########################################################
1228 ##########################################################
1229 def __init__( self , aPort , Verbose ):
1231 self.P.Verbose = Verbose
1232 def Input( self , *args ):
1233 types, realargs = getRealArgs(self.P,args)
1234 fn = bs_AddInput_valuedict[types]
1235 anInput = apply( fn, realargs)
1238 aNode = self.P.Node()
1240 if aNode.IsComputing() :
1241 myNode = CNode( aNode , self.P.Verbose )
1242 elif aNode.IsFactory() :
1243 myNode = FNode( aNode , self.P.Verbose )
1244 elif aNode.IsInLine() :
1245 myNode = INode( aNode , self.P.Verbose )
1246 elif aNode.IsGOTO() :
1247 myNode = GNode( aNode , self.P.Verbose )
1248 elif aNode.IsLoop() :
1249 myNode = LNode( aNode , self.P.Verbose )
1250 elif aNode.IsEndLoop() :
1251 myNode = ELNode( aNode , self.P.Verbose )
1252 elif aNode.IsSwitch() :
1253 myNode = SNode( aNode , self.P.Verbose )
1254 elif aNode.IsEndSwitch() :
1255 myNode = ESNode( aNode , self.P.Verbose )
1261 return self.P.Name()
1263 return self.P.Type()
1265 aLink = self.P.Link()
1267 myLink = Link( aLink , self.P.Verbose )
1269 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1274 links = self.P.Links()
1276 while i < len( links ) :
1277 links[ i ] = Link( links[i] , self.P.Verbose )
1280 def PrintLinks( self ):
1281 links = self.P.Links()
1283 while i < len( links ) :
1284 Link( links[ i ] , self.P.Verbose ).Print()
1286 def IsInput( self ):
1287 return self.P.IsInput()
1288 def IsLinked( self ):
1289 return self.P.IsLinked()
1290 def HasInput( self ):
1291 return self.P.HasInput()
1293 return self.P.Kind()
1294 def IsParam( self ):
1295 return self.P.IsParam()
1297 return self.P.IsGate()
1299 return self.P.IsLoop()
1300 def IsInLine( self ):
1301 return self.P.IsInLine()
1302 def IsSwitch( self ):
1303 return self.P.IsSwitch()
1304 def IsEndSwitch( self ):
1305 return self.P.IsEndSwitch()
1306 def IsDataStream( self ):
1307 return self.P.IsDataStream()
1308 # def IsBus( self ):
1309 # return self.P.IsBus()
1311 return self.P.Done()
1313 return self.P.State()
1314 def ToString( self ):
1315 return self.P.ToString()
1317 return self.P.ToAny()
1319 if self.P.IsInput() :
1320 if self.P.IsLinked() :
1321 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1323 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1325 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1326 def Destroy( self ):
1329 ##########################################################
1330 class StreamPort(Port):
1331 ##########################################################
1332 def __init__( self , aPort , Verbose ):
1334 self.P.Verbose = Verbose
1335 def StreamLink( self ) :
1336 return self.P.StreamLink()
1337 def Dependency( self ) :
1338 return self.P.Dependency()
1339 def SetDependency( self , aDependency ) :
1340 return self.P.SetDependency( aDependency )
1341 def Params( self ) :
1342 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
1343 return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
1344 def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
1345 return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
1346 def NumberOfValues( self ) :
1347 return self.P.NumberOfValues()
1348 def SetNumberOfValues( self , aNumberOfValues ) :
1349 return self.P.SetNumberOfValues( aNumberOfValues )
1351 ##########################################################
1353 ##########################################################
1354 def __init__( self , aLink , Verbose ):
1356 self.L.Verbose = Verbose
1357 def OutPort( self ):
1358 aPort = self.L.OutPort()
1360 myPort = Port( aPort , self.L.Verbose )
1363 print "Error while getting the Port : "
1366 aPort = self.L.InPort()
1368 myPort = Port( aPort , self.L.Verbose )
1371 print "Error while getting the Port : "
1374 anOutPort = self.L.OutPort()
1375 anOutPortName = anOutPort.Name()
1376 anOutPortKind = anOutPort.Kind()
1377 anOutPortValue = anOutPort.ToString()
1378 anOutNode = anOutPort.Node()
1379 anOutNodeName = anOutNode.Name()
1380 anInPort = self.L.InPort()
1381 anInPortName = anInPort.Name()
1382 anInPortKind = anInPort.Kind()
1383 anInNode = anInPort.Node()
1384 anInNodeName = anInNode.Name()
1385 print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
1386 def CoordsSize( self ):
1387 return self.L.CoordsSize()
1388 def AddCoord( self , index , X , Y ):
1389 return self.L.AddCoord( index , X , Y )
1390 def ChangeCoord( self , index , X , Y ):
1391 return self.L.ChangeCoord( index , X , Y )
1392 def RemoveCoord( self , index ):
1393 return self.L.RemoveCoord( index )
1394 def Coords( self , index ):
1395 return self.L.Coords( index )
1396 def destroy( self ):
1401 ##########################################################
1402 class StreamLink(Link):
1403 ##########################################################
1404 def __init__( self , aLink , Verbose ):
1406 self.L.Verbose = Verbose
1407 def OutStreamPort( self ):
1408 aPort = self.L.OutStreamPort()
1410 myPort = StreamPort( aPort , self.L.Verbose )
1413 print "Error while getting the Port : "
1415 def InStreamPort( self ):
1416 aPort = self.L.InStreamPort()
1418 myPort = StreamPort( aPort , self.L.Verbose )
1421 print "Error while getting the Port : "