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 from salome import SALOMEDS
19 import SALOME_ModuleCatalog
24 from LifeCycleCORBA import *
25 from SALOME_NamingServicePy import *
28 import SALOME_ModuleCatalog
30 # from libSuperVision_Swig import SuperV_Swig
31 # print 'SuperV_Swig imported'
34 orb = CORBA.ORB_init([''], CORBA.ORB_ID)
35 lcc = LifeCycleCORBA(orb)
36 naming_service = SALOME_NamingServicePy_i(orb)
44 # SuperVision = SuperV_Swig( len(sys.argv) , sys.argv )
45 # SuperVision.Swig = 1
46 # print 'SuperV_Swig created'
48 # SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
49 # SuperVision.Swig = 0
50 # print 'Supervision Component loaded'
52 SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
55 modulecatalog = naming_service.Resolve("/Kernel/ModulCatalog")
58 def createDataflowStudyObject( theStudy , aDataFlow , aBuilder ) :
59 aStudyObject = theStudy.FindObjectIOR( aDataFlow.G.getIOR() )
60 if aStudyObject == None :
61 aComponent = theStudy.FindComponent( "SUPERV" )
62 if aComponent == None :
63 print "createDataflowStudyObject Component SUPERV is None"
64 aComponent = aBuilder.NewComponent( "SUPERV" )
65 anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")
66 aName = anAttr._narrow( SALOMEDS.AttributeName )
67 aName.SetValue( modulecatalog.GetComponentInfo( "SUPERV" ).username )
68 anAttr = aBuilder.FindOrCreateAttribute( aComponent , "AttributePixMap" )
69 aPixmap = anAttr._narrow( SALOMEDS.AttributePixMap )
70 aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
71 aBuilder.DefineComponentInstance( aComponent , SuperVision )
72 print "createDataflowStudyObject Component SUPERV is created"
73 aStudyObject = aBuilder.NewObject( aComponent )
74 anAttr = aBuilder.FindOrCreateAttribute( aStudyObject , "AttributeName" )
75 aName = anAttr._narrow( SALOMEDS.AttributeName )
76 aName.SetValue( aDataFlow.Name() )
77 anAttr = aBuilder.FindOrCreateAttribute( aStudyObject , "AttributeIOR" )
78 anIORAttr = anAttr._narrow( SALOMEDS.AttributeIOR )
79 anIORAttr.SetValue( aDataFlow.G.getIOR() )
82 def addDataflowToStudy( theStudy , aDataFlow ) :
83 aBuilder = theStudy.NewBuilder()
85 aStudyObject = createDataflowStudyObject( theStudy , aDataFlow , aBuilder )
86 if aStudyObject != None :
87 aBuilder.CommitCommand()
88 sg.updateObjBrowser( 1 )
89 print "addDataflowToStudy aStudyObject ",aDataFlow.Name()," added in study"
90 #theStudy.updateObjBrowser()
92 print "addDataflowToStudy ERROR aStudyObject is None"
93 aBuilder.AbortCommand()
94 return aBuilder,aStudyObject
97 def PortInputFloat(obj, x):
98 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
100 def PortInputLong(obj, x):
101 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
103 def PortInputObject(obj, x):
105 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
107 return obj.Input( SuperVision.AnyValue( x ) )
109 def PortInputString(obj, x):
110 return obj.Input( SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
112 def InputFloat(obj, nodein_port, x):
113 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_double, x)))
115 def InputLong(obj, nodein_port, x):
116 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_long, x)))
118 def InputObject(obj, nodein_port, x):
120 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_Object, x)))
122 return obj.Input(nodein_port, SuperVision.AnyValue( x ) )
124 def InputString(obj, nodein_port, x):
125 return obj.Input(nodein_port, SuperVision.AnyValue( CORBA.Any(CORBA.TC_string, x)))
129 typestring = re.compile(r"_[^_]+_([^_]+)_.*")
131 def getRealArgs(self,args):
137 types.append(typestring.match(self).group(1))
140 types.append(type(self))
141 realargs.append(self)
145 types.append(typestring.match(a).group(1))
148 types.append(type(a))
151 return tuple(types), tuple(realargs)
153 bs_AddInput_valuedict = {
154 (InstanceType, FloatType) : PortInputFloat,
155 (InstanceType, IntType) : PortInputLong,
156 (InstanceType, StringType) : PortInputString,
157 (InstanceType, InstanceType) : PortInputObject,
158 (InstanceType, StringType, FloatType) : InputFloat,
159 (InstanceType, StringType, IntType) : InputLong,
160 (InstanceType, StringType, StringType) : InputString,
161 (InstanceType, StringType, InstanceType) : InputObject,
162 (InstanceType, StringType, ListType) : InputObject,
166 def Args( aService , aNodeName , verbose ):
167 lenin = len( aService.ServiceinParameter )
168 infos = aNodeName + 'info = "'
169 infos = infos + 'NodeName : ' + aNodeName + '\\n'
170 infos = infos + 'ServiceName : ' + aService.ServiceName + '\\n'
171 infos = infos + 'PortNames : \\n'
172 defnames = aNodeName + " = " + "'" + aNodeName + "' ; "
175 argname = aNodeName + aService.ServiceinParameter[ i ].Parametername
176 valname = aNodeName + "\\\\"
177 valname = valname + aService.ServiceinParameter[ i ].Parametername
178 defnames = defnames + argname + " = " + "'" + valname + "' ; "
179 infos = infos + str(i) + '. ' + argname + ' : Input'
180 infos = infos + str(i) + ' '
181 infos = infos + aService.ServiceinParameter[ i ].Parametername + ' '
182 infos = infos + aService.ServiceinParameter[ i ].Parametertype + '\\n'
184 lenout = len( aService.ServiceoutParameter )
187 argname = aNodeName + aService.ServiceoutParameter[ i ].Parametername
188 valname = aNodeName + "\\\\"
189 valname = valname + aService.ServiceoutParameter[ i ].Parametername
190 defnames = defnames + argname + " = " + "'" + valname + "' ; "
191 infos = infos + str(lenin+i) + '. ' + argname + ' : Output'
192 infos = infos + str(i) + ' '
193 infos = infos + aService.ServiceoutParameter[ i ].Parametername + ' '
194 infos = infos + aService.ServiceoutParameter[ i ].Parametertype + '\\n'
197 defnames = defnames + infos
199 defnames = defnames + " ; print " + aNodeName + "info"
202 def Service_Swig( aCatalogService ) :
203 aService = SuperVision.Service()
204 aService.ServiceName = aCatalogService.ServiceName
206 while i < len( aCatalogService.ServiceinParameter ) :
207 p = SuperVision.ServicesParameter( aCatalogService.ServiceinParameter[i].Parametertype , aCatalogService.ServiceinParameter[i].Parametername )
208 SuperVision.AddInParameter( aService , p )
211 while i < len( aCatalogService.ServiceoutParameter ) :
212 p = SuperVision.ServicesParameter( aCatalogService.ServiceoutParameter[i].Parametertype , aCatalogService.ServiceoutParameter[i].Parametername )
213 SuperVision.AddOutParameter( aService , p )
217 ##########################################################
219 ##########################################################
220 def __init__( self , aNode , Verbose ):
222 self.N.Verbose = Verbose
226 return self.N.Service()
229 def CreationDate( self ):
230 return self.N.CreationDate()
231 def LastUpdateDate( self ):
232 return self.N.LastUpdateDate()
234 return self.N.Version()
236 return self.N.Author()
238 return self.N.Comment()
240 def SetName( self , aNewName ):
241 return self.N.SetName( aNewName )
242 def SetAuthor( self , anAuthor ):
243 return self.N.SetAuthor( anAuthor )
244 def SetComment( self , aComment ):
245 return self.N.SetComment( aComment )
248 print "Name ",self.N.Name()
249 if self.N.IsFactory() :
250 print "ComponentName ",self.N.GetComponentName()
251 print "InterfaceName ",self.N.GetInterfaceName()
252 if self.N.IsStreamGraph() :
253 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
254 print "Timeout",Timeout
255 print "DataStreamTrace",DataStreamTrace
256 print "DeltaTime",DeltaTime
257 aService = self.N.Service()
258 print "Service Name ",aService.ServiceName
259 lenin = len( aService.ServiceinParameter )
260 print " ",lenin," input argument(s) :"
263 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
265 lenout = len( aService.ServiceoutParameter )
266 print " ",lenout," output argument(s) :"
269 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
271 aKind = self.N.Kind()
272 print "KindOfNode",aKind
273 aFirstCreation = self.N.CreationDate()
274 print "Creation Date ",aFirstCreation.Day,"-",aFirstCreation.Month,"-",aFirstCreation.Year," ",aFirstCreation.Hour,":",aFirstCreation.Minute,":",aFirstCreation.Second
275 aLastModification = self.N.LastUpdateDate()
276 print "Update Date ",aLastModification.Day,"-",aLastModification.Month,"-",aLastModification.Year," ",aLastModification.Hour,":",aLastModification.Minute,":",aLastModification.Second
277 print "Version ",self.N.Version()
278 print "Author ",self.N.Author()
279 if self.N.IsFactory() :
280 print "Container ",self.N.GetContainer()
281 print "Comment ",self.N.Comment()
282 print "Coords ",self.N.X()," ",self.N.Y()
283 def Port( self , aPortName ):
284 aPort = self.N.Port( aPortName )
286 myPort = Port( aPort , self.N.Verbose )
289 print "Error while creating the Port : ",aPortName
291 def Input( self , *args ):
292 types, realargs = getRealArgs(self.N,args)
293 fn = bs_AddInput_valuedict[types]
294 anInput = apply( fn, realargs)
296 myInput = Port( anInput , self.N.Verbose )
298 ErrMsg = "Failed to create the Input"
302 def InStreamPort( self , aParameterName , aParameterType , aDependency ):
303 aPort = self.N.InStreamPort( aParameterName , aParameterType , aDependency )
305 myPort = StreamPort( aPort , self.N.Verbose )
308 print "Error while creating the Port : ",aParameterName
310 def OutStreamPort( self , aParameterName , aParameterType , aDependency ):
311 aPort = self.N.OutStreamPort( aParameterName , aParameterType , aDependency )
313 myPort = StreamPort( aPort , self.N.Verbose )
316 print "Error while creating the Port : ",aParameterName
318 def GetInPort( self , aParameterName ):
319 aPort = self.N.GetInPort( aParameterName )
321 myPort = Port( aPort , self.N.Verbose )
324 print "Error while creating the Port : ",aParameterName
326 def GetOutPort( self , aParameterName ):
327 aPort = self.N.GetOutPort( aParameterName )
329 myPort = Port( aPort , self.N.Verbose )
332 print "Error while creating the Port : ",aParameterName
334 def GetInStreamPort( self , aParameterName ):
335 aPort = self.N.GetInStreamPort( aParameterName )
337 myPort = StreamPort( aPort , self.N.Verbose )
340 print "Error while creating the Port : ",aParameterName
342 def GetOutStreamPort( self , aParameterName ):
343 aPort = self.N.GetOutStreamPort( aParameterName )
345 myPort = StreamPort( aPort , self.N.Verbose )
348 print "Error while creating the Port : ",aParameterName
351 ports = self.N.Ports()
353 while i < len( ports ) :
354 ports[ i ] = Port( ports[i] , self.N.Verbose )
357 def StreamPorts( self ):
358 ports = self.N.StreamPorts()
360 while i < len( ports ) :
361 ports[ i ] = StreamPort( ports[i] , self.N.Verbose )
364 def AllPorts( self ):
365 allports = self.N.Ports()
366 lenports = len( allports )
369 allports[ i ] = Port( allports[i] , self.N.Verbose )
371 ports = self.N.StreamPorts()
373 while i < len( ports ) :
374 allports.append( StreamPort( ports[i] , self.N.Verbose ) )
377 def ListPorts( self , *args ):
378 if len( args ) == 0 :
379 aName = self.N.Name()
382 ports = self.AllPorts()
386 portsname = ports[ 0 ].Name()
387 bs = portsname.find('\\')
389 portsname1,portsname2 = portsname.split('\\')
390 portsname = portsname1 + portsname2
391 if ports[ 0 ].IsInput():
392 listofports = 'I' + aName + portsname
394 listofports = 'O' + aName + portsname
396 while i < len( ports ) :
397 portsname = ports[ i ].Name()
398 bs = portsname.find('\\')
400 portsname1,portsname2 = portsname.split('\\')
401 portsname = portsname1 + portsname2
402 if ports[ i ].IsInput():
403 listofports = listofports + ',' + 'I' + aName + portsname
405 listofports = listofports + ',' + 'O' + aName + portsname
408 if len( ports ) == 1 :
409 listofports = "[" + listofports + "] = " + aName + ".AllPorts()"
411 listofports = listofports + " = " + aName + ".AllPorts()"
413 def PrintPorts( self ):
414 ports = self.AllPorts()
416 while i < len( ports ) :
418 if ports[ i ].IsInput() :
420 if ( ports[ i ].IsDataStream() ) & ( self.N.IsStreamGraph() == 0 ) :
421 if ports[ i ].IsInput() :
422 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = ports[ i ].Params()
423 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
425 numberofvalues = ports[ i ].NumberOfValues()
426 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString(),ports[ i ].Dependency(),'NumberOfValues',numberofvalues
428 print Direction,self.N.Name(),'(',ports[ i ].Name(),ports[ i ].Kind(),ports[ i ].Type(),') = ',ports[ i ].ToString()
431 links = self.N.Links()
433 while i < len( links ) :
434 links[ i ] = Link( links[i] , self.N.Verbose )
437 def StreamLinks( self ) :
438 links = self.N.StreamLinks()
440 while i < len( links ) :
441 links[ i ] = StreamLink( links[i] , self.N.Verbose )
444 def AllLinks( self ) :
445 alllinks = self.N.Links()
446 lenlinks = len( alllinks )
449 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
451 links = self.N.StreamLinks()
453 while i < len( links ) :
454 alllinks.append( StreamLink( links[i] , self.N.Verbose ) )
457 def ListLinks( self , *args ):
458 links = self.AllLinks()
460 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
461 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
462 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
463 listoflinks = listoflinks + links[ 0 ].InPort().Name()
465 while i < len( links ) :
466 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
467 listoflinks = listoflinks + links[ i ].OutPort().Name()
468 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
469 listoflinks = listoflinks + links[ i ].InPort().Name()
472 if len( args ) == 0 :
473 aName = self.N.Name()
476 if len( links ) == 1 :
477 listoflinks = "[" + listoflinks + "] = " + aName + ".AllLinks()"
479 listoflinks = listoflinks + " = " + aName + ".AllLinks()"
481 def PrintLinks( self ):
482 links = self.AllLinks()
484 while i < len( links ) :
487 def IsStreamGraph( self ):
488 return self.N.IsStreamGraph()
490 return self.N.IsGraph()
492 return self.N.IsMacro()
493 def IsFlowMacro( self ):
494 return self.N.IsFlowMacro()
495 def IsStreamMacro( self ):
496 return self.N.IsStreamMacro()
497 def IsComputing( self ):
498 return self.N.IsComputing()
499 def IsFactory( self ):
500 return self.N.IsFactory()
501 def IsInLine( self ):
502 return self.N.IsInLine()
504 return self.N.IsGOTO()
506 return self.N.IsLoop()
507 def IsEndLoop( self ):
508 return self.N.IsEndLoop()
509 def IsSwitch( self ):
510 return self.N.IsSwitch()
511 def IsEndSwitch( self ):
512 return self.N.IsEndSwitch()
513 def GraphLevel( self ) :
514 return self.N.GraphLevel()
515 def SubGraph( self ):
516 return self.N.SubGraph()
517 def SubStreamGraph( self ):
518 return self.N.SubStreamGraph()
520 return self.N.Thread()
521 def IsWaiting( self ):
522 return self.N.IsWaiting()
523 def IsRunning( self ):
524 return self.N.IsRunning()
526 return self.N.IsDone()
527 def IsSuspended( self ):
528 return self.N.IsSuspended()
530 return self.N.State()
532 return self.N.Control()
533 def ControlClear( self ):
534 return self.N.ControlClear()
536 return self.N.ReadyW()
537 def RunningW( self ):
538 return self.N.RunningW()
540 return self.N.DoneW()
541 def SuspendedW( self ):
542 return self.N.SuspendedW()
544 # return self.N.ReRun()
545 #def ReStart( self ):
546 # return self.N.ReStart()
547 #def ReRunAt( self , aNodeName ):
548 # return self.N.ReRunAt( aNodeName )
549 #def ReStartAt( self , aNodeName ):
550 # return self.N.ReStartAt( aNodeName )
555 def KillDone( self ):
556 return self.N.KillDone()
558 return self.N.Suspend()
559 def SuspendDone( self ):
560 return self.N.SuspendDone()
562 return self.N.Resume()
565 def Coords( self , X , Y ):
566 return self.N.Coords( X , Y )
574 return self.N.CpuUsed()
576 ##########################################################
578 ##########################################################
579 def __init__( self , aNode , Verbose ):
581 self.N.Verbose = Verbose
582 def GetComponentName( self ):
583 return self.N.GetComponentName()
584 def GetInterfaceName( self ):
585 return self.N._get_interfaceName()
586 def GetContainer( self ):
587 return self.N.GetContainer()
588 def SetComponentName( self , aComponentName ):
589 return self.N.SetComponentName( aComponentName )
590 def SetInterfaceName( self , anInterfaceName ):
591 return self.N.SetInterfaceName( anInterfaceName )
592 def SetContainer( self , aComputer ):
593 return self.N.SetContainer( aComputer )
595 ##########################################################
597 ##########################################################
598 def __init__( self , aNode , Verbose ):
600 self.N.Verbose = Verbose
601 def Edit( self , FuncName , PyFunc ) :
604 suf = str(random.randrange(1,10000))
605 file = '/tmp/' + FuncName + '_' + suf + '.py'
609 fd = os.open( file , os.O_CREAT | os.O_WRONLY | os.O_TRUNC )
613 while ( i < len( PyFunc ) ) :
614 print i,'/',len( PyFunc ),PyFunc[ i ]
615 os.write( fd , PyFunc[ i ] + '\n' )
618 edit = '${EDITOR} ' + file
620 fd = os.open( file , os.O_RDONLY )
621 line = os.read( fd , 132 )
625 line = os.read( fd , 132 )
627 PyFunc = res.splitlines()
629 while i < len( PyFunc ) :
633 print "Open of",file,"failed."
635 def SetPyFunction( self , FuncName , aPyFunction ):
636 return self.N.SetPyFunction( FuncName , aPyFunction )
637 def PyFunction( self ):
638 return self.N.PyFunction()
639 def PyFuncName( self ):
640 return self.N.PyFuncName()
641 def InPort( self , aParameterName , aParameterType ):
642 aPort = self.N.InPort( aParameterName ,
645 myPort = Port( aPort , self.N.Verbose )
648 print "Error while creating the Port : ",aParameterName
650 def OutPort( self , aParameterName , aParameterType ):
651 aPort = self.N.OutPort( aParameterName ,
654 myPort = Port( aPort , self.N.Verbose )
657 print "Error while creating the Port : ",aParameterName
660 PyFunc = self.N.PyFunction()
661 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
662 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
664 ##########################################################
666 ##########################################################
667 def __init__( self , aNode , Verbose ):
669 self.N.Verbose = Verbose
670 def SetCoupled( self , anInLineNode ):
672 node = self.N.SetCoupled( anInLineNode )
677 node = self.N.Coupled()
680 node = INode( node , self.N.Verbose )
682 node = LNode( node , self.N.Verbose )
683 elif node.IsEndLoop() :
684 node = ELNode( node , self.N.Verbose )
685 elif node.IsSwitch() :
686 node = SNode( node , self.N.Verbose )
687 elif node.IsEndSwitch() :
688 node = ESNode( node , self.N.Verbose )
691 ##########################################################
693 ##########################################################
694 def __init__( self , aNode , Verbose ):
696 self.N.Verbose = Verbose
697 def SetPyInit( self , InitName , aPyFunction ):
698 return self.N.SetPyInit( InitName , aPyFunction )
700 return self.N.PyInit()
701 def PyInitName( self ) :
702 return self.N.PyInitName()
704 PyFunc = self.N.PyFunction()
705 PyFunc = self.Edit( self.N.PyFuncName() , PyFunc )
706 self.N.SetPyFunction( self.N.PyFuncName() , PyFunc )
707 def SetPyMore( self , MoreName , aPyFunction ):
708 return self.N.SetPyMore( MoreName , aPyFunction )
710 return self.N.PyMore()
711 def PyMoreName( self ) :
712 return self.N.PyMoreName()
714 PyMore = self.N.PyMore()
715 PyMore = self.Edit( self.N.PyMoreName() , PyMore )
716 self.N.SetPyMore( self.N.PyMoreName() , PyMore )
717 def SetPyNext( self , NextName , aPyFunction ):
718 return self.N.SetPyNext( NextName , aPyFunction )
720 return self.N.PyNext()
721 def PyNextName( self ) :
722 return self.N.PyNextName()
724 PyNext = self.N.PyNext()
725 PyNext = self.Edit( self.N.PyNextName() , PyNext )
726 self.N.SetPyNext( self.N.PyNextName() , PyNext )
728 ##########################################################
730 ##########################################################
731 def __init__( self , aNode , Verbose ):
733 self.N.Verbose = Verbose
735 ##########################################################
737 ##########################################################
738 def __init__( self , aNode , Verbose ):
740 self.N.Verbose = Verbose
742 ##########################################################
744 ##########################################################
745 def __init__( self , aNode , Verbose ):
747 self.N.Verbose = Verbose
749 ##########################################################
750 #class ServicesParameter_Swig :
751 ##########################################################
752 # def __init__( self , aServicesParameter ):
753 # self.Parametertype = aServicesParameter.Parametertype
754 # self.Parametername = aServicesParameter.Parametername
756 ##########################################################
758 ##########################################################
759 def __init__( self , aName ):
761 graph = SuperVision.Graph( aName )
764 graph = aName.G.Copy()
768 if graph.IsStreamGraph() :
769 aGraph = graph.ToStreamGraph()
771 graph = StreamGraph( aGraph )
773 print "Graph creation failed"
779 print "Graph creation failed"
780 def CNode( self , *args ):
781 if len( args ) == 1 :
784 aComponent = args[ 0 ]
785 anInterface = args[ 1 ]
787 NodeComponent = modulecatalog.GetComponent( aComponent )
788 aService = NodeComponent.GetService( anInterface , aService )
789 aNode = self.G.CNode( aService )
791 myNode = CNode( aNode , self.G.Verbose )
793 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
797 def Node( self , aComponent , anInterface , aService ):
798 #if SuperVision.Swig :
799 #aService = Service_Swig( aService )
800 return self.FNode( aComponent , anInterface , aService )
801 def FNode( self , aComponent , anInterface , aService ):
802 NodeComponent = modulecatalog.GetComponent( aComponent )
803 aService = NodeComponent.GetService( anInterface , aService )
804 #if SuperVision.Swig :
805 #aService = Service_Swig( aService )
806 aNode = self.G.FNode( aComponent , anInterface , aService )
808 myNode = FNode( aNode , self.G.Verbose )
810 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
814 def INode( self , FuncName , aPythonFunction ):
815 aNode = self.G.INode( FuncName , aPythonFunction )
817 myNode = INode( aNode , self.G.Verbose )
819 ErrMsg = "Failed to create a Node"
823 def GNode( self , FuncName , aPythonFunction , anINode ):
824 aNode = self.G.GNode( FuncName , aPythonFunction , anINode )
826 myNode = GNode( aNode , self.G.Verbose )
828 ErrMsg = "Failed to create a Node"
832 def LNode( self , InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction ):
833 aNode,anEndOfLoop = self.G.LNode( InitName , InitFunction , MoreName , MoreFunction , NextName , NextFunction )
835 myNode = LNode( aNode , self.G.Verbose )
836 myEndOfLoop = INode( anEndOfLoop , self.G.Verbose )
837 return myNode,myEndOfLoop
838 ErrMsg = "Failed to create a Node with Service " + aService.ServiceName
842 def SNode( self , FuncName , aPythonFunction ):
843 aNode,anEndOfSwitch = self.G.SNode( FuncName , aPythonFunction )
845 myNode = SNode( aNode , self.G.Verbose )
846 myEndOfSwitch = INode( anEndOfSwitch , self.G.Verbose )
847 return myNode,myEndOfSwitch
848 ErrMsg = "Failed to create a Node"
852 def MNode( self , aGraphXml ):
853 aMNode = self.G.MNode( aGraphXml )
855 myMNode = MNode( aMNode , self.G.Verbose )
857 ErrMsg = "Failed to create a MNode"
861 def GraphMNode( self , aGraph ):
862 aGraphMNode = self.G.GraphMNode( aGraph.G )
863 if aGraphMNode != None :
864 myMNode = MNode( aGraphMNode , self.G.Verbose )
866 ErrMsg = "Failed to create a MNode"
870 def FlowObjRef( self ) :
871 aGraph = self.G.FlowObjRef()
873 myGraph = Graph( aGraph )
876 def StreamObjRef( self ) :
877 aGraph = self.G.StreamObjRef()
879 myGraph = StreamGraph( aGraph )
882 def PrintService( self , aComponent , anInterface , aService ):
883 NodeComponent = modulecatalog.GetComponent( aComponent )
884 aService = NodeComponent.GetService( anInterface , aService )
885 print "ServiceName ",aService.ServiceName," :"
886 lenin = len( aService.ServiceinParameter )
887 print " ",lenin," input argument(s) :"
890 print " ",i,". ",aService.ServiceinParameter[ i ].Parametername," ",aService.ServiceinParameter[ i ].Parametertype
892 lenout = len( aService.ServiceoutParameter )
893 print " ",lenout," output argument(s) :"
896 print " ",i,". ",aService.ServiceoutParameter[ i ].Parametername," ",aService.ServiceoutParameter[ i ].Parametertype
898 def Link( self , aFromNodePort , aToNodePort ):
899 aLink = self.G.Link( aFromNodePort.P , aToNodePort.P )
901 myLink = Link( aLink , self.G.Verbose )
903 ErrMsg = "Failed to create a Link from " + aFromNodePort.Node().Name() + "(" + aFromNodePort.Name() + ") to " + aToNodePort.Node().Name() + "(" + aToNodePort.Name() + ")"
907 def Import( self , anXmlFileName ):
908 return self.G.Import( anXmlFileName )
909 def Export( self , anXmlFileName ):
910 return self.G.Export( anXmlFileName )
911 def IsReadOnly( self ) :
912 return self.G.IsReadOnly()
913 def ComponentRef( self , aFactoryServer , aComponent ) :
914 return self.G.ComponentRef( aFactoryServer , aComponent )
916 return self.G.IsValid()
917 def IsExecutable( self ):
918 return self.G.IsExecutable()
919 def IsEditing( self ):
920 return self.G.IsEditing()
921 def IsExecuting( self ):
922 return self.G.IsExecuting()
923 def LevelMax( self ):
924 return self.G.LevelMax()
925 def ThreadsMax( self ):
926 return self.G.ThreadsMax()
927 def SubGraphsNumber( self ):
928 return self.G.SubGraphsNumber()
929 def LevelNodes( self , aLevel ):
930 nodes = self.G.LevelNodes( aLevel )
931 return self.nodesTuple( nodes )
932 def Run( self , *args ):
934 aService = self.Service()
938 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
939 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
943 def Start( self , *args ):
945 aService = self.Service()
949 print aService.ServiceinParameter[ i ].Parametername," = ",args[i]
950 self.Input( aService.ServiceinParameter[ i ].Parametername , args[i] )
953 return self.G.Start()
955 sts,aNode,anEvent,aState = self.G.Event()
957 return sts,aNode,anEvent,aState
958 def EventNoW( self ):
959 sts,aNode,anEvent,aState = self.G.EventNoW()
961 return sts,aNode,anEvent,aState
963 sts,aNode,anEvent,aState = self.G.EventW()
965 return sts,aNode,anEvent,aState
968 sts,aNode,anEvent,aState = self.G.EventW()
970 print sts,aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
973 return self.G.Threads()
974 def SuspendedThreads( self ):
975 return self.G.SuspendedThreads()
976 def LastLevelDone( self ):
977 return self.G.LastLevelDone()
978 def Verbose( self , verbose ):
979 preverbose = self.G.Verbose
980 self.G.Verbose = verbose
983 nodes = self.G.Nodes()
984 return self.nodesTuple( nodes )
985 def nodesTuple( self , nodes ) :
986 n = len( nodes.CNodes )
991 pynodes.append( CNode( nodes.CNodes[i] , self.G.Verbose ) )
994 n = len( nodes.FNodes )
997 pynodes.append( FNode( nodes.FNodes[i] , self.G.Verbose ) )
1000 n = len( nodes.INodes )
1003 pynodes.append( INode( nodes.INodes[i] , self.G.Verbose ) )
1006 n = len( nodes.GNodes )
1009 pynodes.append( GNode( nodes.GNodes[i] , self.G.Verbose ) )
1012 n = len( nodes.LNodes )
1015 pynodes.append( LNode( nodes.LNodes[i] , self.G.Verbose ) )
1018 n = len( nodes.ELNodes )
1021 pynodes.append( GNode( nodes.ELNodes[i] , self.G.Verbose ) )
1024 n = len( nodes.SNodes )
1027 pynodes.append( SNode( nodes.SNodes[i] , self.G.Verbose ) )
1030 n = len( nodes.ESNodes )
1033 pynodes.append( GNode( nodes.ESNodes[i] , self.G.Verbose ) )
1036 n = len( nodes.Graphs )
1039 pynodes.append( MNode( nodes.Graphs[i] , self.G.Verbose ) )
1043 def ListNodes( self , *args ):
1044 nodes = self.Nodes()
1047 listofnodes = nodes[ 0 ].Name()
1049 while i < len( nodes ) :
1050 listofnodes = listofnodes + ',' + nodes[ i ].Name()
1053 if len( args ) == 0 :
1054 aName = self.N.Name()
1057 if len( nodes ) == 1 :
1058 listofnodes = "[" + listofnodes + "] = " + aName + ".Nodes()"
1060 listofnodes = listofnodes + " = " + aName + ".Nodes()"
1062 def PrintNodes( self ):
1063 nodes = self.Nodes()
1070 def PrintThreads( self ):
1071 nodes = self.Nodes()
1073 while i < len( nodes ) :
1074 print nodes[i].Name(),nodes[i].Thread(),nodes[i].State(),nodes[i].Control(),nodes[i]
1077 links = self.G.GLinks()
1079 linkslen = len( links )
1080 #print 'GLinks ',linkslen,'Links'
1081 while i < linkslen :
1082 links[ i ] = Link( links[i] , self.G.Verbose )
1084 def GStreamLinks( self ):
1085 streamlinks = self.G.GStreamLinks()
1087 #print 'GStreamLinks ',len( streamlinks ),'StreamLinks'
1088 while i < len( streamlinks ) :
1089 streamlinks[ i ] = StreamLink( streamlinks[i] , self.G.Verbose )
1092 def GAllLinks( self ) :
1093 alllinks = self.G.GLinks()
1094 lenlinks = len( alllinks )
1096 while i < lenlinks :
1097 alllinks[ i ] = Link( alllinks[i] , self.N.Verbose )
1099 links = self.G.StreamLinks()
1101 while j < len(links) :
1102 alllinks.append( StreamLink( links[j] , self.N.Verbose ) )
1106 def ListLinks( self , *args ):
1107 links = self.GAllLinks()
1109 listoflinks = 'L' + links[ 0 ].OutPort().Node().Name()
1110 listoflinks = listoflinks + links[ 0 ].OutPort().Name()
1111 listoflinks = listoflinks + links[ 0 ].InPort().Node().Name()
1112 listoflinks = listoflinks + links[ 0 ].InPort().Name()
1114 while i < len( links ) :
1115 listoflinks = listoflinks + ',' + 'L' + links[ i ].OutPort().Node().Name()
1116 listoflinks = listoflinks + links[ i ].OutPort().Name()
1117 listoflinks = listoflinks + links[ i ].InPort().Node().Name()
1118 listoflinks = listoflinks + links[ i ].InPort().Name()
1121 if len( args ) == 0 :
1122 aName = self.N.Name()
1125 if len( links ) == 1 :
1126 listoflinks = "[" + listoflinks + "] = " + aName + ".GAllLinks()"
1128 listoflinks = listoflinks + " = " + aName + ".GAllLinks()"
1130 def PrintLinks( self ):
1131 links = self.GAllLinks()
1133 while i < len( links ) :
1136 def SubGraphsNodes( self , ):
1137 graphs = self.G.SubGraphsNodes()
1140 while i < len( graphs ) :
1141 outgraphs[ i ] = Graph( graphs[i].Name() , self.G.Verbose )
1142 outgraphs[ i ].Merge( graphs[i] )
1146 aCopy = self.G.Copy()
1148 myCopy = Graph( aCopy )
1150 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1154 def ToStreamGraph( self ):
1155 aGraph = self.G.ToStreamGraph()
1157 return StreamGraph( aGraph )
1159 def SubGraphsNodes( self , aSubGraphsNumber ):
1160 nodes = self.G.SubGraphsNodes( aSubGraphsNumber )
1161 return self.nodesTuple( nodes )
1162 def Merge( self , aGraph ):
1163 return self.G.Merge( aGraph.G )
1164 def Destroy( self ):
1167 ##########################################################
1168 class GraphE(Graph):
1169 ##########################################################
1170 def __init__( self , aName ):
1171 graph = SuperVision.GraphE( aName )
1176 def ToStreamGraph( self ):
1177 aGraph = self.G.ToStreamGraph()
1179 return StreamGraphE( aGraph )
1182 ##########################################################
1184 ##########################################################
1185 def __init__( self , aMNode , Verbose ):
1187 self.G.Verbose = Verbose
1189 self.N.Verbose = Verbose
1191 ##########################################################
1192 class StreamGraph(Graph):
1193 ##########################################################
1194 def __init__( self , aName ):
1196 graph = SuperVision.StreamGraph( aName )
1199 graph = aName.G.StreamCopy()
1208 print "StreamGraph creation failed"
1209 def StreamCopy( self ):
1210 aCopy = self.G.StreamCopy()
1212 myCopy = StreamGraph( aCopy )
1214 ErrMsg = "Failed to get a Copy of " + self.G.Name()
1218 def StreamLink( self , anOutStreamPort , anInStreamPort ) :
1219 aStreamLink = self.G.StreamLink( anOutStreamPort.P , anInStreamPort.P )
1220 if aStreamLink!= None:
1221 myStreamLink = StreamLink( aStreamLink , self.G.Verbose )
1223 ErrMsg = "Failed to make a StreamLink in " + self.G.Name()
1227 def SetStreamParams( self , Timeout , DataStreamTrace , DeltaTime ):
1228 return self.G.SetStreamParams( Timeout , DataStreamTrace , DeltaTime )
1229 def StreamParams( self ):
1230 Timeout,DataStreamTrace,DeltaTime = self.G.StreamParams()
1231 return Timeout,DataStreamTrace,DeltaTime
1232 def ToFlowGraph( self ):
1233 return self.G.ToFlowGraph()
1234 def SubStreamGraphsNumber( self ):
1235 return self.G.SubStreamGraphsNumber()
1236 def SubStreamGraphsNodes( self , aSubStreamGraphsNumber ):
1237 nodes = self.G.SubStreamGraphsNodes( aSubStreamGraphsNumber )
1238 return self.nodesTuple( nodes )
1239 def StreamMerge( self , aStreamGraph ):
1240 return self.G.StreamMerge( aStreamGraph.G )
1242 ##########################################################
1243 class StreamGraphE(StreamGraph):
1244 ##########################################################
1245 def __init__( self , aName ):
1246 graph = SuperVision.StreamGraphE( aName )
1252 ##########################################################
1254 ##########################################################
1255 def __init__( self , aValue , Verbose ):
1257 self.V.Verbose = Verbose
1258 def ToString( self ):
1259 return self.V.ToString()
1261 return self.V.ToAny()
1262 def Destroy( self ):
1265 ##########################################################
1267 ##########################################################
1268 def __init__( self , aPort , Verbose ):
1270 self.P.Verbose = Verbose
1271 def Input( self , *args ):
1272 types, realargs = getRealArgs(self.P,args)
1273 fn = bs_AddInput_valuedict[types]
1274 anInput = apply( fn, realargs)
1277 aNode = self.P.Node()
1279 if aNode.IsComputing() :
1280 myNode = CNode( aNode , self.P.Verbose )
1281 elif aNode.IsFactory() :
1282 myNode = FNode( aNode , self.P.Verbose )
1283 elif aNode.IsInLine() :
1284 myNode = INode( aNode , self.P.Verbose )
1285 elif aNode.IsGOTO() :
1286 myNode = GNode( aNode , self.P.Verbose )
1287 elif aNode.IsLoop() :
1288 myNode = LNode( aNode , self.P.Verbose )
1289 elif aNode.IsEndLoop() :
1290 myNode = ELNode( aNode , self.P.Verbose )
1291 elif aNode.IsSwitch() :
1292 myNode = SNode( aNode , self.P.Verbose )
1293 elif aNode.IsEndSwitch() :
1294 myNode = ESNode( aNode , self.P.Verbose )
1300 return self.P.Name()
1302 return self.P.Type()
1304 aLink = self.P.Link()
1306 myLink = Link( aLink , self.P.Verbose )
1308 ErrMsg = "Failed to get a Link to " + self.P.Node().Name() + "(" + self.P.Name() + ")"
1313 links = self.P.Links()
1315 while i < len( links ) :
1316 links[ i ] = Link( links[i] , self.P.Verbose )
1319 def PrintLinks( self ):
1320 links = self.P.Links()
1322 while i < len( links ) :
1323 Link( links[ i ] , self.P.Verbose ).Print()
1325 def IsInput( self ):
1326 return self.P.IsInput()
1327 def IsLinked( self ):
1328 return self.P.IsLinked()
1329 def HasInput( self ):
1330 return self.P.HasInput()
1332 return self.P.Kind()
1333 def IsParam( self ):
1334 return self.P.IsParam()
1336 return self.P.IsGate()
1338 return self.P.IsLoop()
1339 def IsInLine( self ):
1340 return self.P.IsInLine()
1341 def IsSwitch( self ):
1342 return self.P.IsSwitch()
1343 def IsEndSwitch( self ):
1344 return self.P.IsEndSwitch()
1345 def IsDataStream( self ):
1346 return self.P.IsDataStream()
1347 # def IsBus( self ):
1348 # return self.P.IsBus()
1350 return self.P.Done()
1352 return self.P.State()
1353 def ToString( self ):
1354 return self.P.ToString()
1356 return self.P.ToAny()
1358 if self.P.IsInput() :
1359 if self.P.IsLinked() :
1360 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString(),' from ',self.Link().OutPort().Print()
1362 print "In",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1364 print "Out",self.P.Node().Name(),'(',self.P.Name(),self.P.Kind(),self.P.Type(),') = ',self.P.ToString()
1365 def Destroy( self ):
1368 ##########################################################
1369 class StreamPort(Port):
1370 ##########################################################
1371 def __init__( self , aPort , Verbose ):
1373 self.P.Verbose = Verbose
1374 def StreamLink( self ) :
1375 return self.P.StreamLink()
1376 def Dependency( self ) :
1377 return self.P.Dependency()
1378 def SetDependency( self , aDependency ) :
1379 return self.P.SetDependency( aDependency )
1380 def Params( self ) :
1381 sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation = self.P.Params()
1382 return sts,aKindOfSchema,aKindOfInterpolation,aKindOfExtrapolation
1383 def SetParams( self , aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation ) :
1384 return self.P.SetParams( aKindOfSchema , aKindOfInterpolation , aKindOfExtrapolation )
1385 def NumberOfValues( self ) :
1386 return self.P.NumberOfValues()
1387 def SetNumberOfValues( self , aNumberOfValues ) :
1388 return self.P.SetNumberOfValues( aNumberOfValues )
1390 ##########################################################
1392 ##########################################################
1393 def __init__( self , aLink , Verbose ):
1395 self.L.Verbose = Verbose
1396 def OutPort( self ):
1397 aPort = self.L.OutPort()
1399 myPort = Port( aPort , self.L.Verbose )
1402 print "Error while getting the Port : "
1405 aPort = self.L.InPort()
1407 myPort = Port( aPort , self.L.Verbose )
1410 print "Error while getting the Port : "
1413 anOutPort = self.L.OutPort()
1414 anOutPortName = anOutPort.Name()
1415 anOutPortKind = anOutPort.Kind()
1416 anOutPortValue = anOutPort.ToString()
1417 anOutNode = anOutPort.Node()
1418 anOutNodeName = anOutNode.Name()
1419 anInPort = self.L.InPort()
1420 anInPortName = anInPort.Name()
1421 anInPortKind = anInPort.Kind()
1422 anInNode = anInPort.Node()
1423 anInNodeName = anInNode.Name()
1424 print anOutNodeName,'(',anOutPortName,' ',anOutPortKind,') =',anOutPortValue,' --> ',anInNodeName,'(',anInPortName,')',' ',anInPortKind
1425 def CoordsSize( self ):
1426 return self.L.CoordsSize()
1427 def AddCoord( self , index , X , Y ):
1428 return self.L.AddCoord( index , X , Y )
1429 def ChangeCoord( self , index , X , Y ):
1430 return self.L.ChangeCoord( index , X , Y )
1431 def RemoveCoord( self , index ):
1432 return self.L.RemoveCoord( index )
1433 def Coords( self , index ):
1434 return self.L.Coords( index )
1435 def destroy( self ):
1440 ##########################################################
1441 class StreamLink(Link):
1442 ##########################################################
1443 def __init__( self , aLink , Verbose ):
1445 self.L.Verbose = Verbose
1446 def OutStreamPort( self ):
1447 aPort = self.L.OutStreamPort()
1449 myPort = StreamPort( aPort , self.L.Verbose )
1452 print "Error while getting the Port : "
1454 def InStreamPort( self ):
1455 aPort = self.L.InStreamPort()
1457 myPort = StreamPort( aPort , self.L.Verbose )
1460 print "Error while getting the Port : "