[Red5commits] [1640] implemented missing method
jbauch
luke at codegent.com
Wed Jan 24 11:13:12 EST 2007
implemented missing method
Timestamp: 01/21/07 16:05:52 EST (3 days ago)
Change: 1640
Author: jbauch
Files (see diff or trac for details):
java/server/branches/joachim_amf3_integration/src/org/red5/io/amf3/Output.java
Trac: http://mirror1.cvsdude.com/trac/osflash/red5/changeset/1640
Index: /java/server/branches/joachim_amf3_integration/src/org/red5/io/amf3/Output.java
===================================================================
--- /java/server/branches/joachim_amf3_integration/src/org/red5/io/amf3/Output.java (revision 1639)
+++ /java/server/branches/joachim_amf3_integration/src/org/red5/io/amf3/Output.java (revision 1640)
@@ -243,7 +243,7 @@
/** {@inheritDoc} */
public void writeMap(Map<Object, Object> map, Serializer serializer) {
+ writeAMF3();
+ buf.put(AMF3.TYPE_ARRAY);
if (hasReference(map)) {
- writeAMF3();
- buf.put(AMF3.TYPE_ARRAY);
putInteger(getReferenceId(map) << 1);
return;
@@ -261,6 +261,4 @@
}
- writeAMF3();
- buf.put(AMF3.TYPE_ARRAY);
amf3_mode += 1;
if (count == map.size()) {
@@ -297,5 +295,25 @@
/** {@inheritDoc} */
public void writeMap(Collection array, Serializer serializer) {
- writeString("Not implemented.");
+ writeAMF3();
+ buf.put(AMF3.TYPE_ARRAY);
+ if (hasReference(array)) {
+ putInteger(getReferenceId(array) << 1);
+ return;
+ }
+
+ // TODO: we could optimize this by storing the first integer
+ // keys after the key-value pairs
+ amf3_mode += 1;
+ putInteger(1);
+ int idx = 0;
+ for (Object item: array) {
+ if (item != null) {
+ putString(String.valueOf(idx));
+ serializer.serialize(this, item);
+ }
+ idx++;
+ }
+ amf3_mode -= 1;
+ putString("");
}
Note:
Diffs are chopped if more than 25k.
This is to get past the limit on the mailing list.
More information about the Red5commits
mailing list