maxcube-client 0.5.0 → 0.5.1

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 (95) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -0
  3. data/data/save/20180214-2023/recv.data +12 -0
  4. data/data/save/20180214-2023/recv.yaml +152 -0
  5. data/data/save/20180214-2023/sent.data +10 -0
  6. data/data/save/20180214-2023/sent.yaml +26 -0
  7. data/data/save/20180214-2230/recv.data +2 -0
  8. data/data/save/20180214-2230/recv.yaml +68 -0
  9. data/data/save/20180214-2230/sent.data +1 -0
  10. data/data/save/20180214-2230/sent.yaml +19 -0
  11. data/data/save/20180215-0057/recv.data +3 -0
  12. data/data/save/20180215-0057/recv.yaml +69 -0
  13. data/data/save/20180215-0057/sent.data +2 -0
  14. data/data/save/20180215-0057/sent.yaml +22 -0
  15. data/data/save/20180216-1641/recv.data +4 -0
  16. data/data/save/20180216-1641/recv.yaml +133 -0
  17. data/data/save/20180216-1641/sent.data +2 -0
  18. data/data/save/20180216-1641/sent.yaml +3 -0
  19. data/lib/maxcube/version.rb +1 -1
  20. data/maxcube-client.gemspec +5 -6
  21. data/spec/msg_spec.rb +2117 -0
  22. data/spec/spec_helper.rb +7 -0
  23. metadata +21 -75
  24. data/.gitignore +0 -6
  25. data/.rubocop.yml +0 -29
  26. data/.yardopts +0 -1
  27. data/Gemfile +0 -5
  28. data/bin/console +0 -8
  29. data/bin/maxcube-client +0 -6
  30. data/bin/sample_server +0 -13
  31. data/bin/sample_socket +0 -13
  32. data/bin/setup +0 -6
  33. data/doc/MaxCube.html +0 -502
  34. data/doc/MaxCube/Messages.html +0 -1927
  35. data/doc/MaxCube/Messages/Handler.html +0 -2912
  36. data/doc/MaxCube/Messages/InvalidMessage.html +0 -140
  37. data/doc/MaxCube/Messages/InvalidMessageBody.html +0 -264
  38. data/doc/MaxCube/Messages/InvalidMessageFormat.html +0 -247
  39. data/doc/MaxCube/Messages/InvalidMessageLength.html +0 -247
  40. data/doc/MaxCube/Messages/InvalidMessageType.html +0 -263
  41. data/doc/MaxCube/Messages/Parser.html +0 -520
  42. data/doc/MaxCube/Messages/Serializer.html +0 -701
  43. data/doc/MaxCube/Messages/TCP.html +0 -172
  44. data/doc/MaxCube/Messages/TCP/Handler.html +0 -1396
  45. data/doc/MaxCube/Messages/TCP/Parser.html +0 -462
  46. data/doc/MaxCube/Messages/TCP/Parser/MessageA.html +0 -186
  47. data/doc/MaxCube/Messages/TCP/Parser/MessageC.html +0 -1077
  48. data/doc/MaxCube/Messages/TCP/Parser/MessageF.html +0 -206
  49. data/doc/MaxCube/Messages/TCP/Parser/MessageH.html +0 -338
  50. data/doc/MaxCube/Messages/TCP/Parser/MessageL.html +0 -535
  51. data/doc/MaxCube/Messages/TCP/Parser/MessageM.html +0 -510
  52. data/doc/MaxCube/Messages/TCP/Parser/MessageN.html +0 -226
  53. data/doc/MaxCube/Messages/TCP/Parser/MessageS.html +0 -225
  54. data/doc/MaxCube/Messages/TCP/Serializer.html +0 -460
  55. data/doc/MaxCube/Messages/TCP/Serializer/MessageA.html +0 -186
  56. data/doc/MaxCube/Messages/TCP/Serializer/MessageC.html +0 -185
  57. data/doc/MaxCube/Messages/TCP/Serializer/MessageF.html +0 -206
  58. data/doc/MaxCube/Messages/TCP/Serializer/MessageL.html +0 -185
  59. data/doc/MaxCube/Messages/TCP/Serializer/MessageM.html +0 -428
  60. data/doc/MaxCube/Messages/TCP/Serializer/MessageN.html +0 -209
  61. data/doc/MaxCube/Messages/TCP/Serializer/MessageQ.html +0 -185
  62. data/doc/MaxCube/Messages/TCP/Serializer/MessageS.html +0 -1168
  63. data/doc/MaxCube/Messages/TCP/Serializer/MessageT.html +0 -240
  64. data/doc/MaxCube/Messages/TCP/Serializer/MessageU.html +0 -206
  65. data/doc/MaxCube/Messages/TCP/Serializer/MessageZ.html +0 -252
  66. data/doc/MaxCube/Messages/UDP.html +0 -164
  67. data/doc/MaxCube/Messages/UDP/Handler.html +0 -832
  68. data/doc/MaxCube/Messages/UDP/Parser.html +0 -609
  69. data/doc/MaxCube/Messages/UDP/Parser/MessageH.html +0 -218
  70. data/doc/MaxCube/Messages/UDP/Parser/MessageI.html +0 -215
  71. data/doc/MaxCube/Messages/UDP/Parser/MessageN.html +0 -226
  72. data/doc/MaxCube/Messages/UDP/Serializer.html +0 -484
  73. data/doc/MaxCube/Network.html +0 -167
  74. data/doc/MaxCube/Network/TCP.html +0 -150
  75. data/doc/MaxCube/Network/TCP/Client.html +0 -1930
  76. data/doc/MaxCube/Network/TCP/Client/Commands.html +0 -2457
  77. data/doc/MaxCube/Network/TCP/SampleServer.html +0 -910
  78. data/doc/MaxCube/Network/UDP.html +0 -150
  79. data/doc/MaxCube/Network/UDP/Client.html +0 -518
  80. data/doc/MaxCube/Network/UDP/SampleSocket.html +0 -628
  81. data/doc/MaxCube/Runner.html +0 -355
  82. data/doc/_index.html +0 -518
  83. data/doc/class_list.html +0 -51
  84. data/doc/css/common.css +0 -1
  85. data/doc/css/full_list.css +0 -58
  86. data/doc/css/style.css +0 -499
  87. data/doc/file.README.html +0 -140
  88. data/doc/file_list.html +0 -56
  89. data/doc/frames.html +0 -17
  90. data/doc/index.html +0 -140
  91. data/doc/js/app.js +0 -248
  92. data/doc/js/full_list.js +0 -216
  93. data/doc/js/jquery.js +0 -4
  94. data/doc/method_list.html +0 -1699
  95. data/doc/top-level-namespace.html +0 -110
