diff --git a/src/java/com/threerings/presents/peer/client/PeerService.java b/src/java/com/threerings/presents/peer/client/PeerService.java index 62ef397a1..a769532df 100644 --- a/src/java/com/threerings/presents/peer/client/PeerService.java +++ b/src/java/com/threerings/presents/peer/client/PeerService.java @@ -42,7 +42,12 @@ public interface PeerService extends InvocationService void invokeAction (Client client, byte[] serializedAction); /** - * Generates a server status report for this peer and returns it to the supplied listener. + * Generates a server status report for this peer and returns it to the supplied listener. The + * result must be a string. + * + * @param type the default implementation always generates a state of the server report, but + * derived classes can request different report types from their peers to take advantage of + * this convenient mechanism for collecting per-peer data. */ - void generateReport (Client client, ResultListener listener); + void generateReport (Client client, String type, ResultListener listener); } diff --git a/src/java/com/threerings/presents/peer/data/PeerMarshaller.java b/src/java/com/threerings/presents/peer/data/PeerMarshaller.java index 28d81ab18..26400b228 100644 --- a/src/java/com/threerings/presents/peer/data/PeerMarshaller.java +++ b/src/java/com/threerings/presents/peer/data/PeerMarshaller.java @@ -40,12 +40,12 @@ public class PeerMarshaller extends InvocationMarshaller public static final int GENERATE_REPORT = 1; // from interface PeerService - public void generateReport (Client arg1, InvocationService.ResultListener arg2) + public void generateReport (Client arg1, String arg2, InvocationService.ResultListener arg3) { - InvocationMarshaller.ResultMarshaller listener2 = new InvocationMarshaller.ResultMarshaller(); - listener2.listener = arg2; + InvocationMarshaller.ResultMarshaller listener3 = new InvocationMarshaller.ResultMarshaller(); + listener3.listener = arg3; sendRequest(arg1, GENERATE_REPORT, new Object[] { - listener2 + arg2, listener3 }); } diff --git a/src/java/com/threerings/presents/peer/server/PeerDispatcher.java b/src/java/com/threerings/presents/peer/server/PeerDispatcher.java index 782bdd252..cb89ab246 100644 --- a/src/java/com/threerings/presents/peer/server/PeerDispatcher.java +++ b/src/java/com/threerings/presents/peer/server/PeerDispatcher.java @@ -56,7 +56,7 @@ public class PeerDispatcher extends InvocationDispatcher switch (methodId) { case PeerMarshaller.GENERATE_REPORT: ((PeerProvider)provider).generateReport( - source, (InvocationService.ResultListener)args[0] + source, (String)args[0], (InvocationService.ResultListener)args[1] ); return; diff --git a/src/java/com/threerings/presents/peer/server/PeerManager.java b/src/java/com/threerings/presents/peer/server/PeerManager.java index 930331ed9..82e496a9c 100644 --- a/src/java/com/threerings/presents/peer/server/PeerManager.java +++ b/src/java/com/threerings/presents/peer/server/PeerManager.java @@ -761,7 +761,8 @@ public abstract class PeerManager } // from interface PeerProvider - public void generateReport (ClientObject caller, PeerService.ResultListener listener) + public void generateReport (ClientObject caller, String type, + PeerService.ResultListener listener) throws InvocationException { listener.requestProcessed(_repmgr.generateReport()); diff --git a/src/java/com/threerings/presents/peer/server/PeerProvider.java b/src/java/com/threerings/presents/peer/server/PeerProvider.java index df4cd0035..886310bfd 100644 --- a/src/java/com/threerings/presents/peer/server/PeerProvider.java +++ b/src/java/com/threerings/presents/peer/server/PeerProvider.java @@ -36,7 +36,7 @@ public interface PeerProvider extends InvocationProvider /** * Handles a {@link PeerService#generateReport} request. */ - void generateReport (ClientObject caller, InvocationService.ResultListener arg1) + void generateReport (ClientObject caller, String arg1, InvocationService.ResultListener arg2) throws InvocationException; /**