[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