diff --git a/build.xml b/build.xml
index 5118b5b50..1b4d7643b 100644
--- a/build.xml
+++ b/build.xml
@@ -245,6 +245,7 @@
+
@@ -255,9 +256,14 @@
+
-
+
+
+
+
+{
+ /**
+ * Creates a dispatcher that may be registered to dispatch invocation
+ * service requests for the specified provider.
+ */
+ public RegistrationDispatcher (RegistrationProvider provider)
+ {
+ this.provider = provider;
+ }
+
+ @Override
+ public RegistrationMarshaller createMarshaller ()
+ {
+ return new RegistrationMarshaller();
+ }
+
+ @Override
+ public void dispatchRequest (
+ ClientObject source, int methodId, Object[] args)
+ throws InvocationException
+ {
+ switch (methodId) {
+ case RegistrationMarshaller.REGISTER_RECEIVER:
+ ((RegistrationProvider)provider).registerReceiver(
+ source, (InvocationReceiver.Registration)args[0]
+ );
+ return;
+
+ default:
+ super.dispatchRequest(source, methodId, args);
+ return;
+ }
+ }
+}
diff --git a/src/main/java/com/threerings/presents/server/RegistrationProvider.java b/src/main/java/com/threerings/presents/server/RegistrationProvider.java
new file mode 100644
index 000000000..e81474ba2
--- /dev/null
+++ b/src/main/java/com/threerings/presents/server/RegistrationProvider.java
@@ -0,0 +1,20 @@
+package com.threerings.presents.server;
+
+import javax.annotation.Generated;
+
+import com.threerings.presents.client.InvocationReceiver;
+import com.threerings.presents.client.RegistrationService;
+import com.threerings.presents.data.ClientObject;
+
+/**
+ * Defines the server-side of the {@link RegistrationService}.
+ */
+@Generated(value={"com.threerings.presents.tools.cpp.GenCPPServiceTask"},
+ comments="Derived from RegistrationService.java.")
+public interface RegistrationProvider extends InvocationProvider
+{
+ /**
+ * Handles a {@link RegistrationService#registerReceiver} request.
+ */
+ void registerReceiver (ClientObject caller, InvocationReceiver.Registration arg1);
+}
diff --git a/src/main/java/com/threerings/presents/tools/cpp/GenCPPReceiverTask.java b/src/main/java/com/threerings/presents/tools/cpp/GenCPPReceiverTask.java
index c2b3e06f6..c2a1eefbd 100644
--- a/src/main/java/com/threerings/presents/tools/cpp/GenCPPReceiverTask.java
+++ b/src/main/java/com/threerings/presents/tools/cpp/GenCPPReceiverTask.java
@@ -76,7 +76,7 @@ public class GenCPPReceiverTask extends GenReceiverTask
protected static final String RECEIVER_HEADER_TMPL =
"com/threerings/presents/tools/cpp/receiver_h.mustache";
protected static final String DECODER_HEADER_TMPL =
- "com/threerings/corpse/tools/decoder_h.mustache";
+ "com/threerings/presents/tools/cpp/decoder_h.mustache";
protected static final String DECODER_CPP_TMPL =
"com/threerings/presents/tools/cpp/decoder_cpp.mustache";
}