Skip to content

Commit f51d14c

Browse files
JensPfeifleoroulet
authored andcommitted
Move user_manager from Server into InternalServer
Removes the need to patch in the Server object via the _parent attribute in InternalServer if the InternalServer is instantiated outside of Server.__init__. Before this commit, the Server object passed itself into the InternalServer constructor. If we instantiate an InternalServer (that we want to pass in) before the Server, we obviously don't have a Server instance to pass in as the parent. So we end up having to do this: >>> my_iserver = CustomInternalServer() >>> server = Server(iserver = my_iserver) >>> server.iserver._parent = server # <-- no longer necessary To preserve compatibility and keep changes to a minimum, a user_manager property and setter are added to the Server class which redirect to the user_manager attribute of the internal server.
1 parent 8ac613a commit f51d14c

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

opcua/server/internal_server.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ class SessionState(Enum):
3939

4040
class InternalServer(object):
4141

42-
def __init__(self, shelffile=None, parent=None, session_cls=None):
42+
def __init__(self, shelffile=None, user_manager=None, session_cls=None):
4343
self.logger = logging.getLogger(__name__)
4444

45-
self._parent = parent
4645
self.server_callback_dispatcher = CallbackDispatcher()
4746

4847
self.endpoints = []
@@ -63,6 +62,7 @@ def __init__(self, shelffile=None, parent=None, session_cls=None):
6362
self.subscription_service = SubscriptionService(self.aspace)
6463

6564
self.history_manager = HistoryManager(self)
65+
self.user_manager = user_manager
6666

6767
# create a session to use on server side
6868
self.session_cls = session_cls or InternalSession
@@ -73,10 +73,6 @@ def __init__(self, shelffile=None, parent=None, session_cls=None):
7373
self._address_space_fixes()
7474
self.setup_nodes()
7575

76-
@property
77-
def user_manager(self):
78-
return self._parent.user_manager
79-
8076
@property
8177
def thread_loop(self):
8278
if self.loop is None:

opcua/server/server.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def __init__(self, shelffile=None, iserver=None):
8989
if iserver is not None:
9090
self.iserver = iserver
9191
else:
92-
self.iserver = InternalServer(shelffile = shelffile, parent = self)
92+
self.iserver = InternalServer(shelffile = shelffile)
9393
self.bserver = None
9494
self._policies = []
9595
self.nodes = Shortcuts(self.iserver.isession)
@@ -119,6 +119,14 @@ def __enter__(self):
119119
def __exit__(self, exc_type, exc_value, traceback):
120120
self.stop()
121121

122+
@property
123+
def user_manager(self):
124+
return self.iserver.user_manager
125+
126+
@user_manager.setter
127+
def user_manager(self, user_manager):
128+
self.iserver.user_manager = user_manager
129+
122130
@property
123131
def local_discovery_service(self):
124132
return self.iserver.local_discovery_service

0 commit comments

Comments
 (0)