mrpin-rocketamf 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +47 -0
  3. data/Rakefile +59 -0
  4. data/benchmark.rb +74 -0
  5. data/ext/rocketamf_ext/class_mapping.c +484 -0
  6. data/ext/rocketamf_ext/constants.h +52 -0
  7. data/ext/rocketamf_ext/deserializer.c +776 -0
  8. data/ext/rocketamf_ext/deserializer.h +28 -0
  9. data/ext/rocketamf_ext/extconf.rb +18 -0
  10. data/ext/rocketamf_ext/remoting.c +184 -0
  11. data/ext/rocketamf_ext/rocketamf_ext.c +38 -0
  12. data/ext/rocketamf_ext/serializer.c +834 -0
  13. data/ext/rocketamf_ext/serializer.h +29 -0
  14. data/ext/rocketamf_ext/utility.h +4 -0
  15. data/lib/rocketamf.rb +216 -0
  16. data/lib/rocketamf/class_mapping.rb +237 -0
  17. data/lib/rocketamf/constants.rb +50 -0
  18. data/lib/rocketamf/ext.rb +28 -0
  19. data/lib/rocketamf/extensions.rb +22 -0
  20. data/lib/rocketamf/pure.rb +24 -0
  21. data/lib/rocketamf/pure/deserializer.rb +455 -0
  22. data/lib/rocketamf/pure/io_helpers.rb +94 -0
  23. data/lib/rocketamf/pure/remoting.rb +117 -0
  24. data/lib/rocketamf/pure/serializer.rb +474 -0
  25. data/lib/rocketamf/remoting.rb +196 -0
  26. data/lib/rocketamf/values/messages.rb +214 -0
  27. data/lib/rocketamf/values/typed_hash.rb +13 -0
  28. data/mrpin-rocketamf.gemspec +22 -0
  29. data/spec/class_mapping_spec.rb +110 -0
  30. data/spec/deserializer_spec.rb +455 -0
  31. data/spec/fast_class_mapping_spec.rb +144 -0
  32. data/spec/fixtures/objects/amf0-boolean.bin +1 -0
  33. data/spec/fixtures/objects/amf0-complex-encoded-string.bin +0 -0
  34. data/spec/fixtures/objects/amf0-date.bin +0 -0
  35. data/spec/fixtures/objects/amf0-ecma-ordinal-array.bin +0 -0
  36. data/spec/fixtures/objects/amf0-empty-string-key-hash.bin +0 -0
  37. data/spec/fixtures/objects/amf0-hash.bin +0 -0
  38. data/spec/fixtures/objects/amf0-null.bin +1 -0
  39. data/spec/fixtures/objects/amf0-number.bin +0 -0
  40. data/spec/fixtures/objects/amf0-object.bin +0 -0
  41. data/spec/fixtures/objects/amf0-ref-test.bin +0 -0
  42. data/spec/fixtures/objects/amf0-strict-array.bin +0 -0
  43. data/spec/fixtures/objects/amf0-string.bin +0 -0
  44. data/spec/fixtures/objects/amf0-time.bin +0 -0
  45. data/spec/fixtures/objects/amf0-typed-object.bin +0 -0
  46. data/spec/fixtures/objects/amf0-undefined.bin +1 -0
  47. data/spec/fixtures/objects/amf0-untyped-object.bin +0 -0
  48. data/spec/fixtures/objects/amf0-xml-doc.bin +0 -0
  49. data/spec/fixtures/objects/amf3-0.bin +0 -0
  50. data/spec/fixtures/objects/amf3-array-collection.bin +2 -0
  51. data/spec/fixtures/objects/amf3-array-ref.bin +1 -0
  52. data/spec/fixtures/objects/amf3-associative-array.bin +1 -0
  53. data/spec/fixtures/objects/amf3-bigNum.bin +0 -0
  54. data/spec/fixtures/objects/amf3-byte-array-ref.bin +1 -0
  55. data/spec/fixtures/objects/amf3-byte-array.bin +0 -0
  56. data/spec/fixtures/objects/amf3-complex-array-collection.bin +6 -0
  57. data/spec/fixtures/objects/amf3-complex-encoded-string-array.bin +1 -0
  58. data/spec/fixtures/objects/amf3-date-ref.bin +0 -0
  59. data/spec/fixtures/objects/amf3-date.bin +0 -0
  60. data/spec/fixtures/objects/amf3-dictionary.bin +0 -0
  61. data/spec/fixtures/objects/amf3-dynamic-object.bin +2 -0
  62. data/spec/fixtures/objects/amf3-empty-array-ref.bin +1 -0
  63. data/spec/fixtures/objects/amf3-empty-array.bin +1 -0
  64. data/spec/fixtures/objects/amf3-empty-dictionary.bin +0 -0
  65. data/spec/fixtures/objects/amf3-empty-string-ref.bin +1 -0
  66. data/spec/fixtures/objects/amf3-encoded-string-ref.bin +0 -0
  67. data/spec/fixtures/objects/amf3-externalizable.bin +0 -0
  68. data/spec/fixtures/objects/amf3-false.bin +1 -0
  69. data/spec/fixtures/objects/amf3-float.bin +0 -0
  70. data/spec/fixtures/objects/amf3-graph-member.bin +0 -0
  71. data/spec/fixtures/objects/amf3-hash.bin +2 -0
  72. data/spec/fixtures/objects/amf3-large-max.bin +0 -0
  73. data/spec/fixtures/objects/amf3-large-min.bin +0 -0
  74. data/spec/fixtures/objects/amf3-max.bin +1 -0
  75. data/spec/fixtures/objects/amf3-min.bin +0 -0
  76. data/spec/fixtures/objects/amf3-mixed-array.bin +10 -0
  77. data/spec/fixtures/objects/amf3-null.bin +1 -0
  78. data/spec/fixtures/objects/amf3-object-ref.bin +0 -0
  79. data/spec/fixtures/objects/amf3-primitive-array.bin +1 -0
  80. data/spec/fixtures/objects/amf3-string-ref.bin +0 -0
  81. data/spec/fixtures/objects/amf3-string.bin +1 -0
  82. data/spec/fixtures/objects/amf3-symbol.bin +1 -0
  83. data/spec/fixtures/objects/amf3-trait-ref.bin +3 -0
  84. data/spec/fixtures/objects/amf3-true.bin +1 -0
  85. data/spec/fixtures/objects/amf3-typed-object.bin +2 -0
  86. data/spec/fixtures/objects/amf3-vector-double.bin +0 -0
  87. data/spec/fixtures/objects/amf3-vector-int.bin +0 -0
  88. data/spec/fixtures/objects/amf3-vector-object.bin +0 -0
  89. data/spec/fixtures/objects/amf3-vector-uint.bin +0 -0
  90. data/spec/fixtures/objects/amf3-xml-doc.bin +1 -0
  91. data/spec/fixtures/objects/amf3-xml-ref.bin +1 -0
  92. data/spec/fixtures/objects/amf3-xml.bin +1 -0
  93. data/spec/fixtures/request/acknowledge-response.bin +0 -0
  94. data/spec/fixtures/request/amf0-error-response.bin +0 -0
  95. data/spec/fixtures/request/blaze-response.bin +0 -0
  96. data/spec/fixtures/request/commandMessage.bin +0 -0
  97. data/spec/fixtures/request/flex-request.bin +0 -0
  98. data/spec/fixtures/request/multiple-simple-request.bin +0 -0
  99. data/spec/fixtures/request/remotingMessage.bin +0 -0
  100. data/spec/fixtures/request/simple-request.bin +0 -0
  101. data/spec/fixtures/request/simple-response.bin +0 -0
  102. data/spec/fixtures/request/unsupportedCommandMessage.bin +0 -0
  103. data/spec/messages_spec.rb +39 -0
  104. data/spec/remoting_spec.rb +196 -0
  105. data/spec/serializer_spec.rb +503 -0
  106. data/spec/spec_helper.rb +55 -0
  107. metadata +176 -0