@@ -1,520 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Module: MaxCube::Messages::Parser
8
-
9
- &mdash; Documentation by YARD 0.9.12
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../../css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="../../css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- pathId = "MaxCube::Messages::Parser";
19
- relpath = '../../';
20
- </script>
21
-
22
-
23
- <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
-
25
- <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
-
27
-
28
- </head>
29
- <body>
30
- <div class="nav_wrap">
31
- <iframe id="nav" src="../../class_list.html?1"></iframe>
32
- <div id="resizer"></div>
33
- </div>
34
-
35
- <div id="main" tabindex="-1">
36
- <div id="header">
37
- <div id="menu">
38
-
39
- <a href="../../_index.html">Index (P)</a> &raquo;
40
- <span class='title'><span class='object_link'><a href="../../MaxCube.html" title="MaxCube (module)">MaxCube</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Messages.html" title="MaxCube::Messages (module)">Messages</a></span></span>
41
- &raquo;
42
- <span class="title">Parser</span>
43
-
44
- </div>
45
-
46
- <div id="search">
47
-
48
- <a class="full_list_link" id="class_list_link"
49
- href="../../class_list.html">
50
-
51
- <svg width="24" height="24">
52
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
- </svg>
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <div id="content"><h1>Module: MaxCube::Messages::Parser
63
-
64
-
65
-
66
- </h1>
67
- <div class="box_info">
68
-
69
-
70
-
71
-
72
-
73
-
74
- <dl>
75
- <dt>Includes:</dt>
76
- <dd><span class='object_link'><a href="Handler.html" title="MaxCube::Messages::Handler (module)">Handler</a></span></dd>
77
- </dl>
78
-
79
-
80
-
81
-
82
- <dl>
83
- <dt>Included in:</dt>
84
- <dd><span class='object_link'><a href="TCP/Parser.html" title="MaxCube::Messages::TCP::Parser (class)">TCP::Parser</a></span>, <span class='object_link'><a href="UDP/Parser.html" title="MaxCube::Messages::UDP::Parser (class)">UDP::Parser</a></span></dd>
85
- </dl>
86
-
87
-
88
-
89
- <dl>
90
- <dt>Defined in:</dt>
91
- <dd>lib/maxcube/messages/parser.rb</dd>
92
- </dl>
93
-
94
- </div>
95
-
96
- <h2>Overview</h2><div class="docstring">
97
- <div class="discussion">
98
-
99
- <p>This module provides methods connected to message parsing only (i.e.
100
- direction Cube -&gt; client).</p>
101
-
102
-
103
- </div>
104
- </div>
105
- <div class="tags">
106
-
107
-
108
- </div>
109
-
110
-
111
- <h2>Constant Summary</h2>
112
-
113
- <h3 class="inherited">Constants included
114
- from <span class='object_link'><a href="Handler.html" title="MaxCube::Messages::Handler (module)">Handler</a></span></h3>
115
- <p class="inherited"><span class='object_link'><a href="Handler.html#PACK_FORMAT-constant" title="MaxCube::Messages::Handler::PACK_FORMAT (constant)">Handler::PACK_FORMAT</a></span></p>
116
-
117
-
118
-
119
- <h3 class="inherited">Constants included
120
- from <span class='object_link'><a href="../Messages.html" title="MaxCube::Messages (module)">MaxCube::Messages</a></span></h3>
121
- <p class="inherited"><span class='object_link'><a href="../Messages.html#DAYS_OF_WEEK-constant" title="MaxCube::Messages::DAYS_OF_WEEK (constant)">DAYS_OF_WEEK</a></span>, <span class='object_link'><a href="../Messages.html#DEVICE_MODE-constant" title="MaxCube::Messages::DEVICE_MODE (constant)">DEVICE_MODE</a></span>, <span class='object_link'><a href="../Messages.html#DEVICE_TYPE-constant" title="MaxCube::Messages::DEVICE_TYPE (constant)">DEVICE_TYPE</a></span></p>
122
-
123
-
124
-
125
-
126
-
127
-
128
- <h2>
129
- Instance Method Summary
130
- <small><a href="#" class="summary_toggle">collapse</a></small>
131
- </h2>
132
-
133
- <ul class="summary">
134
-
135
- <li class="public ">
136
- <span class="summary_signature">
137
-
138
- <a href="#parse_msg_body-instance_method" title="#parse_msg_body (instance method)">#<strong>parse_msg_body</strong>(body, hash, parser_type) &#x21d2; Hash<sup>?</sup> </a>
139
-
140
-
141
-
142
- </span>
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
-
151
-
152
- <span class="summary_desc"><div class='inline'>
153
- <p>Parses message body, i.e.</p>
154
- </div></span>
155
-
156
- </li>
157
-
158
-
159
- <li class="public ">
160
- <span class="summary_signature">
161
-
162
- <a href="#read-instance_method" title="#read (instance method)">#<strong>read</strong>(count = 0, unpack = false) &#x21d2; String, Integer </a>
163
-
164
-
165
-
166
- </span>
167
-
168
-
169
-
170
-
171
-
172
-
173
-
174
-
175
-
176
- <span class="summary_desc"><div class='inline'>
177
- <p>This method should be used each time any <code>IO</code> is read, which is
178
- very useful for parsing purposes.</p>
179
- </div></span>
180
-
181
- </li>
182
-
183
-
184
- </ul>
185
-
186
-
187
-
188
-
189
-
190
-
191
-
192
-
193
-
194
-
195
-
196
- <h3 class="inherited">Methods included from <span class='object_link'><a href="Handler.html" title="MaxCube::Messages::Handler (module)">Handler</a></span></h3>
197
- <p class="inherited"><span class='object_link'><a href="Handler.html#check_data_type-instance_method" title="MaxCube::Messages::Handler#check_data_type (method)">#check_data_type</a></span>, <span class='object_link'><a href="Handler.html#check_hash-instance_method" title="MaxCube::Messages::Handler#check_hash (method)">#check_hash</a></span>, <span class='object_link'><a href="Handler.html#check_hash_keys-instance_method" title="MaxCube::Messages::Handler#check_hash_keys (method)">#check_hash_keys</a></span>, <span class='object_link'><a href="Handler.html#check_hash_msg_type-instance_method" title="MaxCube::Messages::Handler#check_hash_msg_type (method)">#check_hash_msg_type</a></span>, <span class='object_link'><a href="Handler.html#check_hash_values-instance_method" title="MaxCube::Messages::Handler#check_hash_values (method)">#check_hash_values</a></span>, <span class='object_link'><a href="Handler.html#check_msg-instance_method" title="MaxCube::Messages::Handler#check_msg (method)">#check_msg</a></span>, <span class='object_link'><a href="Handler.html#check_msg_msg_type-instance_method" title="MaxCube::Messages::Handler#check_msg_msg_type (method)">#check_msg_msg_type</a></span>, <span class='object_link'><a href="Handler.html#check_msg_part_lengths-instance_method" title="MaxCube::Messages::Handler#check_msg_part_lengths (method)">#check_msg_part_lengths</a></span>, <span class='object_link'><a href="Handler.html#check_msg_type-instance_method" title="MaxCube::Messages::Handler#check_msg_type (method)">#check_msg_type</a></span>, <span class='object_link'><a href="Handler.html#decode-instance_method" title="MaxCube::Messages::Handler#decode (method)">#decode</a></span>, <span class='object_link'><a href="Handler.html#encode-instance_method" title="MaxCube::Messages::Handler#encode (method)">#encode</a></span>, <span class='object_link'><a href="Handler.html#maybe_check_valid_hash_keys-instance_method" title="MaxCube::Messages::Handler#maybe_check_valid_hash_keys (method)">#maybe_check_valid_hash_keys</a></span>, <span class='object_link'><a href="Handler.html#maybe_check_valid_msg_type-instance_method" title="MaxCube::Messages::Handler#maybe_check_valid_msg_type (method)">#maybe_check_valid_msg_type</a></span>, <span class='object_link'><a href="Handler.html#msg_type_hash_keys-instance_method" title="MaxCube::Messages::Handler#msg_type_hash_keys (method)">#msg_type_hash_keys</a></span>, <span class='object_link'><a href="Handler.html#msg_type_hash_opt_keys-instance_method" title="MaxCube::Messages::Handler#msg_type_hash_opt_keys (method)">#msg_type_hash_opt_keys</a></span>, <span class='object_link'><a href="Handler.html#msg_type_which_hash_keys-instance_method" title="MaxCube::Messages::Handler#msg_type_which_hash_keys (method)">#msg_type_which_hash_keys</a></span>, <span class='object_link'><a href="Handler.html#msg_types-instance_method" title="MaxCube::Messages::Handler#msg_types (method)">#msg_types</a></span>, <span class='object_link'><a href="Handler.html#valid_data_type-instance_method" title="MaxCube::Messages::Handler#valid_data_type (method)">#valid_data_type</a></span>, <span class='object_link'><a href="Handler.html#valid_hash-instance_method" title="MaxCube::Messages::Handler#valid_hash (method)">#valid_hash</a></span>, <span class='object_link'><a href="Handler.html#valid_hash_keys-instance_method" title="MaxCube::Messages::Handler#valid_hash_keys (method)">#valid_hash_keys</a></span>, <span class='object_link'><a href="Handler.html#valid_hash_msg_type-instance_method" title="MaxCube::Messages::Handler#valid_hash_msg_type (method)">#valid_hash_msg_type</a></span>, <span class='object_link'><a href="Handler.html#valid_hash_values-instance_method" title="MaxCube::Messages::Handler#valid_hash_values (method)">#valid_hash_values</a></span>, <span class='object_link'><a href="Handler.html#valid_msg-instance_method" title="MaxCube::Messages::Handler#valid_msg (method)">#valid_msg</a></span>, <span class='object_link'><a href="Handler.html#valid_msg_msg_type-instance_method" title="MaxCube::Messages::Handler#valid_msg_msg_type (method)">#valid_msg_msg_type</a></span>, <span class='object_link'><a href="Handler.html#valid_msg_part_lengths-instance_method" title="MaxCube::Messages::Handler#valid_msg_part_lengths (method)">#valid_msg_part_lengths</a></span>, <span class='object_link'><a href="Handler.html#valid_msg_type-instance_method" title="MaxCube::Messages::Handler#valid_msg_type (method)">#valid_msg_type</a></span></p>
198
-
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
- <h3 class="inherited">Methods included from <span class='object_link'><a href="../Messages.html" title="MaxCube::Messages (module)">MaxCube::Messages</a></span></h3>
208
- <p class="inherited"><span class='object_link'><a href="../Messages.html#ary_elem-instance_method" title="MaxCube::Messages#ary_elem (method)">#ary_elem</a></span>, <span class='object_link'><a href="../Messages.html#ary_elem_id-instance_method" title="MaxCube::Messages#ary_elem_id (method)">#ary_elem_id</a></span>, <span class='object_link'><a href="../Messages.html#conv_args-instance_method" title="MaxCube::Messages#conv_args (method)">#conv_args</a></span>, <span class='object_link'><a href="../Messages.html#day_of_week-instance_method" title="MaxCube::Messages#day_of_week (method)">#day_of_week</a></span>, <span class='object_link'><a href="../Messages.html#day_of_week_id-instance_method" title="MaxCube::Messages#day_of_week_id (method)">#day_of_week_id</a></span>, <span class='object_link'><a href="../Messages.html#device_mode-instance_method" title="MaxCube::Messages#device_mode (method)">#device_mode</a></span>, <span class='object_link'><a href="../Messages.html#device_mode_id-instance_method" title="MaxCube::Messages#device_mode_id (method)">#device_mode_id</a></span>, <span class='object_link'><a href="../Messages.html#device_type-instance_method" title="MaxCube::Messages#device_type (method)">#device_type</a></span>, <span class='object_link'><a href="../Messages.html#device_type_id-instance_method" title="MaxCube::Messages#device_type_id (method)">#device_type_id</a></span>, <span class='object_link'><a href="../Messages.html#to_bool-instance_method" title="MaxCube::Messages#to_bool (method)">#to_bool</a></span>, <span class='object_link'><a href="../Messages.html#to_bools-instance_method" title="MaxCube::Messages#to_bools (method)">#to_bools</a></span>, <span class='object_link'><a href="../Messages.html#to_datetime-instance_method" title="MaxCube::Messages#to_datetime (method)">#to_datetime</a></span>, <span class='object_link'><a href="../Messages.html#to_datetimes-instance_method" title="MaxCube::Messages#to_datetimes (method)">#to_datetimes</a></span>, <span class='object_link'><a href="../Messages.html#to_float-instance_method" title="MaxCube::Messages#to_float (method)">#to_float</a></span>, <span class='object_link'><a href="../Messages.html#to_floats-instance_method" title="MaxCube::Messages#to_floats (method)">#to_floats</a></span>, <span class='object_link'><a href="../Messages.html#to_int-instance_method" title="MaxCube::Messages#to_int (method)">#to_int</a></span>, <span class='object_link'><a href="../Messages.html#to_ints-instance_method" title="MaxCube::Messages#to_ints (method)">#to_ints</a></span></p>
209
-
210
-
211
- <div id="instance_method_details" class="method_details_list">
212
- <h2>Instance Method Details</h2>
213
-
214
-
215
- <div class="method_details first">
216
- <h3 class="signature first" id="parse_msg_body-instance_method">
217
-
218
- #<strong>parse_msg_body</strong>(body, hash, parser_type) &#x21d2; <tt>Hash</tt><sup>?</sup>
219
-
220
-
221
-
222
-
223
-
224
- </h3><div class="docstring">
225
- <div class="discussion">
226
-
227
- <p>Parses message body, i.e. at least message type is already decoded. It
228
- dynamically calls method corresponding to message and parser type. If
229
- message type is not implemented yet, read data is stored as is. It
230
- transforms unhandled <code>IOError</code> exceptions (probably raised from
231
- <span class='object_link'><a href="#read-instance_method" title="MaxCube::Messages::Parser#read (method)">#read</a></span>) to <span class='object_link'><a href="InvalidMessageBody.html" title="MaxCube::Messages::InvalidMessageBody (class)">InvalidMessageBody</a></span>.</p>
232
-
233
-
234
- </div>
235
- </div>
236
- <div class="tags">
237
- <p class="tag_title">Parameters:</p>
238
- <ul class="param">
239
-
240
- <li>
241
-
242
- <span class='name'>body</span>
243
-
244
-
245
- <span class='type'>(<tt>String</tt>)</span>
246
-
247
-
248
-
249
- &mdash;
250
- <div class='inline'>
251
- <p>message body to be parsed.</p>
252
- </div>
253
-
254
- </li>
255
-
256
- <li>
257
-
258
- <span class='name'>hash</span>
259
-
260
-
261
- <span class='type'>(<tt>Hash</tt>)</span>
262
-
263
-
264
-
265
- &mdash;
266
- <div class='inline'>
267
- <p>hash to store parsed data into. It should already contain contents of
268
- message head. Hash will be modified.</p>
269
- </div>
270
-
271
- </li>
272
-
273
- <li>
274
-
275
- <span class='name'>parser_type</span>
276
-
277
-
278
- <span class='type'>(<tt>String</tt>)</span>
279
-
280
-
281
-
282
- &mdash;
283
- <div class='inline'>
284
- <p>parser type contained in method identifiers.</p>
285
- </div>
286
-
287
- </li>
288
-
289
- </ul>
290
-
291
- <p class="tag_title">Returns:</p>
292
- <ul class="return">
293
-
294
- <li>
295
-
296
-
297
- <span class='type'>(<tt>Hash</tt>, <tt>nil</tt>)</span>
298
-
299
-
300
-
301
- &mdash;
302
- <div class='inline'>
303
- <p>resulting hash, or <code>nil</code> in case the message type is not
304
- implemented yet.</p>
305
- </div>
306
-
307
- </li>
308
-
309
- </ul>
310
- <p class="tag_title">Raises:</p>
311
- <ul class="raise">
312
-
313
- <li>
314
-
315
-
316
- <span class='type'>(<tt><span class='object_link'><a href="InvalidMessageBody.html" title="MaxCube::Messages::InvalidMessageBody (class)">InvalidMessageBody</a></span></tt>)</span>
317
-
318
-
319
-
320
- &mdash;
321
- <div class='inline'>
322
- <p>if <code>IOError</code> catched.</p>
323
- </div>
324
-
325
- </li>
326
-
327
- </ul>
328
-
329
- </div><table class="source_code">
330
- <tr>
331
- <td>
332
- <pre class="lines">
333
-
334
-
335
- 52
336
- 53
337
- 54
338
- 55
339
- 56
340
- 57
341
- 58
342
- 59
343
- 60
344
- 61
345
- 62</pre>
346
- </td>
347
- <td>
348
- <pre class="code"><span class="info file"># File 'lib/maxcube/messages/parser.rb', line 52</span>
349
-
350
- <span class='kw'>def</span> <span class='id identifier rubyid_parse_msg_body'>parse_msg_body</span><span class='lparen'>(</span><span class='id identifier rubyid_body'>body</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span><span class='comma'>,</span> <span class='id identifier rubyid_parser_type'>parser_type</span><span class='rparen'>)</span>
351
- <span class='id identifier rubyid_method_str'>method_str</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>parse_</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_parser_type'>parser_type</span><span class='embexpr_end'>}</span><span class='tstring_content'>_</span><span class='embexpr_beg'>#{</span><span class='ivar'>@msg_type</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
352
- <span class='kw'>if</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_method_str'>method_str</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span>
353
- <span class='kw'>return</span> <span class='id identifier rubyid_hash'>hash</span><span class='period'>.</span><span class='id identifier rubyid_merge!'>merge!</span><span class='lparen'>(</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_method_str'>method_str</span><span class='comma'>,</span> <span class='id identifier rubyid_body'>body</span><span class='rparen'>)</span><span class='rparen'>)</span>
354
- <span class='kw'>end</span>
355
- <span class='id identifier rubyid_hash'>hash</span><span class='lbracket'>[</span><span class='symbol'>:data</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_body'>body</span>
356
- <span class='kw'>nil</span>
357
- <span class='kw'>rescue</span> <span class='const'>IOError</span>
358
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="InvalidMessageBody.html" title="MaxCube::Messages::InvalidMessageBody (class)">InvalidMessageBody</a></span></span>
359
- <span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@msg_type</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>unexpected EOF reached</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
360
- <span class='kw'>end</span></pre>
361
- </td>
362
- </tr>
363
- </table>
364
- </div>
365
-
366
- <div class="method_details ">
367
- <h3 class="signature " id="read-instance_method">
368
-
369
- #<strong>read</strong>(count = 0, unpack = false) &#x21d2; <tt>String</tt>, <tt>Integer</tt>
370
-
371
-
372
-
373
-
374
-
375
- </h3><div class="docstring">
376
- <div class="discussion">
377
-
378
- <p>This method should be used each time any <code>IO</code> is read, which is
379
- very useful for parsing purposes. It contains optional implicit conversion
380
- of binary string data of certain length into integers (using <span class='object_link'><a href="Handler.html#PACK_FORMAT-constant" title="MaxCube::Messages::Handler::PACK_FORMAT (constant)">Handler::PACK_FORMAT</a></span>)
381
- or into any other explicit format that String#unpack understands. In
382
- addition, it checks whether the read operation succeeded and raises an
383
- exception if not (this is useful when parsing a message of a specified
384
- format).</p>
385
-
386
-
387
- </div>
388
- </div>
389
- <div class="tags">
390
- <p class="tag_title">Parameters:</p>
391
- <ul class="param">
392
-
393
- <li>
394
-
395
- <span class='name'>count</span>
396
-
397
-
398
- <span class='type'>(<tt>Integer</tt>)</span>
399
-
400
-
401
- <em class="default">(defaults to: <tt>0</tt>)</em>
402
-
403
-
404
- &mdash;
405
- <div class='inline'>
406
- <p>number of bytes to read. 0 causes to read until EOF.</p>
407
- </div>
408
-
409
- </li>
410
-
411
- <li>
412
-
413
- <span class='name'>unpack</span>
414
-
415
-
416
- <span class='type'>(<tt>Boolean</tt>, <tt>String</tt>)</span>
417
-
418
-
419
- <em class="default">(defaults to: <tt>false</tt>)</em>
420
-
421
-
422
- &mdash;
423
- <div class='inline'>
424
- <p>if <code>true</code> it does implicit conversion to integer; if String, the
425
- format is passed to String#unpack as is.</p>
426
- </div>
427
-
428
- </li>
429
-
430
- </ul>
431
-
432
- <p class="tag_title">Returns:</p>
433
- <ul class="return">
434
-
435
- <li>
436
-
437
-
438
- <span class='type'>(<tt>String</tt>, <tt>Integer</tt>)</span>
439
-
440
-
441
-
442
- &mdash;
443
- <div class='inline'>
444
- <p>read data; its type depends on <code>unpack</code>.</p>
445
- </div>
446
-
447
- </li>
448
-
449
- </ul>
450
- <p class="tag_title">Raises:</p>
451
- <ul class="raise">
452
-
453
- <li>
454
-
455
-
456
- <span class='type'>(<tt>IOError</tt>)</span>
457
-
458
-
459
-
460
- &mdash;
461
- <div class='inline'>
462
- <p>if reading failed (incl. that nothing was read).</p>
463
- </div>
464
-
465
- </li>
466
-
467
- </ul>
468
-
469
- </div><table class="source_code">
470
- <tr>
471
- <td>
472
- <pre class="lines">
473
-
474
-
475
- 26
476
- 27
477
- 28
478
- 29
479
- 30
480
- 31
481
- 32
482
- 33
483
- 34
484
- 35
485
- 36
486
- 37</pre>
487
- </td>
488
- <td>
489
- <pre class="code"><span class="info file"># File 'lib/maxcube/messages/parser.rb', line 26</span>
490
-
491
- <span class='kw'>def</span> <span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span> <span class='op'>=</span> <span class='int'>0</span><span class='comma'>,</span> <span class='id identifier rubyid_unpack'>unpack</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
492
- <span class='id identifier rubyid_str'>str</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_count'>count</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
493
- <span class='ivar'>@io</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span>
494
- <span class='kw'>else</span>
495
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>IOError</span> <span class='kw'>if</span> <span class='ivar'>@io</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>-</span> <span class='ivar'>@io</span><span class='period'>.</span><span class='id identifier rubyid_pos'>pos</span> <span class='op'>&lt;</span> <span class='id identifier rubyid_count'>count</span>
496
- <span class='ivar'>@io</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='id identifier rubyid_count'>count</span><span class='rparen'>)</span>
497
- <span class='kw'>end</span>
498
- <span class='kw'>return</span> <span class='id identifier rubyid_str'>str</span> <span class='kw'>unless</span> <span class='id identifier rubyid_unpack'>unpack</span>
499
- <span class='id identifier rubyid_str'>str</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\x00</span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_b'>b</span> <span class='op'>+</span> <span class='id identifier rubyid_str'>str</span> <span class='kw'>if</span> <span class='id identifier rubyid_count'>count</span> <span class='op'>==</span> <span class='int'>3</span>
500
- <span class='id identifier rubyid_unpack'>unpack</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Handler.html#PACK_FORMAT-constant" title="MaxCube::Messages::Handler::PACK_FORMAT (constant)">PACK_FORMAT</a></span></span><span class='lbracket'>[</span><span class='id identifier rubyid_count'>count</span><span class='rbracket'>]</span> <span class='kw'>unless</span> <span class='id identifier rubyid_unpack'>unpack</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span>
501
- <span class='id identifier rubyid_str'>str</span><span class='period'>.</span><span class='id identifier rubyid_unpack1'>unpack1</span><span class='lparen'>(</span><span class='id identifier rubyid_unpack'>unpack</span><span class='rparen'>)</span>
502
- <span class='kw'>end</span></pre>
503
- </td>
504
- </tr>
505
- </table>
506
- </div>
507
-
508
- </div>
509
-
510
- </div>
511
-
512
- <div id="footer">
513
- Generated on Fri Feb 16 13:44:01 2018 by
514
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
515
- 0.9.12 (ruby-2.5.0).
516
- </div>
517
-
518
- </div>
519
- </body>
520
- </html>