From e88ffcce662759d7d3dce9a1383256a72e1909e7 Mon Sep 17 00:00:00 2001 From: Mark Johnson Date: Tue, 5 Feb 2013 15:47:29 -0800 Subject: [PATCH] Have PresentsServer pass itself to PresentsInvoker when starting the thread instead of being injected directly into the invoker to prevent potential circular dependency issues. --- .../presents/server/PresentsInvoker.java | 26 +++++++++++++++++-- .../presents/server/PresentsServer.java | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/threerings/presents/server/PresentsInvoker.java b/core/src/main/java/com/threerings/presents/server/PresentsInvoker.java index dd65e7daa..50fb0e396 100644 --- a/core/src/main/java/com/threerings/presents/server/PresentsInvoker.java +++ b/core/src/main/java/com/threerings/presents/server/PresentsInvoker.java @@ -68,6 +68,24 @@ public class PresentsInvoker extends ReportingInvoker postUnit(new EmptyingUnit(onEmpty)); } + @Override // from Thread + public void start () + { + log.warning( + "PresentsInvoker should be started with a call to start(PresentsServer server)."); + super.start(); + } + + /** + * Causes the invoker to begin execution for the PresentsServer. We pass in the server instead + * of injecting to prevent potential circular dependency issues. + */ + public void start (PresentsServer server) + { + _server = server; + super.start(); + } + @Override // from Invoker, Lifecycle.ShutdownComponent public void shutdown () { @@ -87,7 +105,11 @@ public class PresentsInvoker extends ReportingInvoker @Override // from Invoker protected void didShutdown () { - _server.invokerDidShutdown(); + if (_server == null) { + log.warning("Shutdown without assigned server"); + } else { + _server.invokerDidShutdown(); + } } /** @@ -317,5 +339,5 @@ public class PresentsInvoker extends ReportingInvoker protected PresentsDObjectMgr _omgr; /** The server we're working for. */ - @Inject protected PresentsServer _server; + protected PresentsServer _server; } diff --git a/core/src/main/java/com/threerings/presents/server/PresentsServer.java b/core/src/main/java/com/threerings/presents/server/PresentsServer.java index 41466df77..1cd54f69b 100644 --- a/core/src/main/java/com/threerings/presents/server/PresentsServer.java +++ b/core/src/main/java/com/threerings/presents/server/PresentsServer.java @@ -183,7 +183,7 @@ public class PresentsServer _omgr.setDefaultAccessController(createDefaultObjectAccessController()); // start the main and auth invoker threads - _invoker.start(); + ((PresentsInvoker)_invoker).start(this); _authInvoker.start(); ((PresentsInvoker)_invoker).addInterdependentInvoker(_authInvoker);