Commit Graph

103 Commits

Author SHA1 Message Date
Ray Greenwell fe3d89132d A little bit of tweakery so that the invocation director to use
is known by any invocation marshaller, and so the client does
not need to be passed in.

Just here on the actionscript side for now, but this change may
make its way to Java.

Other changes may follow...


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5904 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-08-13 06:17:28 +00:00
Michael Bayne 805ef99374 Various utility classes moved to flash-utils.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5889 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-07-21 20:56:35 +00:00
Michael Bayne 6e9077780c Added/updated source headers.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5829 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-06-20 21:09:34 +00:00
Ray Greenwell 5df1335471 Add an easy way to initialize.
Jeez, this whole thing could *almost* go away if we moved to flash 10
and used Vector, but of course, there's no way to get the type of
Vector. Maybe there is, with describeType(). Can't experiment now.
I'd fall out of my chair if there were.
We need to know in case sending an empty array to the server,
it's still gotta be the right type (with non-empty we could
try examining the first element).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5742 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-23 00:30:44 +00:00
Ray Greenwell bfcb45434e Ye olde razor. Now that I know abjectscript like the back of my hand,
reviewing some of the first code written in it might be a good idea.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5741 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-23 00:23:34 +00:00
Michael Bayne e90fb7465d Avoid calling bytesAvailable if the socket is not connected. It causes needless
exception throwage.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5711 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-07 20:51:10 +00:00
Ray Greenwell c192056f3a Listen for security errors on our socket.
Have the FrameReader stop listening on the socket when we're done with it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5707 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-04-03 17:40:54 +00:00
Michael Bayne 916950e873 Nixed unused imports that were breaking asdoc.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5703 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-03-30 22:55:13 +00:00
Ray Greenwell 0c4665e587 We actually want to refuse to stream either int or Number
plainly. Actionscript prevents us from reliably using them.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5619 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-01-06 02:11:55 +00:00
Jamie Doornbos 5cfb56f003 Fix recently introduced error where int values could not be written out as objects, particularly problematic for generic containers like StreamableHashMap. This was causing the creation of tables to fail for any game with a "range" custom parameter. There is likely a better fix for this, but this will do until we think of it.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5617 542714f4-19e9-0310-aa3c-eee0fc999fb1
2009-01-04 22:27:37 +00:00
Ray Greenwell 7728ed9bd3 Further cleanup: always look up streamers by their java name.
- Sliiiiightly less efficient in a few cases.
- But: looking typed arrays up by class didn't work anyway,
  there was some duplicated code in jname and class lookup,
  and the jname thing handles Lists from the server. So
  overall I think this is a win.
Less code is better code.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5610 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-31 00:41:20 +00:00
Ray Greenwell e9152193b7 - Just use dictionaries, which are inside the HashMaps anyway.
- Register Long.

