Salome HOME
NRI : Remove OCC_LIBS.
[modules/kernel.git] / src / Container / SALOME_ComponentPy.py
1 #! /usr/bin/env python
2
3 #=============================================================================
4 # File      : SALOME_ComponentPy.py
5 # Created   : lun sep  3 17:54:13 CEST 2001
6 # Author    : Paul RASCLE, EDF
7 # Project   : SALOME
8 # Copyright : EDF 2001
9 # $Header$
10 #=============================================================================
11
12 import os
13 import sys
14 from omniORB import CORBA, PortableServer
15 import Engines, Engines__POA
16 import Registry
17 from Utils_Identity import *
18 from SALOME_NamingServicePy import *
19 from libNOTIFICATION import *
20
21 from SALOME_utilities import *
22
23 #=============================================================================
24
25 #define an implementation of the component interface
26
27 class SALOME_ComponentPy_i (Engines__POA.Component):
28     _orb = None
29     _poa = None
30     
31     #-------------------------------------------------------------------------
32
33     def __init__ (self, orb, poa, contID, containerName,
34                   instanceName, interfaceName, notif):
35         # Notif for notification services
36         # NOT YET IMPLEMENTED
37         MESSAGE(  "SALOME_ComponentPy_i::__init__" + " " + str (containerName) + " " + str(instanceName) + " " + str(interfaceName) )
38         self._orb = orb
39         self._poa = poa
40         self._instanceName = instanceName
41         self._interfaceName = interfaceName
42         self._containerName = containerName
43         self._notif = notif
44         self._myConnexionToRegistry = 0
45         self._graphName = ''
46         self._nodeName = ''
47         self._ThreadId = 0
48
49         naming_service = SALOME_NamingServicePy_i(self._orb)
50         Component_path = "/Containers/" +  os.getenv( "HOSTNAME" ) + "/" + self._containerName + "/" + self._interfaceName
51         MESSAGE(  'SALOME_ComponentPy_i Register' + str( Component_path ) )
52         naming_service.Register(self._this(), Component_path)
53
54         # Add componentinstance to registry
55         obj = naming_service.Resolve('/Registry')
56         if obj is None:
57             MESSAGE(  "Registry Reference is invalid" )
58         else:
59             regist = obj._narrow(Registry.Components)
60             if regist is None:
61                 MESSAGE(  "Registry Reference is invalid" )
62             else:
63                 ior = orb.object_to_string(contID)
64                 MESSAGE(  ior )
65
66                 lesInfos = Identity(self._instanceName)
67                 infos = Registry.Infos(lesInfos._name,
68                                        lesInfos._pid,
69                                        lesInfos._machine,
70                                        lesInfos._adip,
71                                        lesInfos._uid,
72                                        lesInfos._pwname,
73                                        int(lesInfos._tc_start),
74                                        0,0,0,
75                                        lesInfos._cdir,
76                                        -1,
77                                        ior)
78
79                 res = regist.add(infos)
80
81         self._notifSupplier = NOTIFICATION_Supplier_Swig(instanceName, notif)
82
83     #-------------------------------------------------------------------------
84
85     def _get_instanceName(self):
86         MESSAGE(  "SALOME_ComponentPy_i::_get_instanceName" )
87         return self._instanceName
88     
89     #-------------------------------------------------------------------------
90
91     def ping(self):
92         MESSAGE(  "SALOME_ComponentPy_i::ping" )
93         
94     #-------------------------------------------------------------------------
95
96     def destroy(self):
97         MESSAGE(  "SALOME_ComponentPy_i::destroy" )
98         poa.deactivate_object(self)
99         CORBA.release(_poa)
100         
101     #-------------------------------------------------------------------------
102
103     def GetContainerRef(self):
104         MESSAGE(  "SALOME_ComponentPy_i::GetContainerRef" )
105         
106     #-------------------------------------------------------------------------
107
108     def beginService(self , serviceName ):
109         MESSAGE(  "Send BeginService notification for " + str(serviceName) + "for graph/node" + str(self._graphName) + str(self._nodeName) )
110         MESSAGE(  "Component instance : " + str ( self._instanceName ) )
111
112     #-------------------------------------------------------------------------
113
114     def endService(self , serviceName ):
115         MESSAGE(  "Send EndService notification for " + str(serviceName) + "for graph/node" + str(self._graphName) + str(self._nodeName) )
116         MESSAGE(  "Component instance : " + str(self._instanceName) )
117
118     #-------------------------------------------------------------------------
119
120     def sendMessage(self , event_type , message ):
121         self._notifSupplier.Send(self.graphName(), self.nodeName(), event_type, message)
122
123     #-------------------------------------------------------------------------
124
125     def Names(self , GraphName , NodeName ):
126         MESSAGE(  "SALOME_ComponentPy_i::Names" + str(GraphName) + str(NodeName) )
127         self._graphName = GraphName
128         self._nodeName = NodeName
129         
130     #-------------------------------------------------------------------------
131
132     def graphName(self):
133         return self._graphName
134
135     #-------------------------------------------------------------------------
136
137     def nodeName(self):
138         return self._nodeName
139
140     #-------------------------------------------------------------------------
141
142     def Kill(self):
143         MESSAGE(  "SALOME_ComponentPy_i::Kill not yet implemented" )
144
145     #-------------------------------------------------------------------------
146
147     def Stop(self):
148         MESSAGE(  "SALOME_ComponentPy_i::Stop not yet implemented" )
149
150     #-------------------------------------------------------------------------
151
152     def Suspend(self):
153         MESSAGE(  "SALOME_ComponentPy_i::Suspend not yet implemented" )
154
155     #-------------------------------------------------------------------------
156
157     def Resume(self):
158         MESSAGE(  "SALOME_ComponentPy_i::Resume not yet implemented" )
159