mrpin-rocketamf 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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