Commit Graph

83 Commits

Author SHA1 Message Date
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
Ray Greenwell ff274735a9 Allow creation of an array of arrays of bytes...
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4332 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-19 01:05:53 +00:00
Ray Greenwell 54f3fdb3e6 Implement Boolean array streaming.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4319 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-11 02:43:30 +00:00
Ray Greenwell be62ca7301 Right, "Z" means boolean in Java array classnames.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4312 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-09 20:03:14 +00:00
Ray Greenwell 4fde46f362 Handle boolean arrays from the server.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4310 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-09 00:58:43 +00:00
Ray Greenwell 7c17069a16 Some fixups and enhancements.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4294 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-28 02:48:52 +00:00
Ray Greenwell 151a0d9d1e There's no 'throws' in ActionScript, so essentially all exceptions are
runtime. The only way to learn what might be thrown is to read all the
documentation for a method. (Complaint suppressed.)
Anyway, let's cope if we encounter an error reading from our socket.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4292 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-25 21:23:47 +00:00
Ray Greenwell 2f9ea3a69e Added a streaming Boolean wrapper. Untested.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4279 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-19 23:59:55 +00:00
Ray Greenwell 1818bd14dd Found one of the bugs: the default ArrayStreamer was being picked to stream
TypedArrays.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4262 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-12 23:51:01 +00:00
Ray Greenwell 2f3584adf7 Various small fixes.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4258 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-12 02:22:18 +00:00
Ray Greenwell 608be4557b Some changes required for the new compiler.
- Import bleeding may be fixed, as I had to import a bunch of things I
  should have had to earlier.
- NOW they make duplicate variable definitions bad (but without block
  scoping... yay).
- Another hoopjump.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4233 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-28 22:04:19 +00:00
Ray Greenwell 251566b321 - Added TokenRing
- Specify override first on overridden methods.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4170 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-05 21:28:00 +00:00
Ray Greenwell a442646791 Supress extra debuggy logging.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4169 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-02 02:22:11 +00:00
Ray Greenwell cdd7a64b04 Renamed some "inner" classes, removed debugging lines.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4152 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-26 22:39:31 +00:00
Ray Greenwell fdfce50d01 Checkpoint, I've got an interactive 2d scene mostly working.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4151 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-26 21:54:34 +00:00
Ray Greenwell c143e93554 Spot stuff in AbjectScript.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4144 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-24 00:20:00 +00:00
Ray Greenwell a22ca8b079 Simplified logging facilities.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4131 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-19 22:47:44 +00:00
Ray Greenwell 7ec9c8d642 Let's name inner classes with an "_" where Java puts a "$", and do
automatic name translation for those names.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4129 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-19 02:23:47 +00:00
Ray Greenwell 64e87bb907 Added the keys() function to the Map interface, replaced instances of
SimpleMap with HashMap. Discarded SimpleMap.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4122 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-16 21:06:06 +00:00
Ray Greenwell 8604a4ac6a Various cleanuppery.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4118 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-16 01:51:01 +00:00
Ray Greenwell eedebca87e Removed dead import.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4114 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-12 18:14:47 +00:00