hessian2 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +10 -10
  3. data/README.md +197 -197
  4. data/hessian2.gemspec +0 -2
  5. data/lib/hessian2/client.rb +57 -50
  6. data/lib/hessian2/constants.rb +164 -164
  7. data/lib/hessian2/fault.rb +3 -3
  8. data/lib/hessian2/handler.rb +18 -18
  9. data/lib/hessian2/hessian_client.rb +3 -3
  10. data/lib/hessian2/parser.rb +619 -619
  11. data/lib/hessian2/type_wrapper.rb +49 -49
  12. data/lib/hessian2/version.rb +3 -3
  13. data/lib/hessian2/writer.rb +499 -499
  14. data/lib/hessian2.rb +14 -14
  15. data/spec/binary_spec.rb +51 -51
  16. data/spec/boolean_spec.rb +26 -26
  17. data/spec/class_wrapper_spec.rb +52 -52
  18. data/spec/create_monkeys.rb +14 -14
  19. data/spec/date_spec.rb +45 -45
  20. data/spec/double_spec.rb +78 -78
  21. data/spec/int_spec.rb +54 -54
  22. data/spec/list_spec.rb +66 -66
  23. data/spec/long_spec.rb +68 -68
  24. data/spec/map_spec.rb +36 -36
  25. data/spec/null_spec.rb +17 -17
  26. data/spec/object_spec.rb +78 -78
  27. data/spec/ref_spec.rb +43 -43
  28. data/spec/spec_helper.rb +23 -23
  29. data/spec/string_spec.rb +61 -61
  30. data/spec/struct_wrapper_spec.rb +47 -47
  31. data/spec/type_wrapper_spec.rb +102 -102
  32. data/test/app.rb +24 -24
  33. data/test/async/em_http_asleep.rb +25 -25
  34. data/test/async/em_http_sleep.rb +25 -25
  35. data/test/async/monkey.asleep.rb +27 -27
  36. data/test/async/mysql2_aquery.rb +37 -37
  37. data/test/fault/monkey.undefined_method.rb +5 -5
  38. data/test/fault/monkey.wrong_arguments.rb +5 -5
  39. data/test/fiber_concurrency/em_http_asleep.rb +17 -17
  40. data/test/fiber_concurrency/em_http_sleep.rb +17 -17
  41. data/test/fiber_concurrency/monkey.asleep.fiber_aware.rb +18 -18
  42. data/test/fiber_concurrency/mysql2_query.rb +29 -29
  43. data/test/fiber_concurrency/net_http_asleep.rb +19 -19
  44. data/test/fiber_concurrency/net_http_sleep.rb +19 -19
  45. data/test/fibered_rainbows/Gemfile +15 -15
  46. data/test/fibered_rainbows/config.ru +11 -11
  47. data/test/fibered_rainbows/rainbows.rb +13 -13
  48. data/test/monkey_service.rb +16 -16
  49. data/test/prepare.rb +7 -7
  50. data/test/thread_concurrency/active_record_execute.rb +29 -29
  51. data/test/thread_concurrency/monkey.asleep.rb +22 -22
  52. data/test/thread_concurrency/net_http_asleep.rb +24 -24
  53. data/test/thread_concurrency/net_http_sleep.rb +24 -24
  54. data/test/threaded_rainbows/Gemfile +13 -13
  55. data/test/threaded_rainbows/config.ru +9 -9
  56. data/test/threaded_rainbows/rainbows.rb +13 -13
  57. metadata +4 -74