(I could probably sweep through narya and re-jigger a bunch of
the actionscript code that was written while I was learning the
language.)


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5609 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-30 23:59:40 +00:00
Ray Greenwell e6ea84e5da Refactor to avoid linear lookup of streamers.
This was a bit of a rabbit hole and took longer than expected,
and I had a stupid bug that took a while to find,
but in the end there are way more lines of code removed than
added, so I'll call it a win. Streamer lookup is now via a Dictionary.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5608 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-30 23:25:50 +00:00
Par Winzell 0cfc7fcc9e Turn debugging off again. Whew.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5598 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-11 19:53:16 +00:00
Par Winzell 31388566f6 Turn on streaming I/O debugging long enough to get better debugging data on the development server. Will be flipped back ASAP.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5597 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-12-11 19:35:25 +00:00
Jamie Doornbos 077c5e8053 At Ray's suggestion, go ahead and throw an error when the wrong type is read. Use the Type(obj) cast syntax (I was unaware that this would actually throw an error). Reading objects of a basic type like Array must still use "readObject(Array) as Array" so this is still supported, though not needed for user types.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5441 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-13 17:34:55 +00:00
Jamie Doornbos a3cc67348e Gah, this was part of the implementation, but in the end I took it out but missed the import
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5439 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-11 06:21:54 +00:00
Jamie Doornbos e12ff0e9f3 Optional type checking for readObject
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5438 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-10-11 06:06:06 +00:00
Michael Bayne e1d83cade0 Make it possible to create and populate a TypedArray in a single expression.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5386 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-22 18:15:04 +00:00
Tom Conkling ccc81d4da0 Whoops!
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5361 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-05 00:32:38 +00:00
Tom Conkling ca8abbaf62 Make readAvailable() non-recursive.
Thane apparently has a maximum stack depth of 64, and this is quickly getting eaten up by readAvailable() when lots of frames are sent down the tubes simultaneously. (mxmlc doesn't seem to optimize tail-recursive functions.)


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5360 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-05 00:30:19 +00:00
Ray Greenwell 76ebba1614 Added readLong and writeLong to our streaming classes.
Use that in PongResponse.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5358 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-04 22:21:03 +00:00
Ray Greenwell 08522d513a Quick fix that should fix the RoomName problem, while I contemplate
larger changes that may enhance performance.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5356 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-04 21:29:10 +00:00
Ray Greenwell ec2b50c153 - Changed some stuff around with streaming.
- Before, the Input/OutputStream classes handled Streamables directly
    and Streamers were never created for them. Simplified the code somewhat
    by always creating a Streamer. It's now more like the Java side, too.
  - No more BAD_STREAMER, since null now means "bad".
- Built-in support for streaming enums.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5352 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-04 01:27:18 +00:00
Ray Greenwell f22aab43ce 100 column formatting.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5350 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-04 00:49:26 +00:00
Ray Greenwell 2be1dc747d Some formatting love, from the futuristic world of 100 column code.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5349 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-09-04 00:48:46 +00:00
Michael Bayne 9674176268 More debugging when debug is activated.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5255 542714f4-19e9-0310-aa3c-eee0fc999fb1
2008-07-22 18:28:36 +00:00
Ray Greenwell fcdace5589 Some method documentation.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4902 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-12-05 02:25:44 +00:00
Ray Greenwell c42510b325 Another place where we call IDataInput's readBytes. Let's just
make sure we never pass it 0 for the length.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4901 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-12-05 02:11:45 +00:00
Ray Greenwell a920f02030 Found and fixed the "Mother Fucker of a Bug(tm)" that was causing
Zyraxxis to hork.
Deep within our streaming code, ArrayMask objects were being created with
zero length when streaming non-final arrays with a zero length. This tickled
a "feature" of Adobe's IDataInput code, which reads *all available bytes*
if you pass readBytes() a length of 0.
What's really annoying is that this worked fine if you were notified
of the zero-length array via a PropertySetEvent, because that event
would come in on its own frame and so if the array's length was zero then
there were no more bytes to read. But if you entered a game and had
to receive all the usercode properties at once, it booched.
There are clumps of my pulled-out hair all around my desk from that.
And: this is ultimately my own fault, as my old code didn't handle the
case of the passed-in ByteArray having 0 length.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4900 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-12-05 02:09:59 +00:00
Ray Greenwell 376f5e680a Sorry, Log, no more free ride for you.
Putting you at the top level screws up use of another Log class.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4874 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-11-13 09:30:23 +00:00
Ray Greenwell 480abdee8a For primitive types, the coercive casts never fail. Let's be lenient and let
a TypedArray of int work if people fill it with strings like "4" or "9".


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4854 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-10-24 21:51:32 +00:00
Robert Zubeck 59086147e6 A signed 64-bit integer can be stored as two 32-bit integers in Actionscript, but converting
them to a single number becomes inconvenient for values larger than an single int, and tricky 
when the value is negative (i.e. in two's complement split into two words, with sign bit only
in the high int). 

Instead of splitting a long into two ints, we store it internally as a byte array that corresponds 
exactly to Java's serialized version (sequence of eight bytes, high byte first), and we provide 
accessors to convert to and from Actionscript numbers. This makes Java Long values readable in 
Actionscript, and vice versa.

Unfortunately, Actionscript does not have a native 64-bit integer - the closest equivalent is the 
Number class. Since this is a double float with a 52-bit mantissa, very large long values will 
suffer precision loss during conversion. 




git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4811 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-08-10 20:49:03 +00:00
Ray Greenwell b1773889d2 Implemented StringUtil.fieldsToString() using flash's introspection.
Use it in SimpleStreamableObject's toString(), with some new formatting.
Unfortunately, the order of public variables seems random.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4746 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-07-02 20:33:59 +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 80f242616e Final refactor bits.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4677 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-05-01 22:42:22 +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 a3cb9f1f81 Fixed unstreaming a List from the server.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4579 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-15 00:15:49 +00:00
Ray Greenwell b217e87519 - Have the ArrayStreamer always look up its delegate, as it may need one
for element types other than String.
- Changed streamer init to prevent the above change from triggering
  a re-init when the delegate is looked-up.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4568 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 21:31:21 +00:00
Ray Greenwell 789fe8e433 Found the streaming bug:
I was looking up streamers by java name, but passing in the actionscript
name. This was only affecting Object[]'s containing String elements
due to the addition of String to Translations.

Previously, 'java.lang.String' wasn't getting translated into the
actionscript equivalent, so it just worked. Two bugs can cancel each other out.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4567 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 21:29:57 +00:00
Ray Greenwell f461149176 Do what we say we're going to do.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4565 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 19:08:08 +00:00
Michael Bayne 46a23342b3 More jockeying to make String[] streaming work and to make service group
registration work. Keeerist Flash is annoying.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4562 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 03:40:14 +00:00
Michael Bayne 4bc3e1e48d Some error message clarification, added java.lang.String to Translations, some
widening.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4560 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 03:10:05 +00:00
Michael Bayne 0a06460b24 Widening.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4559 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-12 03:09:00 +00:00
Ray Greenwell 91b50cd0b8 Took care of some TODOs.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4440 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-01 03:52:29 +00:00
Ray Greenwell 4a537cadeb Unstream lists as Arrays.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4422 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-11 21:30:56 +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
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
Ray Greenwell e597ecb14f Oops: there is no such thing as integer math, so we'd better make sure
that we don't try to access array element .125 at runtime.
The designers of flash need to be suspended over a tank of sharks while
people try to write a program in actionscript to reel them in. I bet half
the time it compiles into something that just lets those ropes go.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4334 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-21 21:42:04 +00:00
Ray Greenwell 67a4eecc15 Abjectscript is just such a great language. I fixed two bugs in here that the
compiler never wanted to tell me about.
- I was trying to store read values into the streamer itself, referecing
  it as "this[ii]". This turns out to be legal, even though the class is
  sealed, because you can access public fields using the [] operator with
  a string argument. At runtime, ii == 0, it got Stringdafied to "0" and
  then a field called "0" was looked up on the class and oh no, it didn't
  exist.
- Worse, I had a line that referenced "length" instead of "arr.length".
  There is no length defined in the class, nor is there one in the superclass.
  It turns out the base class Object has an undocumented constant called
  length that seems to always be 0. Isn't that special?


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4333 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-21 21:39:14 +00:00