revent 0.2.3 → 0.3
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.
- data/lib/revent/Client.as +0 -17
- data/lib/revent/amf3/io/amf_serializer.rb +28 -15
- data/lib/revent/amf3/io/byte_array.rb +11 -0
- data/lib/revent/as_r.rb +1 -2
- data/test/as_r/Document.as +1 -2
- data/test/as_r/client.swf +0 -0
- data/test/as_r/server.rb +13 -4
- metadata +2 -1
data/lib/revent/Client.as
CHANGED
@@ -12,23 +12,6 @@
|
|
12
12
|
private var _socket:Socket;
|
13
13
|
private var _bytes:ByteArray;
|
14
14
|
|
15
|
-
public static function bytesToByteArray(bytes:Array):ByteArray {
|
16
|
-
var ba:ByteArray = new ByteArray();
|
17
|
-
ba.objectEncoding = ObjectEncoding.AMF3;
|
18
|
-
for (var i:int = 0; i < bytes.length; i++) {
|
19
|
-
ba.writeByte(bytes[i]);
|
20
|
-
}
|
21
|
-
return ba;
|
22
|
-
}
|
23
|
-
|
24
|
-
public static function bytesToObject(bytes:Array, compressed:Boolean = false):Object {
|
25
|
-
var ba:ByteArray = bytesToByteArray(bytes);
|
26
|
-
if (compressed) {
|
27
|
-
ba.uncompress();
|
28
|
-
}
|
29
|
-
return ba.readObject();
|
30
|
-
}
|
31
|
-
|
32
15
|
public function Client():void {
|
33
16
|
_socket = new Socket();
|
34
17
|
_socket.objectEncoding = ObjectEncoding.AMF3;
|
@@ -3,6 +3,7 @@ module RubyAMF
|
|
3
3
|
class AMFSerializer
|
4
4
|
|
5
5
|
require "#{File.dirname(__FILE__)}/read_write"
|
6
|
+
require "#{File.dirname(__FILE__)}/byte_array"
|
6
7
|
|
7
8
|
include RubyAMF::Configuration
|
8
9
|
include RubyAMF::IO::BinaryWriter
|
@@ -43,7 +44,7 @@ module RubyAMF
|
|
43
44
|
else
|
44
45
|
write_amf3_number(value)
|
45
46
|
end
|
46
|
-
elsif
|
47
|
+
elsif value.is_a?(Float)
|
47
48
|
@stream << "\005" # represents an amf3 complex number
|
48
49
|
write_double(value)
|
49
50
|
elsif value.is_a?(BigDecimal) # Aryk: BigDecimal does not relate to Float, so keep it as a seperate check.
|
@@ -53,17 +54,20 @@ module RubyAMF
|
|
53
54
|
write_double(value)
|
54
55
|
end
|
55
56
|
|
56
|
-
elsif
|
57
|
+
elsif value.is_a?(String)
|
57
58
|
@stream << "\006" # represents an amf3 string
|
58
59
|
write_amf3_string(value)
|
59
60
|
|
60
|
-
elsif
|
61
|
+
elsif value.is_a?(Array)
|
61
62
|
write_amf3_array(value)
|
62
63
|
|
63
|
-
elsif
|
64
|
+
elsif value.is_a?(ByteArray)
|
65
|
+
write_amf3_byte_array(value)
|
66
|
+
|
67
|
+
elsif value.is_a?(Hash)
|
64
68
|
write_amf3_object(value)
|
65
69
|
|
66
|
-
elsif
|
70
|
+
elsif value.is_a?(Time) || value.is_a?(Date)
|
67
71
|
@stream << "\b" # represents an amf3 date
|
68
72
|
write_amf3_date(value)
|
69
73
|
|
@@ -83,19 +87,19 @@ module RubyAMF
|
|
83
87
|
def write_amf3_integer(int)
|
84
88
|
@stream << (@write_amf3_integer_results[int] ||= (
|
85
89
|
int = int & 0x1fffffff
|
86
|
-
if
|
90
|
+
if int < 0x80
|
87
91
|
[int].pack('c')
|
88
|
-
elsif
|
89
|
-
[int >> 7 & 0x7f | 0x80].pack('c')+
|
92
|
+
elsif int < 0x4000
|
93
|
+
[int >> 7 & 0x7f | 0x80].pack('c') +
|
90
94
|
[int & 0x7f].pack('c')
|
91
|
-
elsif
|
92
|
-
[int >> 14 & 0x7f | 0x80].pack('c')+
|
93
|
-
[int >> 7 & 0x7f | 0x80].pack('c')+
|
95
|
+
elsif int < 0x200000
|
96
|
+
[int >> 14 & 0x7f | 0x80].pack('c') +
|
97
|
+
[int >> 7 & 0x7f | 0x80].pack('c') +
|
94
98
|
[int & 0x7f].pack('c')
|
95
99
|
else
|
96
|
-
[int >> 22 & 0x7f | 0x80].pack('c')+
|
97
|
-
[int >> 15 & 0x7f | 0x80].pack('c')+
|
98
|
-
[int >> 8 & 0x7f | 0x80].pack('c')+
|
100
|
+
[int >> 22 & 0x7f | 0x80].pack('c') +
|
101
|
+
[int >> 15 & 0x7f | 0x80].pack('c') +
|
102
|
+
[int >> 8 & 0x7f | 0x80].pack('c') +
|
99
103
|
[int & 0xff].pack('c')
|
100
104
|
end
|
101
105
|
))
|
@@ -167,7 +171,16 @@ module RubyAMF
|
|
167
171
|
# datetime = Time.gm( datetime.year, datetime.month, datetime.day )
|
168
172
|
# datetime = Time.gm( datetime.year, datetime.month, datetime.day, datetime.hour, datetime.min, datetime.sec )
|
169
173
|
end
|
170
|
-
write_double(
|
174
|
+
write_double((seconds*1000).to_i) # used to be total_milliseconds = datetime.to_i * 1000 + ( datetime.usec/1000 )
|
175
|
+
end
|
176
|
+
|
177
|
+
def write_amf3_byte_array(byte_array)
|
178
|
+
write_word8(AMF3_BYTE_ARRAY)
|
179
|
+
bytes = byte_array.bytes
|
180
|
+
length = bytes.length << 1
|
181
|
+
length = length | 0x1
|
182
|
+
write_amf3_integer(length)
|
183
|
+
@stream << bytes
|
171
184
|
end
|
172
185
|
|
173
186
|
def write_amf3_xml(value)
|
data/lib/revent/as_r.rb
CHANGED
data/test/as_r/Document.as
CHANGED
@@ -57,8 +57,7 @@
|
|
57
57
|
_status.text += "onResult";
|
58
58
|
_status.text += "cmd:" + event.cmd;
|
59
59
|
|
60
|
-
var b:
|
61
|
-
//trace(b);
|
60
|
+
var b:ByteArray = event.value as ByteArray;
|
62
61
|
_status.text += "Received bytes: " + b.length;
|
63
62
|
_size += 1024;
|
64
63
|
_status.text += "Testing byte array with size: " + _size;
|
data/test/as_r/client.swf
CHANGED
Binary file
|
data/test/as_r/server.rb
CHANGED
@@ -24,11 +24,9 @@ class Server
|
|
24
24
|
|
25
25
|
def on_call(client, cmd, value)
|
26
26
|
puts "on_call:", cmd, value
|
27
|
-
|
28
|
-
|
29
|
-
a << i
|
27
|
+
if cmd == CMD_TEST_BYTE_ARRAY
|
28
|
+
test_byte_array(client, value)
|
30
29
|
end
|
31
|
-
client.result(CMD_TEST_BYTE_ARRAY, a)
|
32
30
|
end
|
33
31
|
|
34
32
|
def on_result(client, cmd, value)
|
@@ -44,6 +42,17 @@ class Server
|
|
44
42
|
puts cmd
|
45
43
|
puts error
|
46
44
|
end
|
45
|
+
|
46
|
+
# ----------------------------------------------------------------------------
|
47
|
+
|
48
|
+
def test_byte_array(client, length)
|
49
|
+
bytes = ''
|
50
|
+
length.times do
|
51
|
+
bytes << rand(256)
|
52
|
+
end
|
53
|
+
byte_array = RubyAMF::IO::ByteArray.new(bytes)
|
54
|
+
client.result(CMD_TEST_BYTE_ARRAY, byte_array)
|
55
|
+
end
|
47
56
|
end
|
48
57
|
|
49
58
|
EventMachine::run do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: revent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: "0.3"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ngoc DAO Thanh
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- lib/revent/amf3/io/amf_deserializer.rb
|
46
46
|
- lib/revent/amf3/io/read_write.rb
|
47
47
|
- lib/revent/amf3/io/amf_serializer.rb
|
48
|
+
- lib/revent/amf3/io/byte_array.rb
|
48
49
|
- lib/revent/amf3/util
|
49
50
|
- lib/revent/amf3/util/vo_helper.rb
|
50
51
|
- lib/revent/amf3/util/string.rb
|