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 Messages( self ) :
873 return self.G.Messages()
874 def IsReadOnly( self ) :
875 return self.G.IsReadOnly()
876 def ComponentRef( self , aFactoryServer , aComponent ) :
877 return self.G.ComponentRef( aFactoryServer , aComponent )
879 return self.G.IsValid()
880 def IsExecutable( self ):
881 return self.G.IsExecutable()
882 def IsEditing( self ):
883 return self.G.IsEditing()
884 def IsExecuting( self ):
885 return self.G.IsExecuting()
886 def LevelMax( self ):
887 return self.G.LevelMax()
888 def ThreadsMax( self ):
889 return self.G.ThreadsMax()
890 def SubGraphsNumber( self ):
891 return self.G.SubGraphsNumber()
892 def LevelNodes( self , aLevel ):
893 nodes = self.G.LevelNodes( aLevel )
894 return self.nodesTuple( nodes )
895 def Run( self , *args ):
897 aService = self.Service()
901 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
902 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
906 def Start( self , *args ):
908 aService = self.Service()
912 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
913 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
916 return self.G.Start()
918 sts,aNode,anEvent,aState = self.G.Event()
920 return sts,aNode,anEvent,aState
921 def EventNoW( self ):
922 sts,aNode,anEvent,aState = self.G.EventNoW()
924 return sts,aNode,anEvent,aState
926 sts,aNode,anEvent,aState = self.G.EventW()
928 return sts,aNode,anEvent,aState
931 sts,aNode,anEvent,aState = self.G.EventW()
933 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
936 return self.G.Threads()
937 def SuspendedThreads( self ):
938 return self.G.SuspendedThreads()
939 def LastLevelDone( self ):
940 return self.G.LastLevelDone()
941 def Verbose( self , verbose ):
942 preverbose = self.G.Verbose
943 self.G.Verbose = verbose
946 nodes = self.G.Nodes()
947 return self.nodesTuple( nodes )
948 def nodesTuple( self , nodes ) :
949 n = len( nodes.CNodes )
954 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
957 n = len( nodes.FNodes )
960 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
963 n = len( nodes.INodes )
966 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
969 n = len( nodes.GNodes )
972 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
975 n = len( nodes.LNodes )
978 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
981 n = len( nodes.ELNodes )
984 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
987 n = len( nodes.SNodes )
990 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
993 n = len( nodes.ESNodes )
996 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
999 n = len( nodes.Graphs )
1002 pynodes.append( MNode( nodes.Graphs[i] , self.G.Verbose ) )
1006 def ListNodes( self , *args ):
1007 nodes = self.Nodes()
1010 listofnodes = nodes[ 0 ].Name()
1012 while i < len( nodes ) :
1013 listofnodes = listofnodes + ',' + nodes[ i ].Name()
1016 if len( args ) == 0 :
1017 aName = self.N.Name()
1020 if len( nodes ) == 1 :
1021 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
1023 listofnodes = listofnodes + " = " + aName + ".Nodes()"
1025 def PrintNodes( self ):
1026 nodes = self.Nodes()
1033 def PrintThreads( self ):
1034 nodes = self.Nodes()
1036 while i < len( nodes ) :
1037 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i]
1040 links = self.G.GLinks()
1042 linkslen = len( links )
1043 #print 'GLinks ',linkslen,'Links'
1044 while i < linkslen :
1045 links[ i ] = Link( links[i] , self.G.Verbose )
1047 def GStreamLinks( self ):
1048 streamlinks = self.G.GStreamLinks()
1050 #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
1051 while i < len( streamlinks ) :
1052 streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
1055 def GAllLinks( self ) :
1056 alllinks = self.G.GLinks()
1057 lenlinks = len( alllinks )
1059 while i < lenlinks :
1060 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
1062 links = self.G.StreamLinks()
1064 while j < len(links) :
1065 alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
1069 def ListLinks( self , *args ):
1070 links = self.GAllLinks()
1072 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
1073 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
1074 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
1075 listoflinks = listoflinks + links[ 0 ].InPort().Name()
1077 while i < len( links ) :
1078 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
1079 listoflinks = listoflinks + links[ i ].OutPort().Name()
1080 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
1081 listoflinks = listoflinks + links[ i ].InPort().Name()
1084 if len( args ) == 0 :
1085 aName = self.N.Name()
1088 if len( links ) == 1 :
1089 listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
1091 listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
1093 def PrintLinks( self ):
1094 links = self.GAllLinks()
1096 while i < len( links ) :
1099 def SubGraphsNodes( self , ):
1100 graphs = self.G.SubGraphsNodes()
1103 while i < len( graphs ) :
1104 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1105 outgraphs[ i ].Merge( graphs[i] )
1109 aCopy = self.G.Copy()
1111 myCopy = Graph( aCopy )
1113 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1117 def ToStreamGraph( self ):
1118 aGraph = self.G.ToStreamGraph()
1120 return StreamGraph( aGraph )
1122 def SubGraphsNodes( self , aSubGraphsNumber ):
1123 nodes = self.G.SubGraphsNodes( aSubGraphsNumber )
1124 return self.nodesTuple( nodes )
1125 def Merge( self , aGraph ):
1126 return self.G.Merge( aGraph.G )
1127 def Destroy( self ):
1130 ##########################################################
1131 class GraphE(Graph):
1132 ##########################################################
1133 def __init__( self , aName ):
1134 graph = SuperVision.GraphE( aName )
1139 def ToStreamGraph( self ):
1140 aGraph = self.G.ToStreamGraph()
1142 return StreamGraphE( aGraph )
1145 ##########################################################
1147 ##########################################################
1148 def __init__( self , aMNode , Verbose ):
1150 self.G.Verbose = Verbose
1152 self.N.Verbose = Verbose
1154 ##########################################################
1155 class StreamGraph(Graph):
1156 ##########################################################
1157 def __init__( self , aName ):
1159 graph = SuperVision.StreamGraph( aName )
1162 graph = aName.G.StreamCopy()
1171 print "StreamGraph creation failed"
1172 def StreamCopy( self ):
1173 aCopy = self.G.StreamCopy()
1175 myCopy = StreamGraph( aCopy )
1177 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1181 def StreamLink( self , anOutStreamPort , anInStreamPort ) :
1182 aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
1183 if aStreamLink!= None:
1184 myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
1186 ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
1190 def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
1191 return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
1192 def StreamParams( self ):
1193 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
1194 return Timeout,DataStreamTrace,DeltaTime
1195 def ToFlowGraph( self ):
1196 return self.G.ToFlowGraph()
1197 def SubStreamGraphsNumber( self ):
1198 return self.G.SubStreamGraphsNumber()
1199 def SubStreamGraphsNodes( self , aSubStreamGraphsNumber ):
1200 nodes = self.G.SubStreamGraphsNodes( aSubStreamGraphsNumber )
1201 return self.nodesTuple( nodes )
1202 def StreamMerge( self , aStreamGraph ):
1203 return self.G.StreamMerge( aStreamGraph.G )
1205 ##########################################################
1206 class StreamGraphE(StreamGraph):
1207 ##########################################################
1208 def __init__( self , aName ):
1209 graph = SuperVision.StreamGraphE( aName )
1215 ##########################################################
1217 ##########################################################
1218 def __init__( self , aValue , Verbose ):
1220 self.V.Verbose = Verbose
1221 def ToString( self ):
1222 return self.V.ToString()
1224 return self.V.ToAny()
1225 def Destroy( self ):
1228 ##########################################################
1230 ##########################################################
1231 def __init__( self , aPort , Verbose ):
1233 self.P.Verbose = Verbose
1234 def Input( self , *args ):
1235 types, realargs = getRealArgs(self.P,args)
1236 fn = bs_AddInput_valuedict[types]
1237 anInput = apply( fn, realargs)
1240 aNode = self.P.Node()
1242 if aNode.IsComputing() :
1243 myNode = CNode( aNode , self.P.Verbose )
1244 elif aNode.IsFactory() :
1245 myNode = FNode( aNode , self.P.Verbose )
1246 elif aNode.IsInLine() :
1247 myNode = INode( aNode , self.P.Verbose )
1248 elif aNode.IsGOTO() :
1249 myNode = GNode( aNode , self.P.Verbose )
1250 elif aNode.IsLoop() :
1251 myNode = LNode( aNode , self.P.Verbose )
1252 elif aNode.IsEndLoop() :
1253 myNode = ELNode( aNode , self.P.Verbose )
1254 elif aNode.IsSwitch() :
1255 myNode = SNode( aNode , self.P.Verbose )
1256 elif aNode.IsEndSwitch() :
1257 myNode = ESNode( aNode , self.P.Verbose )
1263 return self.P.Name()
1265 return self.P.Type()
1267 aLink = self.P.Link()
1269 myLink = Link( aLink , self.P.Verbose )
1271 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1276 links = self.P.Links()
1278 while i < len( links ) :
1279 links[ i ] = Link( links[i] , self.P.Verbose )
1282 def PrintLinks( self ):
1283 links = self.P.Links()
1285 while i < len( links ) :
1286 Link( links[ i ] , self.P.Verbose ).Print()
1288 def IsInput( self ):
1289 return self.P.IsInput()
1290 def IsLinked( self ):
1291 return self.P.IsLinked()
1292 def HasInput( self ):
1293 return self.P.HasInput()
1295 return self.P.Kind()
1296 def IsParam( self ):
1297 return self.P.IsParam()
1299 return self.P.IsGate()
1301 return self.P.IsLoop()
1302 def IsInLine( self ):
1303 return self.P.IsInLine()
1304 def IsSwitch( self ):
1305 return self.P.IsSwitch()
1306 def IsEndSwitch( self ):
1307 return self.P.IsEndSwitch()
1308 def IsDataStream( self ):
1309 return self.P.IsDataStream()
1310 # def IsBus( self ):
1311 # return self.P.IsBus()
1313 return self.P.Done()
1315 return self.P.State()
1316 def ToString( self ):
1317 return self.P.ToString()
1319 return self.P.ToAny()
1321 if self.P.IsInput() :
1322 if self.P.IsLinked() :
1323 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1325 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1327 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1328 def Destroy( self ):
1331 ##########################################################
1332 class StreamPort(Port):
1333 ##########################################################
1334 def __init__( self , aPort , Verbose ):
1336 self.P.Verbose = Verbose
1337 def StreamLink( self ) :
1338 return self.P.StreamLink()
1339 def Dependency( self ) :
1340 return self.P.Dependency()
1341 def SetDependency( self , aDependency ) :
1342 return self.P.SetDependency( aDependency )
1343 def Params( self ) :
1344 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
1345 return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
1346 def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
1347 return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
1348 def NumberOfValues( self ) :
1349 return self.P.NumberOfValues()
1350 def SetNumberOfValues( self , aNumberOfValues ) :
1351 return self.P.SetNumberOfValues( aNumberOfValues )
1353 ##########################################################
1355 ##########################################################
1356 def __init__( self , aLink , Verbose ):
1358 self.L.Verbose = Verbose
1359 def OutPort( self ):
1360 aPort = self.L.OutPort()
1362 myPort = Port( aPort , self.L.Verbose )
1365 print "Error while getting the Port : "
1368 aPort = self.L.InPort()
1370 myPort = Port( aPort , self.L.Verbose )
1373 print "Error while getting the Port : "
1376 anOutPort = self.L.OutPort()
1377 anOutPortName = anOutPort.Name()
1378 anOutPortKind = anOutPort.Kind()
1379 anOutPortValue = anOutPort.ToString()
1380 anOutNode = anOutPort.Node()
1381 anOutNodeName = anOutNode.Name()
1382 anInPort = self.L.InPort()
1383 anInPortName = anInPort.Name()
1384 anInPortKind = anInPort.Kind()
1385 anInNode = anInPort.Node()
1386 anInNodeName = anInNode.Name()
1387 print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
1388 def CoordsSize( self ):
1389 return self.L.CoordsSize()
1390 def AddCoord( self , index , X , Y ):
1391 return self.L.AddCoord( index , X , Y )
1392 def ChangeCoord( self , index , X , Y ):
1393 return self.L.ChangeCoord( index , X , Y )
1394 def RemoveCoord( self , index ):
1395 return self.L.RemoveCoord( index )
1396 def Coords( self , index ):
1397 return self.L.Coords( index )
1398 def destroy( self ):
1403 ##########################################################
1404 class StreamLink(Link):
1405 ##########################################################
1406 def __init__( self , aLink , Verbose ):
1408 self.L.Verbose = Verbose
1409 def OutStreamPort( self ):
1410 aPort = self.L.OutStreamPort()
1412 myPort = StreamPort( aPort , self.L.Verbose )
1415 print "Error while getting the Port : "
1417 def InStreamPort( self ):
1418 aPort = self.L.InStreamPort()
1420 myPort = StreamPort( aPort , self.L.Verbose )
1423 print "Error while getting the Port : "