Commit Graph

4552 Commits

Author SHA1 Message Date
Michael Bayne 4c2e242261 More jiggery pokery to create blank TypedArray instances of the proper type
when we encounter the pattern "new SomeClass[0]". Le whee!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4410 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 00:30:32 +00:00
Michael Bayne 19fa31cdba Don't implement subList() as in Java this is a view and we can't do that easily
in ActionScript without ubercomplexity. So we'll rewrite the code that was
using it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4409 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 00:24:20 +00:00
Michael Bayne e4438e4070 We need to notice and observe the @ActionScript(name="foo") annotations when
slurping comments from Java source files.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4408 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 00:18:06 +00:00
Michael Bayne 626b4d257f Added some methods to StreamableArrayList that behave properly (use Equalable
to determine equality instead of using reference equality).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4407 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-05 00:16:11 +00:00
Michael Bayne 27ab1efe4e We no longer pass a classpath reference to the GenActionScriptTask, it uses the
classpath provided to the <taskdef>.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4406 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 23:37:18 +00:00
Michael Bayne 4a9fde7830 Now we have a cool @ActionScript annotation that allows us to specify different
field/method names for the ActionScript version of a class (or to omit
something entirely). This removes the need for special case hackery for
toStringBuilder().

In order for annotations to work, however, we have to require that the
GenActionScriptTask be loaded from the same classloader that loads the classes
to be reflected upon. Before we only reflected on the target classes, never
instantiated them. Annotations are actually instantiated, so we have to be able
to create an instance of the ActionScript.class that is compiled into our
target classes and assign it to a reference that is compiled into
GenActionScriptTask. Beware the complexities of dealing with multiple class
loaders.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4405 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 23:35:41 +00:00
Michael Bayne ed51df0807 Add Hashable for classes that override hashCode(); strip out *Codes interfaces
because we can't do that in ActionScript; properly handle static var and
non-static const.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4404 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 21:25:16 +00:00
Michael Bayne 874d8eaa8f When generating ActionScript streamable classes, use TypedArray for fields but
Array for static constants and method arguments.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4403 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 21:08:12 +00:00
Michael Bayne f4a25e9521 Use TypedArray for array fields when converting a Streamable into ActionScript.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4402 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 21:03:05 +00:00
Michael Bayne e99ac5762d Regenerated all of the ActionScript services using the new code generation tool.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4401 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 20:41:51 +00:00
Michael Bayne ad7ac5aa3e Let's wrapp everything in parens.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4400 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 19:00:23 +00:00
Michael Bayne 9da0e7a4f3 OMG, it like handles the annoying ActionScript not-so-inner classes.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4399 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 18:53:36 +00:00
Michael Bayne 20c0f0ff3d Regenerated with updated Marshaller and Dispatcher templates.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4398 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 18:13:34 +00:00
Michael Bayne d25d5e53f1 We're getting very close to having generated ActionScript Service and Listener
interfaces, and Marshallers for same. The remaining snag has to do with the
annoyance of ActionScript not supporting inner classes, which means that
ChatService.TellListener for example has to become ChatService_TellListener.

The code for generating the Java marshaller knows to add an import for
ChatService if some random invocation service interface happens to reference
ChatService.TellListener, but now it needs to be made to know to add an import
for ChatService_TellListener in ActionScript land and it has to do it in a way
that doesn't fuck up the Java code generation. Whee!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4397 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 18:12:56 +00:00
Michael Bayne 3305c1b922 Our inherited constructor documentation didn't make much sense.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4396 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 02:17:35 +00:00
Michael Bayne 398767da5f Ran the auto-generator on all our Streamable stuff in Narya. Tidied up the
results.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4395 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 02:07:04 +00:00
Michael Bayne 8015764c61 Don't look now kids, but it's automatic generation of ActionScript code from
Java. Of course this is a very limited translation facility that is mainly
focused on auto-generating Streamable ActionScript classes from their Java
originals, and it doesn't actually convert method bodies, just field and method
declarations, initial values, and such.

Most of our Streamable classes don't have much in the way of real methods, and
the autogenerator will stick new methods in when they show up on the Java side
so at least we'll *know* that they need to be implemented. And the main thing:
readObject and writeObject are in fact implemented by the code generator so at
least we won't be plagued by annoying streaming errors when we change something
on the Java side and forget to change the ActionScript side.

Next up, auto-generating InvocationService interfaces and InvocationMarshaller
implementations in ActionScript and ActionScript versions of DObjects.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4394 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 02:05:15 +00:00
Michael Bayne d7bf98354e Match abstract classes as well.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4393 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 02:01:00 +00:00
Michael Bayne 5e55b0b343 Fixed typo.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4392 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 01:59:57 +00:00
Ray Greenwell 572d5a6555 Oop, we'll want to immediately Stringify any args passed to our constructor,
as well.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4391 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 01:20:13 +00:00
Ray Greenwell 5e769376f2 Stringify an added element at the time it is added, not at the time
that toString() is called on the buffer.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4390 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 01:15:15 +00:00
Ray Greenwell 23f6486bf7 Added clarifying comments.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4389 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-29 18:40:41 +00:00
Michael Bayne 48faea2ace All VirtualMachineErrors seem worthy of fork sticking. Also re: my previous
checkin, tihs will be a non-issue when we start devoting an entire separate JVM
to each game (which we will have to do for all games that run server code)
because then all a game can do is stick a fork in its own JVM and render itself
unplayable.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4388 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-29 00:45:58 +00:00
Michael Bayne 57edcd84b6 We have to specifically enumerate the scary errors that we'll let actually
stick a fork in the server otherwise malicious or broken code can generate an
AbstractMethodError or some other error and cause the server to decide to quit.

