mrpin-rocketamf 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +9 -0
- data/doc/amf3-speification.pdf +0 -0
- data/mrpin-rocketamf.gemspec +2 -11
- data/spec/flash/ASClass.as +9 -0
- data/spec/flash/Encoder.as +248 -0
- data/spec/flash/ExternalizableTest.as +23 -0
- data/spec/flash/build +3 -0
- data/spec/flash/encoder-app.xml +13 -0
- metadata +8 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe5b7908c809ee6609beaa0bf3f2f3fe111cde9a
|
4
|
+
data.tar.gz: 65c3d1c0185a5317f8fd19eded23942227b0b51d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4838eae569bc2e2d0b88cb2e62b2c903429d01d51e13809822cf87fa39c98843a936646165b2012d0c5be5d64f1590d7e1e2eccca8b8e23229bee0956a025847
|
7
|
+
data.tar.gz: 8ac67aa2406d3ddf3d0fdf9a72bdc5dd65cd5fe260ee687ce0d194c24d7d2a2ede7999c31045d648550e2b6141e0f11a28f77ccb652c14f28ccfa784cf0b2c11
|
data/.gitignore
ADDED
Binary file
|
data/mrpin-rocketamf.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'mrpin-rocketamf'
|
5
|
-
spec.version = '2.0.
|
5
|
+
spec.version = '2.0.1'
|
6
6
|
spec.platform = Gem::Platform::RUBY
|
7
7
|
spec.authors = ['Jacob Henry', 'Stephen Augenstein', "Joc O'Connor", 'Gregory Tkach']
|
8
8
|
spec.email = %w(gregory.tkach@gmail.com)
|
@@ -11,16 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.summary = 'Fast AMF3 serializer/deserializer'
|
12
12
|
spec.description = 'Fast AMF3 serializer/deserializer with remoting request/response wrappers to simplify integration'
|
13
13
|
|
14
|
-
files
|
15
|
-
files << 'README.rdoc'
|
16
|
-
files << 'benchmark.rb'
|
17
|
-
files << 'mrpin-rocketamf.gemspec'
|
18
|
-
files << 'Rakefile'
|
19
|
-
files << 'lib/**/*.rb'
|
20
|
-
files << 'spec/**/*.{rb,bin,opts}'
|
21
|
-
files << 'ext/**/*.{c,h,rb}'
|
22
|
-
|
23
|
-
spec.files = Dir[*files]
|
14
|
+
spec.files = `git ls-files`.split($/)
|
24
15
|
spec.test_files = Dir[*['spec/**/*_spec.rb']]
|
25
16
|
spec.extensions = Dir[*['ext/**/extconf.rb']]
|
26
17
|
spec.require_paths = ['lib']
|
@@ -0,0 +1,248 @@
|
|
1
|
+
package {
|
2
|
+
import flash.desktop.NativeApplication;
|
3
|
+
import flash.display.Sprite;
|
4
|
+
import flash.events.Event;
|
5
|
+
import flash.filesystem.*;
|
6
|
+
import flash.net.registerClassAlias;
|
7
|
+
import flash.utils.*;
|
8
|
+
import flash.xml.XMLDocument;
|
9
|
+
import mx.collections.ArrayCollection;
|
10
|
+
|
11
|
+
public class Encoder extends Sprite {
|
12
|
+
public function Encoder() {
|
13
|
+
var dir:File = File.userDirectory;
|
14
|
+
dir.browseForDirectory("Select Output Directory");
|
15
|
+
dir.addEventListener(Event.SELECT, writeSpecFixtures)
|
16
|
+
}
|
17
|
+
|
18
|
+
private function writeSpecFixtures(evt:Event):void {
|
19
|
+
registerClassAlias('org.amf.ASClass', ASClass);
|
20
|
+
registerClassAlias('ExternalizableTest', ExternalizableTest);
|
21
|
+
registerClassAlias('flex.messaging.io.ArrayCollection', mx.collections.ArrayCollection);
|
22
|
+
XML.prettyPrinting = false;
|
23
|
+
|
24
|
+
var tests:Object = {
|
25
|
+
'amf0-number': 3.5,
|
26
|
+
'amf0-boolean': true,
|
27
|
+
'amf0-string': "this is a テスト",
|
28
|
+
'amf0-null': null,
|
29
|
+
'amf0-undefined': undefined,
|
30
|
+
'amf0-hash': function():Array {
|
31
|
+
var a:Array = new Array();
|
32
|
+
a['a'] = 'b';
|
33
|
+
a['c'] = 'd';
|
34
|
+
return a;
|
35
|
+
},
|
36
|
+
'amf0-empty-string-key-hash': function():Array {
|
37
|
+
var a:Array = new Array();
|
38
|
+
a['a'] = 'b';
|
39
|
+
a['c'] = 'd';
|
40
|
+
a[''] = 'last';
|
41
|
+
return a;
|
42
|
+
},
|
43
|
+
'amf0-ecma-ordinal-array': ['a', 'b', 'c', 'd'],
|
44
|
+
//'amf0-strict-array': ['a', 'b', 'c', 'd'], // Not possible from AS3
|
45
|
+
'amf0-time': function():Date {
|
46
|
+
var d:Date = new Date();
|
47
|
+
d.setTime(Date.UTC(2003, 1, 13, 5));
|
48
|
+
return d;
|
49
|
+
},
|
50
|
+
'amf0-date': function():Date {
|
51
|
+
var d:Date = new Date();
|
52
|
+
d.setTime(Date.UTC(2020, 4, 30));
|
53
|
+
return d;
|
54
|
+
},
|
55
|
+
'amf0-xml-doc': new XMLDocument('<parent><child prop="test"/></parent>'),
|
56
|
+
'amf0-object': function():Object {
|
57
|
+
var o:Object = {};
|
58
|
+
o['bar'] = 3.14;
|
59
|
+
o['foo'] = 'baz';
|
60
|
+
return o;
|
61
|
+
},
|
62
|
+
'amf0-untyped-object': function():Object {
|
63
|
+
var o:Object = {};
|
64
|
+
o['baz'] = null;
|
65
|
+
o['foo'] = 'bar';
|
66
|
+
return o;
|
67
|
+
},
|
68
|
+
'amf0-typed-object': new ASClass('bar'),
|
69
|
+
'amf0-ref-test': function():Object {
|
70
|
+
var o:Object = tests['amf0-object']();
|
71
|
+
var ret:Object = {};
|
72
|
+
ret['0'] = o;
|
73
|
+
ret['1'] = o;
|
74
|
+
return ret;
|
75
|
+
},
|
76
|
+
'amf0-complex-encoded-string': function():Object {
|
77
|
+
var o:Object = {};
|
78
|
+
o['shift'] = "Shift テスト";
|
79
|
+
o['utf'] = "UTF テスト";
|
80
|
+
o['zed'] = 5;
|
81
|
+
return o;
|
82
|
+
},
|
83
|
+
'amf3-null': null,
|
84
|
+
'amf3-false': false,
|
85
|
+
'amf3-true': true,
|
86
|
+
'amf3-max': 268435455,
|
87
|
+
'amf3-0': 0,
|
88
|
+
'amf3-min': -268435456,
|
89
|
+
'amf3-float': 3.5,
|
90
|
+
'amf3-large-max': 268435456,
|
91
|
+
'amf3-large-min': -268435457,
|
92
|
+
'amf3-bignum': Math.pow(2, 1000),
|
93
|
+
'amf3-string': "String . String",
|
94
|
+
'amf3-symbol': "foo",
|
95
|
+
'amf3-date': function():Date {
|
96
|
+
var d:Date = new Date();
|
97
|
+
d.setTime(0);
|
98
|
+
return d;
|
99
|
+
},
|
100
|
+
'amf3-xml': new XML('<parent><child prop="test"/></parent>'),
|
101
|
+
'amf3-xml-doc': new XMLDocument('<parent><child prop="test"/></parent>'),
|
102
|
+
'amf3-dynamic-object': function():Object {
|
103
|
+
var o:Object = {};
|
104
|
+
o['another_public_property'] = 'a_public_value';
|
105
|
+
o['nil_property'] = null;
|
106
|
+
o['property_one'] = 'foo';
|
107
|
+
return o;
|
108
|
+
},
|
109
|
+
'amf3-typed-object': new ASClass('bar'),
|
110
|
+
'amf3-externalizable': [new ExternalizableTest(5, 7), new ExternalizableTest(13, 5)],
|
111
|
+
'amf3-hash': function():Object {
|
112
|
+
var o:Object = {};
|
113
|
+
o['answer'] = 42;
|
114
|
+
o['foo'] = 'bar';
|
115
|
+
return o;
|
116
|
+
},
|
117
|
+
'amf3-empty-array': [],
|
118
|
+
'amf3-primitive-array': [1,2,3,4,5],
|
119
|
+
'amf3-associative-array': function():Array {
|
120
|
+
var a:Array = [];
|
121
|
+
a["asdf"] = "fdsa";
|
122
|
+
a["foo"] = "bar";
|
123
|
+
a[42] = "bar";
|
124
|
+
a[0] = "bar1";
|
125
|
+
a[1] = "bar2";
|
126
|
+
a[2] = "bar3";
|
127
|
+
return a;
|
128
|
+
},
|
129
|
+
'amf3-mixed-array': function():Array {
|
130
|
+
var h1:Object = {"foo_one": "bar_one"};
|
131
|
+
var h2:Object = {"foo_two": ""};
|
132
|
+
var so1:Object = {"foo_three": 42};
|
133
|
+
return [h1, h2, so1, {}, [h1, h2, so1], [], 42, "", [], "", {}, "bar_one", so1];
|
134
|
+
},
|
135
|
+
'amf3-array-collection': new ArrayCollection(['foo', 'bar']),
|
136
|
+
'amf3-complex-array-collection': function():Array {
|
137
|
+
var a:ArrayCollection = new ArrayCollection(['foo', 'bar']);
|
138
|
+
var b:ArrayCollection = new ArrayCollection([new ASClass('bar'), new ASClass('asdf')]);
|
139
|
+
return [a, b, b];
|
140
|
+
},
|
141
|
+
'amf3-byte-array': function():ByteArray {
|
142
|
+
var b:ByteArray = new ByteArray();
|
143
|
+
b.writeByte(0);
|
144
|
+
b.writeByte(3);
|
145
|
+
b.writeUTFBytes("これtest");
|
146
|
+
b.writeByte(64);
|
147
|
+
return b;
|
148
|
+
},
|
149
|
+
'amf3-empty-dictionary': new Dictionary(),
|
150
|
+
'amf3-dictionary': function():Dictionary {
|
151
|
+
var d:Dictionary = new Dictionary();
|
152
|
+
d["bar"] = "asdf1";
|
153
|
+
d[new ASClass("baz")] = "asdf2";
|
154
|
+
return d;
|
155
|
+
},
|
156
|
+
'amf3-string-ref': function():Array {
|
157
|
+
var foo:String = "foo";
|
158
|
+
var bar:String = "str";
|
159
|
+
return [foo, bar, foo, bar, foo, {"str": foo}];
|
160
|
+
},
|
161
|
+
'amf3-empty-string-ref': function():Array {
|
162
|
+
var s:String = "";
|
163
|
+
return [s, s];
|
164
|
+
},
|
165
|
+
'amf3-date-ref': function():Array {
|
166
|
+
var d:Date = new Date();
|
167
|
+
d.setTime(0);
|
168
|
+
return [d, d];
|
169
|
+
},
|
170
|
+
'amf3-object-ref': function():Array {
|
171
|
+
var obj1:Object = {"foo": "bar"};
|
172
|
+
var obj2:Object = {"foo": obj1["foo"]};
|
173
|
+
return [[obj1, obj2], "bar", [obj1, obj2]];
|
174
|
+
},
|
175
|
+
'amf3-trait-ref': [new ASClass("foo"), new ASClass("bar")],
|
176
|
+
'amf3-array-ref': function():Array {
|
177
|
+
var a:Array = [1, 2, 3];
|
178
|
+
var b:Array = ['a', 'b', 'c'];
|
179
|
+
return [a, b, a, b];
|
180
|
+
},
|
181
|
+
'amf3-empty-array-ref': function():Array {
|
182
|
+
var a:Array = []; var b:Array = [];
|
183
|
+
return [a, b, a, b];
|
184
|
+
},
|
185
|
+
'amf3-xml-ref': function():Array {
|
186
|
+
var x:XML = new XML('<parent><child prop="test"/></parent>');
|
187
|
+
return [x, x];
|
188
|
+
},
|
189
|
+
'amf3-byte-array-ref': function():Array {
|
190
|
+
var b:ByteArray = new ByteArray();
|
191
|
+
b.writeUTFBytes("ASDF");
|
192
|
+
return [b, b];
|
193
|
+
},
|
194
|
+
'amf3-graph-member': function():Object {
|
195
|
+
var parentObj:Object = {};
|
196
|
+
var child1:Object = {"children": []};
|
197
|
+
child1['parent'] = parentObj;
|
198
|
+
var child2:Object = {"children": []};
|
199
|
+
child2['parent'] = parentObj;
|
200
|
+
parentObj['children'] = [child1, child2];
|
201
|
+
parentObj['parent'] = null;
|
202
|
+
return parentObj;
|
203
|
+
},
|
204
|
+
'amf3-complex-encoded-string-array': [5, "Shift テスト", "UTF テスト", 5],
|
205
|
+
'amf3-encoded-string-ref': ["this is a テスト", "this is a テスト"],
|
206
|
+
'amf3-vector-int': function():Vector.<int> {
|
207
|
+
var v:Vector.<int> = new Vector.<int>();
|
208
|
+
v.push(4);
|
209
|
+
v.push(-20);
|
210
|
+
v.push(12);
|
211
|
+
return v;
|
212
|
+
},
|
213
|
+
'amf3-vector-uint': function():Vector.<uint> {
|
214
|
+
var v:Vector.<uint> = new Vector.<uint>();
|
215
|
+
v.push(4);
|
216
|
+
v.push(20);
|
217
|
+
v.push(12);
|
218
|
+
return v;
|
219
|
+
},
|
220
|
+
'amf3-vector-double': function():Vector.<Number> {
|
221
|
+
var v:Vector.<Number> = new Vector.<Number>();
|
222
|
+
v.push(4.3);
|
223
|
+
v.push(-20.6);
|
224
|
+
return v;
|
225
|
+
},
|
226
|
+
'amf3-vector-object': function():Vector.<ASClass> {
|
227
|
+
var v:Vector.<ASClass> = new Vector.<ASClass>();
|
228
|
+
v.push(new ASClass('foo'));
|
229
|
+
v.push(new ASClass('bar'));
|
230
|
+
v.push(new ASClass('baz'));
|
231
|
+
return v;
|
232
|
+
}
|
233
|
+
};
|
234
|
+
|
235
|
+
var outputDir:File = evt.target as File;
|
236
|
+
for(var key:String in tests) {
|
237
|
+
trace(key);
|
238
|
+
var fs:FileStream = new FileStream();
|
239
|
+
fs.objectEncoding = (key.indexOf('amf0-') === 0) ? 0 : 3;
|
240
|
+
fs.open(outputDir.resolvePath(key+'.bin'), FileMode.WRITE);
|
241
|
+
fs.writeObject(tests[key] is Function ? tests[key]() : tests[key]);
|
242
|
+
fs.close();
|
243
|
+
}
|
244
|
+
|
245
|
+
NativeApplication.nativeApplication.exit();
|
246
|
+
}
|
247
|
+
}
|
248
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
package {
|
2
|
+
import flash.utils.*;
|
3
|
+
|
4
|
+
public class ExternalizableTest implements IExternalizable {
|
5
|
+
private var one:int;
|
6
|
+
private var two:int;
|
7
|
+
|
8
|
+
public function ExternalizableTest(one:int, two:int) {
|
9
|
+
this.one = one;
|
10
|
+
this.two = two;
|
11
|
+
}
|
12
|
+
|
13
|
+
public function writeExternal(output:IDataOutput):void {
|
14
|
+
output.writeDouble(one);
|
15
|
+
output.writeDouble(two);
|
16
|
+
}
|
17
|
+
|
18
|
+
public function readExternal(input:IDataInput):void {
|
19
|
+
one = input.readDouble();
|
20
|
+
two = input.readDouble();
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
data/spec/flash/build
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version ="1.0" encoding="utf-8" ?>
|
2
|
+
<application xmlns="http://ns.adobe.com/air/application/3.1">
|
3
|
+
<id>com.rubyamf.Encoder</id>
|
4
|
+
<filename>Encoder</filename>
|
5
|
+
<name>Encoder</name>
|
6
|
+
<versionNumber>1.0</versionNumber>
|
7
|
+
<initialWindow>
|
8
|
+
<content>Encoder.swf</content>
|
9
|
+
<systemChrome>standard</systemChrome>
|
10
|
+
<transparent>false</transparent>
|
11
|
+
<visible>true</visible>
|
12
|
+
</initialWindow>
|
13
|
+
</application>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mrpin-rocketamf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Henry
|
@@ -37,9 +37,11 @@ extensions:
|
|
37
37
|
extra_rdoc_files:
|
38
38
|
- README.rdoc
|
39
39
|
files:
|
40
|
+
- .gitignore
|
40
41
|
- README.rdoc
|
41
42
|
- Rakefile
|
42
43
|
- benchmark.rb
|
44
|
+
- doc/amf3-speification.pdf
|
43
45
|
- ext/rocketamf_ext/class_mapping.c
|
44
46
|
- ext/rocketamf_ext/constants.h
|
45
47
|
- ext/rocketamf_ext/deserializer.c
|
@@ -127,6 +129,11 @@ files:
|
|
127
129
|
- spec/fixtures/request/simple-request.bin
|
128
130
|
- spec/fixtures/request/simple-response.bin
|
129
131
|
- spec/fixtures/request/unsupportedCommandMessage.bin
|
132
|
+
- spec/flash/ASClass.as
|
133
|
+
- spec/flash/Encoder.as
|
134
|
+
- spec/flash/ExternalizableTest.as
|
135
|
+
- spec/flash/build
|
136
|
+
- spec/flash/encoder-app.xml
|
130
137
|
- spec/helpers/class_mapping_test.rb
|
131
138
|
- spec/helpers/class_mapping_test2.rb
|
132
139
|
- spec/helpers/externalizable_test.rb
|