Commit Graph

23 Commits

Author SHA1 Message Date
Dave Hoover 657aafaedb And of course, if I were thinking this morning, I would've rerun the organize imports
thing before committing instead of just going "oh yeah, I've been having this stuff
sitting around uncommitted for a while waiting on it to be blessed" and missing
out on things that'd changed in the meantime.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5400 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-26 17:35:29 +00:00
Dave Hoover 8856120403 Import cleanups
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5399 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-26 17:29:59 +00:00
Michael Bayne 725f656197 Fixed a bunch of type safety bits pointed out by the latest version of Eclipse.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5274 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-30 12:58:51 +00:00
Michael Bayne e1ca08dde8 Simplified (and improved) name simplification.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5250 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-22 13:48:10 +00:00
Michael Bayne c743432676 More style changes.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5248 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-22 13:02:13 +00:00
Dave Hoover 6b1d65553f And finally, narya gets the imports/overrides/regen love.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5241 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-18 23:20:17 +00:00
Michael Bayne 27b95dd19a Nix another redundant cast.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4850 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-10-19 18:28:56 +00:00
Michael Bayne 66660bc490 Don't need to cast the result of an array clone.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4849 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-10-19 18:22:37 +00:00
Ray Greenwell 4a34d6d2fd Have the actionscript-generating stuff understand TypedArray.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4751 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-07-11 01:20:36 +00:00
Michael Bayne 17b9162881 Widened, honor @ActionScript(omit=true) on classes and constructors, sort of
handle inner class declarations, emphasis on sort of.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4666 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-18 01:28:10 +00:00
Michael Bayne 94cdf6f2dc Some of this got moved into samskivert.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4628 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-16 20:51:18 +00:00
Michael Bayne 09f0bee0f3 Yet more header patrol.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4602 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-24 00:39:27 +00:00
Ray Greenwell 54d23f0247 The args from invocation responses will be unwrapped for us automatically.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4570 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 21:50:24 +00:00
Ray Greenwell 2ad124322d Made actionscript code generation ByteArray-aware.
(ByteArray is a special class for dealing with bytes. It does not extend
the normal Array).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4452 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-15 02:53:12 +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 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 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 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
Michael Bayne 07ee188d82 Properly handle parameterized DSet fields in DObject declarations. Other
parameterized types will be easy to add, but I've not yet had occasion to use
them. We're all about "just in time" support.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4165 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-31 04:16:04 +00:00
Ray Greenwell 26c928fc45 Use the valueOf factory methods pretty much everywhere.
These are the preferred way to get instances of Boolean, Byte,
Short, Character, Integer, Long, Float, and Double object.
It's always made sense for Boolean objects, and with 1.5 these factory
methods were blessed as the proper way to get instances unless one
absolutely needed a distinct object.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4145 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-24 01:24:24 +00:00
Ray Greenwell 8446cf4f78 We can't clone null.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3299 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-01-08 22:02:27 +00:00
Michael Bayne e5acc3e45f More DObject fun! We need to keep a careful separation for container
objects (DSet, arrays) in a DEvent (which should not change as a result of
other events being applied) and those in the object itself (which do
change and evolve as events are applied to the object).

This is important both because the DEvent is passed on to another thread
for delivery to remote clients, thus changes to the values in the event
could take place before they were serialized and sent over the network,
and because compound events are applied to an object before they are sent
to the other thread for delivery and thus, for example, setting a DSet and
then adding a few entries to it in a compound event would result in the
DEvent copy of the DSet becoming corrupted.

Two problems remain (note, neither of these are new, the one issue
introduced when I rewrote the DObject stuff is fixed by these checkins):

1. Object subscription requests are supposed to deliver a snapshot of the
   object at the point in the event stream at which the subscription
   request was processed, but presently we pass only a reference to the
   object off to the networking thread which means that before the object
   is serialized and sent to clients, subsequent events could be applied
   to it and then those events would be sent to the client as well
   resulting in funny business (probably nothing more than duplicate DSet
   entry warnings, but imagination and Chapter 17 tell us that worse
   things could happen).

2. The use of Streamable instances could result in badness. If a field in
   a Streamable is modified and the whole Streamable set() back into the
   object to broadcast the update, then further changes were made to the
   Streamable before the attribute change event was serialized and sent
   over the network, the second modifications would be reflected in the
   event triggered by the first modifications.

The first problem may be solvable (albeit inefficiently) by serializing
the DObject on the event dispatcher thread and sending that serialized
copy off to the network thread for delivery to the client. It would be
much less efficient as we would be unable to make use of the client's
already "primed" ObjectOutputStream which may have already mapped many of
the classes in the object to two byte codes, but object subscription is
fairly uncommon compared to delivery of events, so inefficiency might not
be a big problem in this case.

The second problem might be solved by requiring that all Streamable
implementations implement clone() and then cloning any Streamable
attribute just as we do an array or DSet during an attribute, array
element or DSet entry change. This would be a more significant performance
hit as well as require a review of all of our Streamable classes (to
determine if they need a custom clone() implementation), and it has up to
now not actually manifested as a problem.

In any case I'm not going to tackle either of these remedies at the moment
because I'm on vacation, dammit.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3294 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-01-05 06:24:11 +00:00
Michael Bayne 1d976ceaf8 Merry Christmas to the server CPUs. It occurred to me that we could
accomplish our "previous value" support in the distributed object system
without using reflection and could also avoid using reflection in the case
where we have already applied the event on the server (which is generally
the case on the server).

Rather than hacking up the gendobj script, I took this opportunity also to
rewrite the DObject generation script as an Ant task and in doing so,
implemented another recent idea which is that we can just augment the
FooObject.java file instead of having a separate .dobj and .java file.

You'd think it was spring there's so much cleaning going on.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3284 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-12-28 03:48:07 +00:00