Commit Graph

90 Commits

Author SHA1 Message Date
Michael Bayne ca4c5897fb Tidied up.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5273 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-30 09:32:48 +00:00
Tom Conkling 81dc030710 don't lazily create _isStreamableFieldPred
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5272 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-30 01:05:23 +00:00
Tom Conkling 7a1ede64af Added a NotStreamable annotation. Streamable objects that have fields annotated with NotStreamable will not have those fields sent over the wire, at least by the default readObject()/writeObject() Streamer methods.
Currently, Streamer will skip fields marked transient for the purposes of the default streaming implementation, but 'transient' is also used by the Java serialization mechanism, and there are instances where a field in a Serializable, Streamable object can't be streamed but should be serialized.

I have a bunch of code to check in related to the game server sending stat updates to the world server, but I'm going to hold off on those changes until I get the go-ahead from the powers that be that this is an acceptable solution to the problem.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5270 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-30 00:04:06 +00:00
Dave Hoover f2eeab0581 Truth in commenting.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5257 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-22 23:12:55 +00:00
Michael Bayne 67ce73b61d More style cleanup.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5249 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-22 13:39:42 +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 733ec9e5ab Unused import nixage.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5204 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-06-29 12:38:24 +00:00
Michael Bayne 919112cf88 Switch to new samskivert logging API.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5134 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-05-27 19:25:38 +00:00
Andrzej Kapolka 9bafa5e7c8 Basic support for datagram messaging. Hope I haven't fucked
anything up!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5090 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-05-13 21:12:39 +00:00
Michael Bayne 0fb090ea52 Let's also make that a warning now that we don't think it's going to happen as
a matter of course on old VMs.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5020 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-04-23 19:59:07 +00:00
Michael Bayne 9700aa13cd Use a method available since JDK1.1 to determine our innerness and simplify the
logic. If we're inner and we're not static, we have a problem.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5019 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-04-23 19:58:16 +00:00
Michael Bayne 290d7a9ea1 Freak not out if we fail to determine if our class is local, anonymous or a
non-static member. Pre-1.5 VMs can't do all of these things and Retroweaver
freaks out at runtime when put to the task.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5018 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-04-23 19:34:22 +00:00
Mike Thomas 4a25cc3f46 If we fail spectacularly in checking localness, let's print out what class is having trouble, since the java libs don't actually do that.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5008 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-04-21 18:43:30 +00:00
Michael Bayne f017673964 Disallow streaming of non-static inner classes to avoid the inevitable
freakoutery as we try to stream the instance's implicit reference to its
containing class.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5001 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-04-17 02:48:04 +00:00
Michael Bayne 63db77667a Some type safety, redundant cast removal, and other code hygiene.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4879 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-11-24 19:40:19 +00:00
Dave Hoover 3b701ef57d Tabs -> spaces
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4742 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-06-26 00:07:36 +00:00
Michael Bayne 96dd2deba3 For now don't use the generated field accessors unless we're running in a
sandbox. They should work exactly the same but there seem to be remaining
niggles, so we'll iron those out without impacting other projects.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4706 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-09 21:52:47 +00:00
Michael Bayne 84855f8fe0 Enhanced debuggery, reenabled new streaming bits because now they should really
really work.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4705 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-09 01:17:13 +00:00
Michael Bayne 66a4151c86 More problems!
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4703 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-09 01:02:11 +00:00
Michael Bayne ef43b9d41a Re-revamp. I may re-re-revamp later to eliminate the reflection based streaming
altogether as that also solves the "Class.getDeclaredFields() is not required
to return fields in declaration order" problem which has been looming. However,
this should work for now.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4701 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-09 00:20:35 +00:00
Michael Bayne dcffc5f54d Disable this for now until the instrumented methods are working properly.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4699 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-07 20:47:53 +00:00
Michael Bayne 2afd7b2e29 Let's actually use them fancy little methods.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4695 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-07 19:19:33 +00:00
Michael Bayne 64da3b6229 Widening.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4682 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-04 22:01:32 +00:00
Michael Bayne 00e24d5ed6 Let's let whoever catches this exception decide if they want a stack trace
logged.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4642 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-31 02:38:28 +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
Michael Bayne d3064398e9 Widened, removed misleading comment. It's all non-transient fields, not all
non-transient public fields.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4600 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-23 19:59:18 +00:00
Michael Bayne 02387b46ec And another.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4564 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 03:41:16 +00:00
Michael Bayne d0d31eb5bf Nixed stray debug line.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4563 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 03:40:46 +00:00
Michael Bayne d9089e10d3 Widening, one additional log message added in STREAM_DEBUG mode.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4558 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 03:03:51 +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
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
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 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 d57d213904 Use jdk1.5 notation to do away with the array type prototypes.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4335 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-21 21:50:24 +00:00
Ray Greenwell c9d262bf64 Just print the exception. If it has a message, that will be printed,
otherwise we'll just get the name. I'm killing StringUtil.getMessage().


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4304 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-08 20:06:53 +00:00
Ray Greenwell ca06b47835 Report as useful a message as we can when we have an error.
I was getting an IllegalArgumentException and the message was "null",
so this will at least log the name of the exception.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4263 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-12 23:57:14 +00:00
Michael Bayne 489332edca Nixed old temporary code.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4256 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-07 20:43:57 +00:00
Michael Bayne 94b79826d4 More type safety.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4244 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-05 00:51:22 +00:00
Michael Bayne 33a758dfce The basis of cluster support for Presents servers. All servers in a cluster
make connections to other servers in the cluster and can exchange events (in a
limited fashion).

This is different than Liz's project wherein servers share an oid space and one
can interchangably work with distributed objects from any server. This package
provides a means by which certain services (by default, presence and chat) can
be communicated between servers to allow communication between players
scattered around a bunch of otherwise independent server instances.

This is less general purpose but also less likely to encourage people to write
code that tightly couples multiple servers and then falls over because it
generates gobs of network traffic as events are flung willy nilly behind the
scenes.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4238 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-01 00:19:59 +00:00
Michael Bayne 6424adf26d More log fixing. The tools package will move to Nenya.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4215 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-23 19:40:55 +00:00
Ray Greenwell 79c6427c21 StringBuffer -> StringBuilder.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4191 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-13 22:42:20 +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 baa45c51c1 Added class translation support so that I could write a DSet converter.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3947 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-03-15 02:29:10 +00:00
Ray Greenwell bdfecce767 A bit of simplification.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3927 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-03-08 23:21:47 +00:00
Ray Greenwell a0e9f70db3 Cleaned that method up a bit.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3922 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-03-08 01:03:57 +00:00