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)
42 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
43 # SuperVision.Swig = 1
44 # print 'SuperV_Swig created'
46 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
47 # SuperVision.Swig = 0
48 # print 'Supervision Component loaded'
50 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
53 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
57 def PortInputFloat(obj, x):
58 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
60 def PortInputLong(obj, x):
61 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
63 def PortInputObject(obj, x):
65 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
67 return obj.Input( SuperVision.AnyValue( x ) )
69 def PortInputString(obj, x):
70 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
72 def InputFloat(obj, nodein_port, x):
73 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
75 def InputLong(obj, nodein_port, x):
76 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
78 def InputObject(obj, nodein_port, x):
80 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
82 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
84 def InputString(obj, nodein_port, x):
85 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
89 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
91 def getRealArgs(self,args):
97 types.append(typestring.match(self).group(1))
100 types.append(type(self))
101 realargs.append(self)
105 types.append(typestring.match(a).group(1))
108 types.append(type(a))
111 return tuple(types), tuple(realargs)
113 bs_AddInput_valuedict = {
114 (InstanceType, FloatType) : PortInputFloat,
115 (InstanceType, IntType) : PortInputLong,
116 (InstanceType, StringType) : PortInputString,
117 (InstanceType, InstanceType) : PortInputObject,
118 (InstanceType, StringType, FloatType) : InputFloat,
119 (InstanceType, StringType, IntType) : InputLong,
120 (InstanceType, StringType, StringType) : InputString,
121 (InstanceType, StringType, InstanceType) : InputObject,
122 (InstanceType, StringType, ListType) : InputObject,
126 def Args( aService , aNodeName , verbose ):
127 lenin = len( aService.ServiceinParameter )
128 infos = aNodeName + 'info = "'
129 infos = infos + 'NodeName : ' + aNodeName + '\\n'
130 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
131 infos = infos + 'PortNames : \\n'
132 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
135 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
136 valname = aNodeName + "\\\\"
137 valname = valname + aService.ServiceinParameter[ i ].Parametername
138 defnames = defnames + argname + " = " + "'" + valname + "' ; "
139 infos = infos + str(i) + '. ' + argname + ' : Input'
140 infos = infos + str(i) + ' '
141 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
142 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
144 lenout = len( aService.ServiceoutParameter )
147 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
148 valname = aNodeName + "\\\\"
149 valname = valname + aService.ServiceoutParameter[ i ].Parametername
150 defnames = defnames + argname + " = " + "'" + valname + "' ; "
151 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
152 infos = infos + str(i) + ' '
153 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
154 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
157 defnames = defnames + infos
159 defnames = defnames + " ; print " + aNodeName + "info"
162 def Service_Swig( aCatalogService ) :
163 aService = SuperVision.Service()
164 aService.ServiceName = aCatalogService.ServiceName
166 while i < len( aCatalogService.ServiceinParameter ) :
167 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
168 SuperVision.AddInParameter( aService , p )
171 while i < len( aCatalogService.ServiceoutParameter ) :
172 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
173 SuperVision.AddOutParameter( aService , p )
177 ##########################################################
179 ##########################################################
180 def __init__( self , aNode , Verbose ):
182 self.N.Verbose = Verbose
186 return self.N.Service()
189 def CreationDate( self ):
190 return self.N.CreationDate()
191 def LastUpdateDate( self ):
192 return self.N.LastUpdateDate()
194 return self.N.Version()
196 return self.N.Author()
198 return self.N.Comment()
200 def SetName( self , aNewName ):
201 return self.N.SetName( aNewName )
202 def SetAuthor( self , anAuthor ):
203 return self.N.SetAuthor( anAuthor )
204 def SetComment( self , aComment ):
205 return self.N.SetComment( aComment )
208 print "Name ",self.N.Name()
209 if self.N.IsFactory() :
210 print "ComponentName ",self.N.GetComponentName()
211 print "InterfaceName ",self.N.GetInterfaceName()
212 if self.N.IsStreamGraph() :
213 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
214 print "Timeout",Timeout
215 print "DataStreamTrace",DataStreamTrace
216 print "DeltaTime",DeltaTime
217 aService = self.N.Service()
218 print "Service Name ",aService.ServiceName
219 lenin = len( aService.ServiceinParameter )
220 print " ",lenin," input argument(s) :"
223 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
225 lenout = len( aService.ServiceoutParameter )
226 print " ",lenout," output argument(s) :"
229 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
231 aKind = self.N.Kind()
232 print "KindOfNode",aKind
233 aFirstCreation = self.N.CreationDate()
234 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
235 aLastModification = self.N.LastUpdateDate()
236 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
237 print "Version ",self.N.Version()
238 print "Author ",self.N.Author()
239 if self.N.IsFactory() :
240 print "Container ",self.N.GetContainer()
241 print "Comment ",self.N.Comment()
242 print "Coords ",self.N.X()," ",self.N.Y()
243 def Port( self , aPortName ):
244 aPort = self.N.Port( aPortName )
246 myPort = Port( aPort , self.N.Verbose )
249 print "Error while creating the Port : ",aPortName
251 def Input( self , *args ):
252 types, realargs = getRealArgs(self.N,args)
253 fn = bs_AddInput_valuedict[types]
254 anInput = apply( fn, realargs)
256 myInput = Port( anInput , self.N.Verbose )
258 ErrMsg = "Failed to create the Input"
262 def InStreamPort( self , aParameterName , aParameterType , aDependency ):
263 aPort = self.N.InStreamPort( aParameterName , aParameterType , aDependency )
265 myPort = StreamPort( aPort , self.N.Verbose )
268 print "Error while creating the Port : ",aParameterName
270 def OutStreamPort( self , aParameterName , aParameterType , aDependency ):
271 aPort = self.N.OutStreamPort( aParameterName , aParameterType , aDependency )
273 myPort = StreamPort( aPort , self.N.Verbose )
276 print "Error while creating the Port : ",aParameterName
278 def GetInPort( self , aParameterName ):
279 aPort = self.N.GetInPort( aParameterName )
281 myPort = Port( aPort , self.N.Verbose )
284 print "Error while creating the Port : ",aParameterName
286 def GetOutPort( self , aParameterName ):
287 aPort = self.N.GetOutPort( aParameterName )
289 myPort = Port( aPort , self.N.Verbose )
292 print "Error while creating the Port : ",aParameterName
294 def GetInStreamPort( self , aParameterName ):
295 aPort = self.N.GetInStreamPort( aParameterName )
297 myPort = StreamPort( aPort , self.N.Verbose )
300 print "Error while creating the Port : ",aParameterName
302 def GetOutStreamPort( self , aParameterName ):
303 aPort = self.N.GetOutStreamPort( aParameterName )
305 myPort = StreamPort( aPort , self.N.Verbose )
308 print "Error while creating the Port : ",aParameterName
311 ports = self.N.Ports()
313 while i < len( ports ) :
314 ports[ i ] = Port( ports[i] , self.N.Verbose )
317 def StreamPorts( self ):
318 ports = self.N.StreamPorts()
320 while i < len( ports ) :
321 ports[ i ] = StreamPort( ports[i] , self.N.Verbose )
324 def AllPorts( self ):
325 allports = self.N.Ports()
326 lenports = len( allports )
329 allports[ i ] = Port( allports[i] , self.N.Verbose )
331 ports = self.N.StreamPorts()
333 while i < len( ports ) :
334 allports.append( StreamPort( ports[i] , self.N.Verbose ) )
337 def ListPorts( self , *args ):
338 if len( args ) == 0 :
339 aName = self.N.Name()
342 ports = self.AllPorts()
346 portsname = ports[ 0 ].Name()
347 bs = portsname.find('\\')
349 portsname1,portsname2 = portsname.split('\\')
350 portsname = portsname1 + portsname2
351 if ports[ 0 ].IsInput():
352 listofports = 'I' + aName + portsname
354 listofports = 'O' + aName + portsname
356 while i < len( ports ) :
357 portsname = ports[ i ].Name()
358 bs = portsname.find('\\')
360 portsname1,portsname2 = portsname.split('\\')
361 portsname = portsname1 + portsname2
362 if ports[ i ].IsInput():
363 listofports = listofports + ',' + 'I' + aName + portsname
365 listofports = listofports + ',' + 'O' + aName + portsname
368 if len( ports ) == 1 :
369 listofports = "[" + listofports + "] = " + aName + ".AllPorts()"
371 listofports = listofports + " = " + aName + ".AllPorts()"
373 def PrintPorts( self ):
374 ports = self.AllPorts()
376 while i < len( ports ) :
378 if ports[ i ].IsInput() :
380 if ( ports[ i ].IsDataStream() ) & ( self.N.IsStreamGraph() == 0 ) :
381 if ports[ i ].IsInput() :
382 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = ports[ i ].Params()
383 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
385 numberofvalues = ports[ i ].NumberOfValues()
386 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),'NumberOfValues',numberofvalues
388 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
391 links = self.N.Links()
393 while i < len( links ) :
394 links[ i ] = Link( links[i] , self.N.Verbose )
397 def StreamLinks( self ) :
398 links = self.N.StreamLinks()
400 while i < len( links ) :
401 links[ i ] = StreamLink( links[i] , self.N.Verbose )
404 def AllLinks( self ) :
405 alllinks = self.N.Links()
406 lenlinks = len( alllinks )
409 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
411 links = self.N.StreamLinks()
413 while i < len( links ) :
414 alllinks.append( StreamLink( links[i] , self.N.Verbose ) )
417 def ListLinks( self , *args ):
418 links = self.AllLinks()
420 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
421 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
422 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
423 listoflinks = listoflinks + links[ 0 ].InPort().Name()
425 while i < len( links ) :
426 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
427 listoflinks = listoflinks + links[ i ].OutPort().Name()
428 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
429 listoflinks = listoflinks + links[ i ].InPort().Name()
432 if len( args ) == 0 :
433 aName = self.N.Name()
436 if len( links ) == 1 :
437 listoflinks = "[" + listoflinks + "] = " + aName + ".AllLinks()"
439 listoflinks = listoflinks + " = " + aName + ".AllLinks()"
441 def PrintLinks( self ):
442 links = self.AllLinks()
444 while i < len( links ) :
447 def IsStreamGraph( self ):
448 return self.N.IsStreamGraph()
450 return self.N.IsGraph()
451 def IsComputing( self ):
452 return self.N.IsComputing()
453 def IsFactory( self ):
454 return self.N.IsFactory()
455 def IsInLine( self ):
456 return self.N.IsInLine()
458 return self.N.IsGOTO()
460 return self.N.IsLoop()
461 def IsEndLoop( self ):
462 return self.N.IsEndLoop()
463 def IsSwitch( self ):
464 return self.N.IsSwitch()
465 def IsEndSwitch( self ):
466 return self.N.IsEndSwitch()
467 def SubGraph( self ):
468 return self.N.SubGraph()
469 def SubStreamGraph( self ):
470 return self.N.SubStreamGraph()
472 return self.N.Thread()
473 def IsWaiting( self ):
474 return self.N.IsWaiting()
475 def IsRunning( self ):
476 return self.N.IsRunning()
478 return self.N.IsDone()
479 def IsSuspended( self ):
480 return self.N.IsSuspended()
482 return self.N.State()
484 return self.N.Control()
485 def ControlClear( self ):
486 return self.N.ControlClear()
487 def AutoState( self ):
488 return self.N.AutoState()
490 return self.N.ReadyW()
491 def RunningW( self ):
492 return self.N.RunningW()
494 return self.N.DoneW()
495 def SuspendedW( self ):
496 return self.N.SuspendedW()
498 return self.N.ReRun()
500 return self.N.ReStart()
501 def ReRunAt( self , aNodeName ):
502 return self.N.ReRunAt( aNodeName )
503 def ReStartAt( self , aNodeName ):
504 return self.N.ReStartAt( aNodeName )
509 def KillDone( self ):
510 return self.N.KillDone()
512 return self.N.Suspend()
513 def SuspendDone( self ):
514 return self.N.SuspendDone()
516 return self.N.Resume()
519 def Coords( self , X , Y ):
520 return self.N.Coords( X , Y )
528 return self.N.CpuUsed()
530 ##########################################################
532 ##########################################################
533 def __init__( self , aNode , Verbose ):
535 self.N.Verbose = Verbose
536 def GetComponentName( self ):
537 return self.N.GetComponentName()
538 def GetInterfaceName( self ):
539 return self.N._get_interfaceName()
540 def GetContainer( self ):
541 return self.N.GetContainer()
542 def SetComponentName( self , aComponentName ):
543 return self.N.SetComponentName( aComponentName )
544 def SetInterfaceName( self , anInterfaceName ):
545 return self.N.SetInterfaceName( anInterfaceName )
546 def SetContainer( self , aComputer ):
547 return self.N.SetContainer( aComputer )
549 ##########################################################
551 ##########################################################
552 def __init__( self , aNode , Verbose ):
554 self.N.Verbose = Verbose
555 def Edit( self , FuncName , PyFunc ) :
558 suf = str(random.randrange(1,10000))
559 file = '/tmp/' + FuncName + '_' + suf + '.py'
563 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
567 while ( i < len( PyFunc ) ) :
568 print i,'/',len( PyFunc ),PyFunc[ i ]
569 os.write( fd , PyFunc[ i ] + '\n' )
572 edit = '${EDITOR} ' + file
574 fd = os.open( file , os.O_RDONLY )
575 line = os.read( fd , 132 )
579 line = os.read( fd , 132 )
581 PyFunc = res.splitlines()
583 while i < len( PyFunc ) :
587 print "Open of",file,"failed."
589 def SetPyFunction( self , FuncName , aPyFunction ):
590 return self.N.SetPyFunction( FuncName , aPyFunction )
591 def PyFunction( self ):
592 return self.N.PyFunction()
593 def PyFuncName( self ):
594 return self.N.PyFuncName()
595 def InPort( self , aParameterName , aParameterType ):
596 aPort = self.N.InPort( aParameterName ,
599 myPort = Port( aPort , self.N.Verbose )
602 print "Error while creating the Port : ",aParameterName
604 def OutPort( self , aParameterName , aParameterType ):
605 aPort = self.N.OutPort( aParameterName ,
608 myPort = Port( aPort , self.N.Verbose )
611 print "Error while creating the Port : ",aParameterName
614 PyFunc = self.N.PyFunction()
615 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
616 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
618 ##########################################################
620 ##########################################################
621 def __init__( self , aNode , Verbose ):
623 self.N.Verbose = Verbose
624 def SetCoupled( self , anInLineNode ):
626 node = self.N.SetCoupled( anInLineNode )
631 node = self.N.Coupled()
634 node = INode( node , self.N.Verbose )
636 node = LNode( node , self.N.Verbose )
637 elif node.IsEndLoop() :
638 node = ELNode( node , self.N.Verbose )
639 elif node.IsSwitch() :
640 node = SNode( node , self.N.Verbose )
641 elif node.IsEndSwitch() :
642 node = ESNode( node , self.N.Verbose )
645 ##########################################################
647 ##########################################################
648 def __init__( self , aNode , Verbose ):
650 self.N.Verbose = Verbose
651 def SetPyInit( self , InitName , aPyFunction ):
652 return self.N.SetPyInit( InitName , aPyFunction )
654 return self.N.PyInit()
655 def PyInitName( self ) :
656 return self.N.PyInitName()
658 PyFunc = self.N.PyFunction()
659 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
660 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
661 def SetPyMore( self , MoreName , aPyFunction ):
662 return self.N.SetPyMore( MoreName , aPyFunction )
664 return self.N.PyMore()
665 def PyMoreName( self ) :
666 return self.N.PyMoreName()
668 PyMore = self.N.PyMore()
669 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
670 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
671 def SetPyNext( self , NextName , aPyFunction ):
672 return self.N.SetPyNext( NextName , aPyFunction )
674 return self.N.PyNext()
675 def PyNextName( self ) :
676 return self.N.PyNextName()
678 PyNext = self.N.PyNext()
679 PyNext = self.Edit( self.N.PyNextName() , PyNext )
680 self.N.SetPyNext( self.N.PyNextName() , PyNext )
682 ##########################################################
684 ##########################################################
685 def __init__( self , aNode , Verbose ):
687 self.N.Verbose = Verbose
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 ##########################################################
704 #class ServicesParameter_Swig :
705 ##########################################################
706 # def __init__( self , aServicesParameter ):
707 # self.Parametertype = aServicesParameter.Parametertype
708 # self.Parametername = aServicesParameter.Parametername
710 ##########################################################
712 ##########################################################
713 def __init__( self , aName ):
715 graph = SuperVision.Graph( aName )
718 graph = aName.G.Copy()
722 if graph.IsStreamGraph() :
723 aGraph = graph.ToStreamGraph()
725 graph = StreamGraph( aGraph )
727 print "Graph creation failed"
733 print "Graph creation failed"
734 def CNode( self , *args ):
735 if len( args ) == 1 :
738 aComponent = args[ 0 ]
739 anInterface = args[ 1 ]
741 NodeComponent = modulecatalog.GetComponent( aComponent )
742 aService = NodeComponent.GetService( anInterface , aService )
743 aNode = self.G.CNode( aService )
745 myNode = CNode( aNode , self.G.Verbose )
747 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
751 def Node( self , aComponent , anInterface , aService ):
752 #if SuperVision.Swig :
753 #aService = Service_Swig( aService )
754 return self.FNode( aComponent , anInterface , aService )
755 def FNode( self , aComponent , anInterface , aService ):
756 NodeComponent = modulecatalog.GetComponent( aComponent )
757 aService = NodeComponent.GetService( anInterface , aService )
758 #if SuperVision.Swig :
759 #aService = Service_Swig( aService )
760 aNode = self.G.FNode( aComponent , anInterface , aService )
762 myNode = FNode( aNode , self.G.Verbose )
764 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
768 def INode( self , FuncName , aPythonFunction ):
769 aNode = self.G.INode( FuncName , aPythonFunction )
771 myNode = INode( aNode , self.G.Verbose )
773 ErrMsg = "Failed to create a Node"
777 def GNode( self , FuncName , aPythonFunction , anINode ):
778 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
780 myNode = GNode( aNode , self.G.Verbose )
782 ErrMsg = "Failed to create a Node"
786 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
787 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
789 myNode = LNode( aNode , self.G.Verbose )
790 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
791 return myNode,myEndOfLoop
792 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
796 def SNode( self , FuncName , aPythonFunction ):
797 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
799 myNode = SNode( aNode , self.G.Verbose )
800 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
801 return myNode,myEndOfSwitch
802 ErrMsg = "Failed to create a Node"
806 def PrintService( self , aComponent , anInterface , aService ):
807 NodeComponent = modulecatalog.GetComponent( aComponent )
808 aService = NodeComponent.GetService( anInterface , aService )
809 print "ServiceName ",aService.ServiceName," :"
810 lenin = len( aService.ServiceinParameter )
811 print " ",lenin," input argument(s) :"
814 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
816 lenout = len( aService.ServiceoutParameter )
817 print " ",lenout," output argument(s) :"
820 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
822 def Link( self , aFromNodePort , aToNodePort ):
823 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
825 myLink = Link( aLink , self.G.Verbose )
827 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
831 def Import( self , anXmlFileName ):
832 return self.G.Import( anXmlFileName )
833 def Export( self , anXmlFileName ):
834 return self.G.Export( anXmlFileName )
835 def IsReadOnly( self ) :
836 return self.G.IsReadOnly()
837 def ComponentRef( self , aFactoryServer , aComponent ) :
838 return self.G.ComponentRef( aFactoryServer , aComponent )
840 return self.G.IsValid()
841 def IsExecutable( self ):
842 return self.G.IsExecutable()
843 def IsEditing( self ):
844 return self.G.IsEditing()
845 def IsExecuting( self ):
846 return self.G.IsExecuting()
847 def LevelMax( self ):
848 return self.G.LevelMax()
849 def ThreadsMax( self ):
850 return self.G.ThreadsMax()
851 def SubGraphsNumber( self ):
852 return self.G.SubGraphsNumber()
853 def LevelNodes( self , aLevel ):
854 nodes = self.G.LevelNodes( aLevel )
855 return self.nodesTuple( nodes )
856 def Run( self , *args ):
858 aService = self.Service()
862 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
863 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
867 def Start( self , *args ):
869 aService = self.Service()
873 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
874 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
877 return self.G.Start()
879 sts,aNode,anEvent,aState = self.G.Event()
881 return sts,aNode,anEvent,aState
882 def EventNoW( self ):
883 sts,aNode,anEvent,aState = self.G.EventNoW()
885 return sts,aNode,anEvent,aState
887 sts,aNode,anEvent,aState = self.G.EventW()
889 return sts,aNode,anEvent,aState
892 sts,aNode,anEvent,aState = self.G.EventW()
894 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
897 return self.G.Threads()
898 def SuspendedThreads( self ):
899 return self.G.SuspendedThreads()
900 def LastLevelDone( self ):
901 return self.G.LastLevelDone()
902 def Verbose( self , verbose ):
903 preverbose = self.G.Verbose
904 self.G.Verbose = verbose
907 nodes = self.G.Nodes()
908 return self.nodesTuple( nodes )
909 def nodesTuple( self , nodes ) :
910 n = len( nodes.CNodes )
915 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
918 n = len( nodes.FNodes )
921 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
924 n = len( nodes.INodes )
927 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
930 n = len( nodes.GNodes )
933 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
936 n = len( nodes.LNodes )
939 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
942 n = len( nodes.ELNodes )
945 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
948 n = len( nodes.SNodes )
951 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
954 n = len( nodes.ESNodes )
957 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
961 def ListNodes( self , *args ):
965 listofnodes = nodes[ 0 ].Name()
967 while i < len( nodes ) :
968 listofnodes = listofnodes + ',' + nodes[ i ].Name()
971 if len( args ) == 0 :
972 aName = self.N.Name()
975 if len( nodes ) == 1 :
976 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
978 listofnodes = listofnodes + " = " + aName + ".Nodes()"
980 def PrintNodes( self ):
988 def PrintThreads( self ):
991 while i < len( nodes ) :
992 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i].AutoState()
995 links = self.G.GLinks()
997 linkslen = len( links )
998 #print 'GLinks ',linkslen,'Links'
1000 links[ i ] = Link( links[i] , self.G.Verbose )
1002 def GStreamLinks( self ):
1003 streamlinks = self.G.GStreamLinks()
1005 #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
1006 while i < len( streamlinks ) :
1007 streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
1010 def GAllLinks( self ) :
1011 alllinks = self.G.GLinks()
1012 lenlinks = len( alllinks )
1014 while i < lenlinks :
1015 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
1017 links = self.G.StreamLinks()
1019 while j < len(links) :
1020 alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
1024 def ListLinks( self , *args ):
1025 links = self.GAllLinks()
1027 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
1028 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
1029 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
1030 listoflinks = listoflinks + links[ 0 ].InPort().Name()
1032 while i < len( links ) :
1033 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
1034 listoflinks = listoflinks + links[ i ].OutPort().Name()
1035 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
1036 listoflinks = listoflinks + links[ i ].InPort().Name()
1039 if len( args ) == 0 :
1040 aName = self.N.Name()
1043 if len( links ) == 1 :
1044 listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
1046 listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
1048 def PrintLinks( self ):
1049 links = self.GAllLinks()
1051 while i < len( links ) :
1055 graphs = self.G.Graphs()
1058 while i < len( graphs ) :
1059 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1060 outgraphs[ i ].Merge( graphs[i] )
1064 aCopy = self.G.Copy()
1066 myCopy = Graph( aCopy )
1068 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1072 def ToStreamGraph( self ):
1073 aGraph = self.G.ToStreamGraph()
1075 return StreamGraph( aGraph )
1077 def SubGraphsNodes( self , aSubGraphsNumber ):
1078 nodes = self.G.SubGraphsNodes( aSubGraphsNumber )
1079 return self.nodesTuple( nodes )
1080 def Merge( self , aGraph ):
1081 return self.G.Merge( aGraph.G )
1082 def Destroy( self ):
1085 ##########################################################
1086 class GraphE(Graph):
1087 ##########################################################
1088 def __init__( self , aName ):
1089 graph = SuperVision.GraphE( aName )
1094 def ToStreamGraph( self ):
1095 aGraph = self.G.ToStreamGraph()
1097 return StreamGraphE( aGraph )
1100 ##########################################################
1101 class StreamGraph(Graph):
1102 ##########################################################
1103 def __init__( self , aName ):
1105 graph = SuperVision.StreamGraph( aName )
1108 graph = aName.G.StreamCopy()
1117 print "StreamGraph creation failed"
1118 def StreamCopy( self ):
1119 aCopy = self.G.StreamCopy()
1121 myCopy = StreamGraph( aCopy )
1123 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1127 def StreamLink( self , anOutStreamPort , anInStreamPort ) :
1128 aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
1129 if aStreamLink!= None:
1130 myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
1132 ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
1136 def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
1137 return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
1138 def StreamParams( self ):
1139 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
1140 return Timeout,DataStreamTrace,DeltaTime
1141 def ToFlowGraph( self ):
1142 return self.G.ToFlowGraph()
1143 def SubStreamGraphsNumber( self ):
1144 return self.G.SubStreamGraphsNumber()
1145 def SubStreamGraphsNodes( self , aSubStreamGraphsNumber ):
1146 nodes = self.G.SubStreamGraphsNodes( aSubStreamGraphsNumber )
1147 return self.nodesTuple( nodes )
1148 def StreamMerge( self , aStreamGraph ):
1149 return self.G.StreamMerge( aStreamGraph.G )
1151 ##########################################################
1152 class StreamGraphE(StreamGraph):
1153 ##########################################################
1154 def __init__( self , aName ):
1155 graph = SuperVision.StreamGraphE( aName )
1161 ##########################################################
1163 ##########################################################
1164 def __init__( self , aValue , Verbose ):
1166 self.V.Verbose = Verbose
1167 def ToString( self ):
1168 return self.V.ToString()
1170 return self.V.ToAny()
1171 def Destroy( self ):
1174 ##########################################################
1176 ##########################################################
1177 def __init__( self , aPort , Verbose ):
1179 self.P.Verbose = Verbose
1180 def Input( self , *args ):
1181 types, realargs = getRealArgs(self.P,args)
1182 fn = bs_AddInput_valuedict[types]
1183 anInput = apply( fn, realargs)
1186 aNode = self.P.Node()
1188 if aNode.IsComputing() :
1189 myNode = CNode( aNode , self.P.Verbose )
1190 elif aNode.IsFactory() :
1191 myNode = FNode( aNode , self.P.Verbose )
1192 elif aNode.IsInLine() :
1193 myNode = INode( aNode , self.P.Verbose )
1194 elif aNode.IsGOTO() :
1195 myNode = GNode( aNode , self.P.Verbose )
1196 elif aNode.IsLoop() :
1197 myNode = LNode( aNode , self.P.Verbose )
1198 elif aNode.IsEndLoop() :
1199 myNode = ELNode( aNode , self.P.Verbose )
1200 elif aNode.IsSwitch() :
1201 myNode = SNode( aNode , self.P.Verbose )
1202 elif aNode.IsEndSwitch() :
1203 myNode = ESNode( aNode , self.P.Verbose )
1209 return self.P.Name()
1211 return self.P.Type()
1213 aLink = self.P.Link()
1215 myLink = Link( aLink , self.P.Verbose )
1217 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1222 links = self.P.Links()
1224 while i < len( links ) :
1225 links[ i ] = Link( links[i] , self.P.Verbose )
1228 def PrintLinks( self ):
1229 links = self.P.Links()
1231 while i < len( links ) :
1232 Link( links[ i ] , self.P.Verbose ).Print()
1234 def IsInput( self ):
1235 return self.P.IsInput()
1236 def IsLinked( self ):
1237 return self.P.IsLinked()
1238 def HasInput( self ):
1239 return self.P.HasInput()
1241 return self.P.Kind()
1242 def IsParam( self ):
1243 return self.P.IsParam()
1245 return self.P.IsGate()
1247 return self.P.IsLoop()
1248 def IsInLine( self ):
1249 return self.P.IsInLine()
1250 def IsSwitch( self ):
1251 return self.P.IsSwitch()
1252 def IsEndSwitch( self ):
1253 return self.P.IsEndSwitch()
1254 def IsDataStream( self ):
1255 return self.P.IsDataStream()
1256 # def IsBus( self ):
1257 # return self.P.IsBus()
1259 return self.P.Done()
1261 return self.P.State()
1262 def ToString( self ):
1263 return self.P.ToString()
1265 return self.P.ToAny()
1267 if self.P.IsInput() :
1268 if self.P.IsLinked() :
1269 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1271 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1273 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1274 def Destroy( self ):
1277 ##########################################################
1278 class StreamPort(Port):
1279 ##########################################################
1280 def __init__( self , aPort , Verbose ):
1282 self.P.Verbose = Verbose
1283 def StreamLink( self ) :
1284 return self.P.StreamLink()
1285 def Dependency( self ) :
1286 return self.P.Dependency()
1287 def SetDependency( self , aDependency ) :
1288 return self.P.SetDependency( aDependency )
1289 def Params( self ) :
1290 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
1291 return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
1292 def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
1293 return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
1294 def NumberOfValues( self ) :
1295 return self.P.NumberOfValues()
1296 def SetNumberOfValues( self , aNumberOfValues ) :
1297 return self.P.SetNumberOfValues( aNumberOfValues )
1299 ##########################################################
1301 ##########################################################
1302 def __init__( self , aLink , Verbose ):
1304 self.L.Verbose = Verbose
1305 def OutPort( self ):
1306 aPort = self.L.OutPort()
1308 myPort = Port( aPort , self.L.Verbose )
1311 print "Error while getting the Port : "
1314 aPort = self.L.InPort()
1316 myPort = Port( aPort , self.L.Verbose )
1319 print "Error while getting the Port : "
1322 anOutPort = self.L.OutPort()
1323 anOutPortName = anOutPort.Name()
1324 anOutPortKind = anOutPort.Kind()
1325 anOutPortValue = anOutPort.ToString()
1326 anOutNode = anOutPort.Node()
1327 anOutNodeName = anOutNode.Name()
1328 anInPort = self.L.InPort()
1329 anInPortName = anInPort.Name()
1330 anInPortKind = anInPort.Kind()
1331 anInNode = anInPort.Node()
1332 anInNodeName = anInNode.Name()
1333 print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
1334 def CoordsSize( self ):
1335 return self.L.CoordsSize()
1336 def AddCoord( self , index , X , Y ):
1337 return self.L.AddCoord( index , X , Y )
1338 def ChangeCoord( self , index , X , Y ):
1339 return self.L.ChangeCoord( index , X , Y )
1340 def RemoveCoord( self , index ):
1341 return self.L.RemoveCoord( index )
1342 def Coords( self , index ):
1343 return self.L.Coords( index )
1344 def destroy( self ):
1349 ##########################################################
1350 class StreamLink(Link):
1351 ##########################################################
1352 def __init__( self , aLink , Verbose ):
1354 self.L.Verbose = Verbose
1355 def OutStreamPort( self ):
1356 aPort = self.L.OutStreamPort()
1358 myPort = StreamPort( aPort , self.L.Verbose )
1361 print "Error while getting the Port : "
1363 def InStreamPort( self ):
1364 aPort = self.L.InStreamPort()
1366 myPort = StreamPort( aPort , self.L.Verbose )
1369 print "Error while getting the Port : "