Files
narya/lib/marshaller.tmpl
T
Michael Bayne e54a4d41f4 The great invocation services rethink of 2002! Rearchitected the remote
method invocation services and converted everything to the new style.
Could this be my biggest checkin ever?


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1642 542714f4-19e9-0310-aa3c-eee0fc999fb1
2002-08-14 19:08:01 +00:00

76 lines
2.3 KiB
Cheetah

//
// $Id: marshaller.tmpl,v 1.2 2002/08/14 19:07:48 mdb Exp $
package [% package %];
[% FOREACH import = imports -%]
import [% import %];
[% END -%]
/**
* Provides the implementation of the {@link [% name %]Service} interface
* that marshalls the arguments and delivers the request to the provider
* on the server. Also provides an implementation of the response listener
* interfaces that marshall the response arguments and deliver them back
* to the requesting client.
*/
public class [% name %]Marshaller extends InvocationMarshaller
implements [% name %]Service
{
[% FOREACH l = listeners -%]
// documentation inherited
public static class [% l.name %]Marshaller extends ListenerMarshaller
implements [% l.name %]Listener
{
[% FOREACH lm = l.methods -%]
/** The method id used to dispatch {@link #[% lm.mname %]}
* responses. */
public static final int [% lm.mcode %] = [% lm.mcodeval %];
// documentation inherited from interface
public void [% lm.mname %] ([% lm.arglist %])
{
omgr.postEvent(new InvocationResponseEvent(
callerOid, requestId, [% lm.mcode %],
new Object[] { [% lm.wrapped_args %] }));
}
[% END -%]
// documentation inherited
public void dispatchResponse (int methodId, Object[] args)
{
switch (methodId) {
[% FOREACH lm = l.methods -%]
case [% lm.mcode %]:
(([% l.name %]Listener)listener).[% lm.mname %](
[% lm.unwrapped_args %]);
return;
[% END -%]
default:
super.dispatchResponse(methodId, args);
}
}
}
[% END -%]
[% FOREACH m = methods -%]
/** The method id used to dispatch {@link #[% m.mname %]} requests. */
public static final int [% m.mcode %] = [% m.mcodeval %];
// documentation inherited from interface
public void [% m.mname %] ([% m.arglist %])
{
[% FOREACH la = m.listener_args -%]
[% la.mtype %] [% la.aname %] = new [% la.mtype %]();
[% la.aname %].listener = [% la.oaname %];
[% END -%]
sendRequest(arg1, [% m.mcode %], new Object[] {
[% m.wrapped_args %]
});
}
[% END -%]
// Class file generated on [% genstamp %].
}