It may still be possible for malicious code to throw an OutOfMemory error, and
if that's the case then I don't know what we can do to both gracefully get the
fuck out of dodge when things are pear shaped and avoid the wrath of the
kiddies.

Incidentally, it was stupidity, not malice that brought this to my awareness.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4387 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-29 00:41:33 +00:00
Ray Greenwell bd8ee0fd4d Bugfix: return undefined, not null, to indicate absence in the map.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4386 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-28 19:11:17 +00:00
Ray Greenwell f544a76b62 Added the ManagerCaller that was added a while back on the Java side.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4385 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-27 23:54:40 +00:00
Ray Greenwell 0650d58006 Improved the debug-mode logging a bit.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4384 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-27 23:54:09 +00:00
Michael Bayne eda71de8d3 Added another method that's booching GG games.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4383 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-27 16:59:38 +00:00
Michael Bayne 8676bb1adc Avoid div0 in rare situation.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4382 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-27 16:54:13 +00:00
Ray Greenwell 2a71f0c9bc Added getTinyClassName().
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4381 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-27 00:31:03 +00:00
Jonathan Le Plastrier 11e08c165e I think this is better. Only define the weave taskdef in the two targets we need it. This adds some duplicate code, but we turn the onerror fail back on, so if the library is not found then ant will throw an error and exit. But it will only do this if you try to run the targets which need this taskdef.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4380 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-26 22:52:58 +00:00
Jonathan Le Plastrier cade4b6435 Narya now builds using from dist/lib. Also, the weave taskdef reports a warning if it cannot find the retroweaver jars, instead of preventing ant from running. These changes will need to happen on the other rings as well.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4379 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-26 20:23:05 +00:00
Michael Bayne 16689b51d4 We need these for binary compatibility with existing Game Gardens games. We may
need the two argument versions as well, but I'll wait and see.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4378 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-25 05:27:09 +00:00
Ray Greenwell a3213cdee2 Automatically unwrap any result object that is wrapped.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4377 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-24 23:51:33 +00:00
Ray Greenwell 0709dc9580 Two minor edits to List support.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4376 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-19 01:25:52 +00:00
Michael Bayne afad7dd444 Added support for streaming List and ArrayList natively. A List will be
unmarshalled into an ArrayList on the receiver. Along the way, I improved
support for generic types as arguments to invocation services (which required
one unfortunate "sweeping" warning suppression, but since this is in generated
code, I think we can be sure it won't be doing anything untoward).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4375 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-19 00:31:50 +00:00
Ray Greenwell 036271438a Some bits: made the actionscript Observer list cope and furthermore
keep all observers in the list if the 'apply' function you specify
returns void.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4374 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-14 01:48:09 +00:00
Michael Bayne 54d3bb6496 Missed a spot where getStreamer() was called which motivated further changing
around of the interface (I wanted to automatically call getStreamerClass() for
the caller but that turns out not to be possible when unstreaming so fuck it).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4373 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-12 01:09:01 +00:00
Michael Bayne 13bcdf769d Retidied.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4372 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-12 00:49:49 +00:00
Michael Bayne 65b14cfdb5 Was using the wrong getDeclaringClass() to get an enum's proper class. Things
are now correct, but unfortunately a little more complicated.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4371 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-12 00:47:27 +00:00
Michael Bayne eb3c6ae9cf A particular enum value may actually be a derived class of the declared enum
type, but we don't really want to pollute our class <-> id mapping with a bunch
of extra fiddly enum classes, so we stream all enums as instances of their
declared type and let Enum.valueOf() map back to the custom derived type when
it creates an instance during deserialization.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4370 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-12 00:32:06 +00:00
Michael Bayne ac5951eaa1 Finally incorporated Par's Enum streaming support, modified to use the string
value to avoid future compatibility problems if someone saves an object to a
database and then later adds a new enum anywhere but at the end of the list,
thereby changing the ordinals.

If you want maximal network efficiency, don't use enums. For most of what we'll
do with them, it doesn't merit having the future incompatibility hitch of
sending the ordinal.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4369 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-12 00:04:14 +00:00
Ray Greenwell 5a8b9e14db Lovely varargs, like MessageUtil in samskivert.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4368 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-11 22:16:01 +00:00
Ray Greenwell f4e7fd73f6 Commented out upstream methods for classes that will never use them.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4367 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-11 20:19:11 +00:00
Ray Greenwell bb40bd533a Reverted a recent change: I was shutting down when we were detached from
our parent, but we don't want to do that for most sprites which are
shutdown anyway in a more managed way, and specifically our avatar sprite
is re-used as we move from room to room.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4366 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-08 18:34:12 +00:00
Ray Greenwell b596aa724e We don't need to hash, just use an ArrayList.
ObjectInputStream works in conjunction with a ObjectOutputStream on the
other end. The ObjectOutputStream will always assign class codes starting
at 1 and increasing sequentially from there, so we can look up a class
by index rather than hashing.
Uses less memory and is faster.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4365 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-08 18:02:08 +00:00
Ray Greenwell e973c00b50 Made equals() compare arrays by value.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4364 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-08 17:42:58 +00:00
Ray Greenwell 2c84eb9251 Added hexlate() and unhexlate() to StringUtil.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4363 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-08 02:30:12 +00:00
Ray Greenwell ddd796431d Pulled mask configuration into its own method.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4362 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-07 23:23:58 +00:00
Ray Greenwell 412a2f21d2 Some bits to make this behave better.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4361 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-09-07 21:44:20 +00:00