Removed the need to supply a Client reference when making invocation service
calls on the Java side, to match this added convenience we introduced to the ActionScript side some time ago. Before arms are raised into the air and waved like they really do care, bear the following in mind: Nothing will change at all on your project until you take some action to do so. That action could include any of the following: 1. Continue to use narya-tools-1.2 to run genservice and you'll get the old style "pass a Client reference for every service method invocation" marshallers and you can continue to live happily in the past. 2. Leave some of your stuff un-regenerated, but generate new stuff using the new tools and use the Client-reference-free style for new services. This is likely to engender some PITA if you're trying to use both styles in the same project because genservice just wants to operate on everything, but I offer it as an option in case some other PITA motivates the tolerance of this (presumably smaller) PITA. 3. Embrace the brave new world of simplicity and wield your good friend sed for fun and profit: (make necessary build.xml updates to start using narya-tools-1.4-SNAPSHOT) % find src -name '*Service.java' | xargs sed -i 's:Client client, ::g' (this will remove the Client argument from most of your services, some manual fixes may be needed) % ant genservice % find src -name '*.java' | xargs sed -i 's:_ctx.getClient(), ::g' (this will fix most of the places that pass a client reference into an invocation service, some manual fixes will probably be needed) I did this on Vilya and it magically took care of like 95% of the places where changes were needed. The remaining half dozen changes were painless. Clearly something like Yohoho vastly dwarfs Vilya in scope, but someone looking for an hour or two of mindless typing to distract them on a lazy Sunday afternoon would likely breeze through even that vast codebase without breaking a sweat. Two more notes: 1. I'm going to switch Narya and Vilya over to the new style, and I'll be fixing all the projects that use their services. 2. I lied (a teeny bit) about nothing changing. I made the old Client-taking sendRequest methods deprecated, so projects that don't switch to the new style will be presented with a large number of deprecation warnings. If this is too terrible a burden to bear, I can remove the deprecation annotations on those methods. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6395 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -23,6 +23,7 @@ package com.threerings.presents.server.net;
|
||||
|
||||
import java.io.EOFException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.DatagramChannel;
|
||||
@@ -203,8 +204,7 @@ public class PresentsConnection extends Connection
|
||||
// we're lazy about creating our input streams because we may be inheriting them from
|
||||
// our authing connection and we don't want to unnecessarily create them in that case
|
||||
if (_fin == null) {
|
||||
_fin = new FramedInputStream();
|
||||
_oin = new ObjectInputStream(_fin);
|
||||
_oin = createObjectInputStream(_fin = new FramedInputStream());
|
||||
if (_loader != null) {
|
||||
_oin.setClassLoader(_loader);
|
||||
}
|
||||
@@ -255,6 +255,15 @@ public class PresentsConnection extends Connection
|
||||
return _oin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the object input stream used by this connection to communicate. This may be
|
||||
* overridden by subclasses to create custom streams.
|
||||
*/
|
||||
protected ObjectInputStream createObjectInputStream (InputStream src)
|
||||
{
|
||||
return new ObjectInputStream(src);
|
||||
}
|
||||
|
||||
/**
|
||||
* Instructs this connection to inherit its streams from the supplied connection object. This
|
||||
* is called by the connection manager when the time comes to pass streams from the authing
|
||||
|
||||
@@ -22,8 +22,11 @@
|
||||
package com.threerings.presents.server.net;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import com.threerings.io.ObjectInputStream;
|
||||
import com.threerings.presents.client.Client;
|
||||
import com.threerings.presents.client.ClientObjectInputStream;
|
||||
import com.threerings.presents.client.ClientObserver;
|
||||
import com.threerings.presents.client.Communicator;
|
||||
import com.threerings.presents.client.ObserverOps;
|
||||
@@ -88,6 +91,10 @@ public class ServerCommunicator extends Communicator
|
||||
super.networkFailure(ioe);
|
||||
}
|
||||
|
||||
@Override protected ObjectInputStream createObjectInputStream (InputStream src) {
|
||||
return new ClientObjectInputStream(_client, src);
|
||||
}
|
||||
|
||||
@Override protected void closeSocket () {
|
||||
super.closeSocket();
|
||||
shutdown();
|
||||
|
||||
Reference in New Issue
Block a user