@@ -0,0 +1,55 @@
1
+ require 'rubygems'
2
+ require 'rspec'
3
+ require 'rspec/autorun'
4
+
5
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
6
+ require 'rocketamf'
7
+ require 'rocketamf/pure/io_helpers' # Just to make sure they get loaded
8
+
9
+ def request_fixture(binary_path)
10
+ data = File.open(File.dirname(__FILE__) + '/fixtures/request/' + binary_path, "rb").read
11
+ data.force_encoding("ASCII-8BIT") if data.respond_to?(:force_encoding)
12
+ data
13
+ end
14
+
15
+ def object_fixture(binary_path)
16
+ data = File.open(File.dirname(__FILE__) + '/fixtures/objects/' + binary_path, "rb").read
17
+ data.force_encoding("ASCII-8BIT") if data.respond_to?(:force_encoding)
18
+ data
19
+ end
20
+
21
+ def create_envelope(binary_path)
22
+ RocketAMF::Envelope.new.populate_from_stream(StringIO.new(request_fixture(binary_path)))
23
+ end
24
+
25
+ # Helper classes
26
+ class RubyClass; attr_accessor :baz, :foo; end;
27
+ class OtherClass; attr_accessor :bar, :foo; end;
28
+ class ClassMappingTest
29
+ attr_accessor :prop_a
30
+ attr_accessor :prop_b
31
+ end
32
+ class ClassMappingTest2 < ClassMappingTest
33
+ attr_accessor :prop_c
34
+ end
35
+ module ANamespace; class TestRubyClass; end; end
36
+ class ExternalizableTest
37
+ include RocketAMF::Pure::ReadIOHelpers
38
+ include RocketAMF::Pure::WriteIOHelpers
39
+
40
+ attr_accessor :one, :two
41
+
42
+ def encode_amf serializer
43
+ serializer.write_object(self, nil, {:class_name => 'ExternalizableTest', :dynamic => false, :externalizable => true, :members => []})
44
+ end
45
+
46
+ def read_external des
47
+ @one = read_double(des.source)
48
+ @two = read_double(des.source)
49
+ end
50
+
51
+ def write_external ser
52
+ ser.stream << pack_double(@one)
53
+ ser.stream << pack_double(@two)
54
+ end
55
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mrpin-rocketamf
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jacob Henry
8
+ - Stephen Augenstein
9
+ - Joc O'Connor
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-08-22 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake-compiler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ description:
30
+ email:
31
+ - perl.programmer@gmail.com
32
+ executables: []
33
+ extensions:
34
+ - ext/rocketamf_ext/extconf.rb
35
+ extra_rdoc_files:
36
+ - README.rdoc
37
+ files:
38
+ - README.rdoc
39
+ - benchmark.rb
40
+ - mrpin-rocketamf.gemspec
41
+ - Rakefile
42
+ - lib/rocketamf/class_mapping.rb
43
+ - lib/rocketamf/constants.rb
44
+ - lib/rocketamf/ext.rb
45
+ - lib/rocketamf/extensions.rb
46
+ - lib/rocketamf/pure/deserializer.rb
47
+ - lib/rocketamf/pure/io_helpers.rb
48
+ - lib/rocketamf/pure/remoting.rb
49
+ - lib/rocketamf/pure/serializer.rb
50
+ - lib/rocketamf/pure.rb
51
+ - lib/rocketamf/remoting.rb
52
+ - lib/rocketamf/values/messages.rb
53
+ - lib/rocketamf/values/typed_hash.rb
54
+ - lib/rocketamf.rb
55
+ - spec/class_mapping_spec.rb
56
+ - spec/deserializer_spec.rb
57
+ - spec/fast_class_mapping_spec.rb
58
+ - spec/messages_spec.rb
59
+ - spec/remoting_spec.rb
60
+ - spec/serializer_spec.rb
61
+ - spec/spec_helper.rb
62
+ - spec/fixtures/objects/amf0-boolean.bin
63
+ - spec/fixtures/objects/amf0-complex-encoded-string.bin
64
+ - spec/fixtures/objects/amf0-date.bin
65
+ - spec/fixtures/objects/amf0-ecma-ordinal-array.bin
66
+ - spec/fixtures/objects/amf0-empty-string-key-hash.bin
67
+ - spec/fixtures/objects/amf0-hash.bin
68
+ - spec/fixtures/objects/amf0-null.bin
69
+ - spec/fixtures/objects/amf0-number.bin
70
+ - spec/fixtures/objects/amf0-object.bin
71
+ - spec/fixtures/objects/amf0-ref-test.bin
72
+ - spec/fixtures/objects/amf0-strict-array.bin
73
+ - spec/fixtures/objects/amf0-string.bin
74
+ - spec/fixtures/objects/amf0-time.bin
75
+ - spec/fixtures/objects/amf0-typed-object.bin
76
+ - spec/fixtures/objects/amf0-undefined.bin
77
+ - spec/fixtures/objects/amf0-untyped-object.bin
78
+ - spec/fixtures/objects/amf0-xml-doc.bin
79
+ - spec/fixtures/objects/amf3-0.bin
80
+ - spec/fixtures/objects/amf3-array-collection.bin
81
+ - spec/fixtures/objects/amf3-array-ref.bin
82
+ - spec/fixtures/objects/amf3-associative-array.bin
83
+ - spec/fixtures/objects/amf3-bigNum.bin
84
+ - spec/fixtures/objects/amf3-byte-array-ref.bin
85
+ - spec/fixtures/objects/amf3-byte-array.bin
86
+ - spec/fixtures/objects/amf3-complex-array-collection.bin
87
+ - spec/fixtures/objects/amf3-complex-encoded-string-array.bin
88
+ - spec/fixtures/objects/amf3-date-ref.bin
89
+ - spec/fixtures/objects/amf3-date.bin
90
+ - spec/fixtures/objects/amf3-dictionary.bin
91
+ - spec/fixtures/objects/amf3-dynamic-object.bin
92
+ - spec/fixtures/objects/amf3-empty-array-ref.bin
93
+ - spec/fixtures/objects/amf3-empty-array.bin
94
+ - spec/fixtures/objects/amf3-empty-dictionary.bin
95
+ - spec/fixtures/objects/amf3-empty-string-ref.bin
96
+ - spec/fixtures/objects/amf3-encoded-string-ref.bin
97
+ - spec/fixtures/objects/amf3-externalizable.bin
98
+ - spec/fixtures/objects/amf3-false.bin
99
+ - spec/fixtures/objects/amf3-float.bin
100
+ - spec/fixtures/objects/amf3-graph-member.bin
101
+ - spec/fixtures/objects/amf3-hash.bin
102
+ - spec/fixtures/objects/amf3-large-max.bin
103
+ - spec/fixtures/objects/amf3-large-min.bin
104
+ - spec/fixtures/objects/amf3-max.bin
105
+ - spec/fixtures/objects/amf3-min.bin
106
+ - spec/fixtures/objects/amf3-mixed-array.bin
107
+ - spec/fixtures/objects/amf3-null.bin
108
+ - spec/fixtures/objects/amf3-object-ref.bin
109
+ - spec/fixtures/objects/amf3-primitive-array.bin
110
+ - spec/fixtures/objects/amf3-string-ref.bin
111
+ - spec/fixtures/objects/amf3-string.bin
112
+ - spec/fixtures/objects/amf3-symbol.bin
113
+ - spec/fixtures/objects/amf3-trait-ref.bin
114
+ - spec/fixtures/objects/amf3-true.bin
115
+ - spec/fixtures/objects/amf3-typed-object.bin
116
+ - spec/fixtures/objects/amf3-vector-double.bin
117
+ - spec/fixtures/objects/amf3-vector-int.bin
118
+ - spec/fixtures/objects/amf3-vector-object.bin
119
+ - spec/fixtures/objects/amf3-vector-uint.bin
120
+ - spec/fixtures/objects/amf3-xml-doc.bin
121
+ - spec/fixtures/objects/amf3-xml-ref.bin
122
+ - spec/fixtures/objects/amf3-xml.bin
123
+ - spec/fixtures/request/acknowledge-response.bin
124
+ - spec/fixtures/request/amf0-error-response.bin
125
+ - spec/fixtures/request/blaze-response.bin
126
+ - spec/fixtures/request/commandMessage.bin
127
+ - spec/fixtures/request/flex-request.bin
128
+ - spec/fixtures/request/multiple-simple-request.bin
129
+ - spec/fixtures/request/remotingMessage.bin
130
+ - spec/fixtures/request/simple-request.bin
131
+ - spec/fixtures/request/simple-response.bin
132
+ - spec/fixtures/request/unsupportedCommandMessage.bin
133
+ - ext/rocketamf_ext/class_mapping.c
134
+ - ext/rocketamf_ext/deserializer.c
135
+ - ext/rocketamf_ext/remoting.c
136
+ - ext/rocketamf_ext/rocketamf_ext.c
137
+ - ext/rocketamf_ext/serializer.c
138
+ - ext/rocketamf_ext/constants.h
139
+ - ext/rocketamf_ext/deserializer.h
140
+ - ext/rocketamf_ext/serializer.h
141
+ - ext/rocketamf_ext/utility.h
142
+ - ext/rocketamf_ext/extconf.rb
143
+ homepage: https://github.com/mrpin/mrpin-rocketamf
144
+ licenses: []
145
+ metadata: {}
146
+ post_install_message:
147
+ rdoc_options:
148
+ - --line-numbers
149
+ - --main
150
+ - README.rdoc
151
+ require_paths:
152
+ - lib
153
+ required_ruby_version: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ required_rubygems_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - '>='
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ requirements: []
164
+ rubyforge_project:
165
+ rubygems_version: 2.1.11
166
+ signing_key:
167
+ specification_version: 4
168
+ summary: Fast AMF serializer/deserializer with remoting request/response wrappers
169
+ to simplify integration
170
+ test_files:
171
+ - spec/class_mapping_spec.rb
172
+ - spec/deserializer_spec.rb
173
+ - spec/fast_class_mapping_spec.rb
174
+ - spec/messages_spec.rb
175
+ - spec/remoting_spec.rb
176
+ - spec/serializer_spec.rb