From a0626f8a3aa71fee428383d0ce33630d8e148375 Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Wed, 30 Aug 2006 00:05:22 +0000 Subject: [PATCH] Pass the authdata returned by the Authenticator into the ClientResolver. This is actually kind of sketchy, because the resolver can't depend on it because there are methods to resolve a client object without having an authenticated connection. For now, I'll leave this in. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4350 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../com/threerings/presents/server/ClientManager.java | 6 +++--- .../com/threerings/presents/server/ClientResolver.java | 9 ++++++++- .../com/threerings/presents/server/PresentsClient.java | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/java/com/threerings/presents/server/ClientManager.java b/src/java/com/threerings/presents/server/ClientManager.java index d2ad75fd7..2e363c5f7 100644 --- a/src/java/com/threerings/presents/server/ClientManager.java +++ b/src/java/com/threerings/presents/server/ClientManager.java @@ -225,7 +225,7 @@ public class ClientManager */ public void applyToClient (Name username, ClientOp clop) { - resolveClientObject(username, new ClientOpResolver(clop)); + resolveClientObject(username, null, new ClientOpResolver(clop)); } /** @@ -238,7 +238,7 @@ public class ClientManager * when the caller is finished with the client object. */ public synchronized void resolveClientObject ( - Name username, final ClientResolutionListener listener) + Name username, Object authdata, final ClientResolutionListener listener) { // look to see if the client object is already resolved ClientObject clobj = _objmap.get(username); @@ -260,7 +260,7 @@ public class ClientManager // create a client resolver instance which will create our // client object, populate it and notify the listeners clr = _factory.createClientResolver(username); - clr.init(username); + clr.init(username, authdata); clr.addResolutionListener(this); clr.addResolutionListener(listener); _penders.put(username, clr); diff --git a/src/java/com/threerings/presents/server/ClientResolver.java b/src/java/com/threerings/presents/server/ClientResolver.java index d4cff4469..8c2118f1f 100644 --- a/src/java/com/threerings/presents/server/ClientResolver.java +++ b/src/java/com/threerings/presents/server/ClientResolver.java @@ -44,10 +44,13 @@ public class ClientResolver extends Invoker.Unit * Initiailizes this instance. * * @param username the username of the user to be resolved. + * @param authdata an object optionally placed into the + * AuthResponse.authdata field by the Authenticator. */ - public void init (Name username) + public void init (Name username, Object authdata) { _username = username; + _authdata = authdata; } /** @@ -181,6 +184,10 @@ public class ClientResolver extends Invoker.Unit /** The name of the user whose client object is being resolved. */ protected Name _username; + /** An object placed into AuthResponse.authdata by the Authenticator, + * or null. */ + protected Object _authdata; + /** The entities to notify of success or failure. */ protected ArrayList _listeners = new ArrayList(); diff --git a/src/java/com/threerings/presents/server/PresentsClient.java b/src/java/com/threerings/presents/server/PresentsClient.java index ab58bcd31..33d8b7eb8 100644 --- a/src/java/com/threerings/presents/server/PresentsClient.java +++ b/src/java/com/threerings/presents/server/PresentsClient.java @@ -266,7 +266,7 @@ public class PresentsClient }; // resolve the new client object - _cmgr.resolveClientObject(username, clr); + _cmgr.resolveClientObject(username, _authdata, clr); } /** @@ -312,7 +312,7 @@ public class PresentsClient assignStartingUsername(); // resolve our client object before we get fully underway - cmgr.resolveClientObject(_username, this); + cmgr.resolveClientObject(_username, authdata, this); // make a note of our session start time _sessionStamp = System.currentTimeMillis();