@@ -1,164 +1,164 @@
1
- module Hessian2
2
- #=== Hessian 2.0 Web Services Protocol Bytecode map
3
- #
4
- # x00 - x42 # reserved
5
- # x43 # rpc call ('C')
6
- # x44 # reserved
7
- # x45 # envelope ('E')
8
- # x46 # fault ('F')
9
- # x47 # reserved
10
- # x48 # hessian version ('H')
11
- # x49 - x4f # reserved
12
- # x4f # packet chunk ('O')
13
- # x50 # packet end ('P')
14
- # x51 # reserved
15
- # x52 # rpc result ('R')
16
- # x53 - x59 # reserved
17
- # x5a # terminator ('Z')
18
- # x5b - x5f # reserved
19
- # x70 - x7f # final packet (0 - 4096)
20
- # x80 - xff # final packet for envelope (0 - 127)
21
- #
22
- #=== Hessian 2.0 Serialization Protocol Bytecode map
23
- #
24
- # x00 - x1f # utf-8 string length 0-31*
25
- # x20 - x2f # binary data length 0-15*
26
- # x30 - x33 # utf-8 string length 0-1023
27
- # x34 - x37 # binary data length 0-1023
28
- # x38 - x3f # three-octet compact long (-x40000 to x3ffff)
29
- # x40 # reserved (expansion/escape)
30
- # x41 # 8-bit binary data non-final chunk ('A')
31
- # x42 # 8-bit binary data final chunk ('B')
32
- # x43 # object type definition ('C')
33
- # x44 # 64-bit IEEE encoded double ('D')
34
- # x45 # reserved
35
- # x46 # boolean false ('F')
36
- # x47 # reserved
37
- # x48 # untyped map ('H')
38
- # x49 # 32-bit signed integer ('I')
39
- # x4a # 64-bit UTC millisecond date
40
- # x4b # 32-bit UTC minute date
41
- # x4c # 64-bit signed long integer ('L')
42
- # x4d # map with type ('M')
43
- # x4e # null ('N')
44
- # x4f # object instance ('O')
45
- # x50 # reserved
46
- # x51 # reference to map/list/object - integer ('Q')
47
- # x52 # utf-8 string non-final chunk ('R')
48
- # x53 # utf-8 string final chunk ('S')
49
- # x54 # boolean true ('T')
50
- # x55 # variable-length list/vector ('U')
51
- # x56 # fixed-length list/vector ('V')
52
- # x57 # variable-length untyped list/vector ('W')
53
- # x58 # fixed-length untyped list/vector ('X')
54
- # x59 # long encoded as 32-bit int ('Y')
55
- # x5a # list/map terminator ('Z')
56
- # x5b # double 0.0
57
- # x5c # double 1.0
58
- # x5d # double represented as byte (-128.0 to 127.0)
59
- # x5e # double represented as short (-32768.0 to 32767.0)
60
- # x5f # double represented as float
61
- # x60 - x6f # object with direct type
62
- # x70 - x77 # fixed list with direct length
63
- # x78 - x7f # fixed untyped list with direct length
64
- # x80 - xbf # one-octet compact int (-x10 to x2f, x90 is 0)*
65
- # xc0 - xcf # two-octet compact int (-x800 to x7ff)
66
- # xd0 - xd7 # three-octet compact int (-x40000 to x3ffff)
67
- # xd8 - xef # one-octet compact long (-x8 to xf, xe0 is 0)
68
- # xf0 - xff # two-octet compact long (-x800 to x7ff, xf8 is 0)
69
- module Constants
70
- BC_BINARY = 0x42
71
- BC_BINARY_CHUNK = 0x41
72
- BC_BINARY_DIRECT = 0x20
73
- BINARY_DIRECT_MAX = 0x0f
74
- BC_BINARY_SHORT = 0x34
75
- BINARY_SHORT_MAX = 0x3ff
76
-
77
- BC_CLASS_DEF = 0x43
78
-
79
- BC_DATE = 0x4a
80
- BC_DATE_MINUTE = 0x4b
81
-
82
- BC_DOUBLE = 0x44
83
-
84
- BC_DOUBLE_ZERO = 0x5b
85
- BC_DOUBLE_ONE = 0x5c
86
- BC_DOUBLE_BYTE = 0x5d
87
- BC_DOUBLE_SHORT = 0x5e
88
- BC_DOUBLE_MILL = 0x5f
89
-
90
- BC_FALSE = 0x46
91
-
92
- BC_INT = 0x49
93
-
94
- INT_DIRECT_MIN = -0x10
95
- INT_DIRECT_MAX = 0x2f
96
- BC_INT_ZERO = 0x90
97
-
98
- INT_BYTE_MIN = -0x800
99
- INT_BYTE_MAX = 0x7ff
100
- BC_INT_BYTE_ZERO = 0xc8
101
-
102
- BC_END = 0x5a
103
-
104
- INT_SHORT_MIN = -0x40000
105
- INT_SHORT_MAX = 0x3ffff
106
- BC_INT_SHORT_ZERO = 0xd4
107
-
108
- BC_LIST_VARIABLE = 0x55
109
- BC_LIST_FIXED = 0x56
110
- BC_LIST_VARIABLE_UNTYPED = 0x57
111
- BC_LIST_FIXED_UNTYPED = 0x58
112
-
113
- BC_LIST_DIRECT = 0x70
114
- BC_LIST_DIRECT_UNTYPED = 0x78
115
- LIST_DIRECT_MAX = 0x7
116
-
117
- BC_LONG = 0x4c
118
- LONG_DIRECT_MIN = -0x08
119
- LONG_DIRECT_MAX = 0x0f
120
- BC_LONG_ZERO = 0xe0
121
-
122
- LONG_BYTE_MIN = -0x800
123
- LONG_BYTE_MAX = 0x7ff
124
- BC_LONG_BYTE_ZERO = 0xf8
125
-
126
- LONG_SHORT_MIN = -0x40000
127
- LONG_SHORT_MAX = 0x3ffff
128
- BC_LONG_SHORT_ZERO = 0x3c
129
-
130
- BC_LONG_INT = 0x59
131
-
132
- BC_MAP = 0x4d
133
- BC_MAP_UNTYPED = 0x48
134
-
135
- BC_NULL = 0x4e
136
-
137
- BC_OBJECT = 0x4f
138
- BC_OBJECT_DEF = 0x43
139
-
140
- BC_OBJECT_DIRECT = 0x60
141
- OBJECT_DIRECT_MAX = 0x0f
142
-
143
- BC_REF = 0x51
144
-
145
- BC_STRING = 0x53
146
- BC_STRING_CHUNK = 0x52
147
-
148
- BC_STRING_DIRECT = 0x00
149
- STRING_DIRECT_MAX = 0x1f
150
- BC_STRING_SHORT = 0x30
151
- STRING_SHORT_MAX = 0x3ff
152
-
153
- BC_TRUE = 0x54
154
-
155
- P_PACKET_CHUNK = 0x4f
156
- P_PACKET = 0x50
157
-
158
- P_PACKET_DIRECT = 0x80
159
- PACKET_DIRECT_MAX = 0x7f
160
-
161
- P_PACKET_SHORT = 0x70
162
- PACKET_SHORT_MAX = 0xfff
163
- end
164
- end
1
+ module Hessian2
2
+ #=== Hessian 2.0 Web Services Protocol Bytecode map
3
+ #
4
+ # x00 - x42 # reserved
5
+ # x43 # rpc call ('C')
6
+ # x44 # reserved
7
+ # x45 # envelope ('E')
8
+ # x46 # fault ('F')
9
+ # x47 # reserved
10
+ # x48 # hessian version ('H')
11
+ # x49 - x4f # reserved
12
+ # x4f # packet chunk ('O')
13
+ # x50 # packet end ('P')
14
+ # x51 # reserved
15
+ # x52 # rpc result ('R')
16
+ # x53 - x59 # reserved
17
+ # x5a # terminator ('Z')
18
+ # x5b - x5f # reserved
19
+ # x70 - x7f # final packet (0 - 4096)
20
+ # x80 - xff # final packet for envelope (0 - 127)
21
+ #
22
+ #=== Hessian 2.0 Serialization Protocol Bytecode map
23
+ #
24
+ # x00 - x1f # utf-8 string length 0-31*
25
+ # x20 - x2f # binary data length 0-15*
26
+ # x30 - x33 # utf-8 string length 0-1023
27
+ # x34 - x37 # binary data length 0-1023
28
+ # x38 - x3f # three-octet compact long (-x40000 to x3ffff)
29
+ # x40 # reserved (expansion/escape)
30
+ # x41 # 8-bit binary data non-final chunk ('A')
31
+ # x42 # 8-bit binary data final chunk ('B')
32
+ # x43 # object type definition ('C')
33
+ # x44 # 64-bit IEEE encoded double ('D')
34
+ # x45 # reserved
35
+ # x46 # boolean false ('F')
36
+ # x47 # reserved
37
+ # x48 # untyped map ('H')
38
+ # x49 # 32-bit signed integer ('I')
39
+ # x4a # 64-bit UTC millisecond date
40
+ # x4b # 32-bit UTC minute date
41
+ # x4c # 64-bit signed long integer ('L')
42
+ # x4d # map with type ('M')
43
+ # x4e # null ('N')
44
+ # x4f # object instance ('O')
45
+ # x50 # reserved
46
+ # x51 # reference to map/list/object - integer ('Q')
47
+ # x52 # utf-8 string non-final chunk ('R')
48
+ # x53 # utf-8 string final chunk ('S')
49
+ # x54 # boolean true ('T')
50
+ # x55 # variable-length list/vector ('U')
51
+ # x56 # fixed-length list/vector ('V')
52
+ # x57 # variable-length untyped list/vector ('W')
53
+ # x58 # fixed-length untyped list/vector ('X')
54
+ # x59 # long encoded as 32-bit int ('Y')
55
+ # x5a # list/map terminator ('Z')
56
+ # x5b # double 0.0
57
+ # x5c # double 1.0
58
+ # x5d # double represented as byte (-128.0 to 127.0)
59
+ # x5e # double represented as short (-32768.0 to 32767.0)
60
+ # x5f # double represented as float
61
+ # x60 - x6f # object with direct type
62
+ # x70 - x77 # fixed list with direct length
63
+ # x78 - x7f # fixed untyped list with direct length
64
+ # x80 - xbf # one-octet compact int (-x10 to x2f, x90 is 0)*
65
+ # xc0 - xcf # two-octet compact int (-x800 to x7ff)
66
+ # xd0 - xd7 # three-octet compact int (-x40000 to x3ffff)
67
+ # xd8 - xef # one-octet compact long (-x8 to xf, xe0 is 0)
68
+ # xf0 - xff # two-octet compact long (-x800 to x7ff, xf8 is 0)
69
+ module Constants
70
+ BC_BINARY = 0x42
71
+ BC_BINARY_CHUNK = 0x41
72
+ BC_BINARY_DIRECT = 0x20
73
+ BINARY_DIRECT_MAX = 0x0f
74
+ BC_BINARY_SHORT = 0x34
75
+ BINARY_SHORT_MAX = 0x3ff
76
+
77
+ BC_CLASS_DEF = 0x43
78
+
79
+ BC_DATE = 0x4a
80
+ BC_DATE_MINUTE = 0x4b
81
+
82
+ BC_DOUBLE = 0x44
83
+
84
+ BC_DOUBLE_ZERO = 0x5b
85
+ BC_DOUBLE_ONE = 0x5c
86
+ BC_DOUBLE_BYTE = 0x5d
87
+ BC_DOUBLE_SHORT = 0x5e
88
+ BC_DOUBLE_MILL = 0x5f
89
+
90
+ BC_FALSE = 0x46
91
+
92
+ BC_INT = 0x49
93
+
94
+ INT_DIRECT_MIN = -0x10
95
+ INT_DIRECT_MAX = 0x2f
96
+ BC_INT_ZERO = 0x90
97
+
98
+ INT_BYTE_MIN = -0x800
99
+ INT_BYTE_MAX = 0x7ff
100
+ BC_INT_BYTE_ZERO = 0xc8
101
+
102
+ BC_END = 0x5a
103
+
104
+ INT_SHORT_MIN = -0x40000
105
+ INT_SHORT_MAX = 0x3ffff
106
+ BC_INT_SHORT_ZERO = 0xd4
107
+
108
+ BC_LIST_VARIABLE = 0x55
109
+ BC_LIST_FIXED = 0x56
110
+ BC_LIST_VARIABLE_UNTYPED = 0x57
111
+ BC_LIST_FIXED_UNTYPED = 0x58
112
+
113
+ BC_LIST_DIRECT = 0x70
114
+ BC_LIST_DIRECT_UNTYPED = 0x78
115
+ LIST_DIRECT_MAX = 0x7
116
+
117
+ BC_LONG = 0x4c
118
+ LONG_DIRECT_MIN = -0x08
119
+ LONG_DIRECT_MAX = 0x0f
120
+ BC_LONG_ZERO = 0xe0
121
+
122
+ LONG_BYTE_MIN = -0x800
123
+ LONG_BYTE_MAX = 0x7ff
124
+ BC_LONG_BYTE_ZERO = 0xf8
125
+
126
+ LONG_SHORT_MIN = -0x40000
127
+ LONG_SHORT_MAX = 0x3ffff
128
+ BC_LONG_SHORT_ZERO = 0x3c
129
+
130
+ BC_LONG_INT = 0x59
131
+
132
+ BC_MAP = 0x4d
133
+ BC_MAP_UNTYPED = 0x48
134
+
135
+ BC_NULL = 0x4e
136
+
137
+ BC_OBJECT = 0x4f
138
+ BC_OBJECT_DEF = 0x43
139
+
140
+ BC_OBJECT_DIRECT = 0x60
141
+ OBJECT_DIRECT_MAX = 0x0f
142
+
143
+ BC_REF = 0x51
144
+
145
+ BC_STRING = 0x53
146
+ BC_STRING_CHUNK = 0x52
147
+
148
+ BC_STRING_DIRECT = 0x00
149
+ STRING_DIRECT_MAX = 0x1f
150
+ BC_STRING_SHORT = 0x30
151
+ STRING_SHORT_MAX = 0x3ff
152
+
153
+ BC_TRUE = 0x54
154
+
155
+ P_PACKET_CHUNK = 0x4f
156
+ P_PACKET = 0x50
157
+
158
+ P_PACKET_DIRECT = 0x80
159
+ PACKET_DIRECT_MAX = 0x7f
160
+
161
+ P_PACKET_SHORT = 0x70
162
+ PACKET_SHORT_MAX = 0xfff
163
+ end
164
+ end
@@ -1,3 +1,3 @@
1
- module Hessian2
2
- class Fault < RuntimeError; end
3
- end
1
+ module Hessian2
2
+ class Fault < RuntimeError; end
3
+ end
@@ -1,18 +1,18 @@
1
- require 'hessian2'
2
-
3
- module Hessian2
4
- module Handler
5
-
6
- def handle(data)
7
- val = Hessian2.parse_rpc(data)
8
- begin
9
- res = self.send(*val)
10
- rescue NoMethodError, ArgumentError => e
11
- Hessian2.write_fault(e)
12
- else
13
- Hessian2.reply(res)
14
- end
15
- end
16
-
17
- end
18
- end
1
+ require 'hessian2'
2
+
3
+ module Hessian2
4
+ module Handler
5
+
6
+ def handle(data)
7
+ val = Hessian2.parse_rpc(data)
8
+ begin
9
+ res = self.send(*val)
10
+ rescue NoMethodError, ArgumentError => e
11
+ Hessian2.write_fault(e)
12
+ else
13
+ Hessian2.reply(res)
14
+ end
15
+ end
16
+
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
- module Hessian2
2
- class HessianClient < Client; end
3
- end
1
+ module Hessian2
2
+ class HessianClient < Client; end
3
+ end