ionian 0.6.5 → 0.6.6

Sign up to get free protection for your applications and to get access to all the features.
data/doc/method_list.html CHANGED
@@ -72,14 +72,14 @@
72
72
 
73
73
 
74
74
  <li class="r1 ">
75
- <span class='object_link'><a href="Ionian/Socket.html#closed%3F-instance_method" title="Ionian::Socket#closed? (method)">#closed?</a></span>
76
- <small>Ionian::Socket</small>
75
+ <span class='object_link'><a href="Ionian/Server.html#closed%3F-instance_method" title="Ionian::Server#closed? (method)">#closed?</a></span>
76
+ <small>Ionian::Server</small>
77
77
  </li>
78
78
 
79
79
 
80
80
  <li class="r2 ">
81
- <span class='object_link'><a href="Ionian/Server.html#closed%3F-instance_method" title="Ionian::Server#closed? (method)">#closed?</a></span>
82
- <small>Ionian::Server</small>
81
+ <span class='object_link'><a href="Ionian/Socket.html#closed%3F-instance_method" title="Ionian::Socket#closed? (method)">#closed?</a></span>
82
+ <small>Ionian::Socket</small>
83
83
  </li>
84
84
 
85
85
 
@@ -144,14 +144,14 @@
144
144
 
145
145
 
146
146
  <li class="r1 ">
147
- <span class='object_link'><a href="Ionian/Extension/IO.html#has_data%3F-instance_method" title="Ionian::Extension::IO#has_data? (method)">#has_data?</a></span>
148
- <small>Ionian::Extension::IO</small>
147
+ <span class='object_link'><a href="Ionian/Socket.html#has_data%3F-instance_method" title="Ionian::Socket#has_data? (method)">#has_data?</a></span>
148
+ <small>Ionian::Socket</small>
149
149
  </li>
150
150
 
151
151
 
152
152
  <li class="r2 ">
153
- <span class='object_link'><a href="Ionian/Socket.html#has_data%3F-instance_method" title="Ionian::Socket#has_data? (method)">#has_data?</a></span>
154
- <small>Ionian::Socket</small>
153
+ <span class='object_link'><a href="Ionian/Extension/IO.html#has_data%3F-instance_method" title="Ionian::Extension::IO#has_data? (method)">#has_data?</a></span>
154
+ <small>Ionian::Extension::IO</small>
155
155
  </li>
156
156
 
157
157
 
@@ -162,14 +162,14 @@
162
162
 
163
163
 
164
164
  <li class="r2 ">
165
- <span class='object_link'><a href="Ionian/Server.html#initialize-instance_method" title="Ionian::Server#initialize (method)">#initialize</a></span>
166
- <small>Ionian::Server</small>
165
+ <span class='object_link'><a href="Ionian/Socket.html#initialize-instance_method" title="Ionian::Socket#initialize (method)">#initialize</a></span>
166
+ <small>Ionian::Socket</small>
167
167
  </li>
168
168
 
169
169
 
170
170
  <li class="r1 ">
171
- <span class='object_link'><a href="Ionian/Socket.html#initialize-instance_method" title="Ionian::Socket#initialize (method)">#initialize</a></span>
172
- <small>Ionian::Socket</small>
171
+ <span class='object_link'><a href="Ionian/Server.html#initialize-instance_method" title="Ionian::Server#initialize (method)">#initialize</a></span>
172
+ <small>Ionian::Server</small>
173
173
  </li>
174
174
 
175
175
 
@@ -186,125 +186,137 @@
186
186
 
187
187
 
188
188
  <li class="r2 ">
189
+ <span class='object_link'><a href="Ionian/Server.html#interface-instance_method" title="Ionian::Server#interface (method)">#interface</a></span>
190
+ <small>Ionian::Server</small>
191
+ </li>
192
+
193
+
194
+ <li class="r1 ">
189
195
  <span class='object_link'><a href="Ionian/Extension/IO.html#ionian_timeout-instance_method" title="Ionian::Extension::IO#ionian_timeout (method)">#ionian_timeout</a></span>
190
196
  <small>Ionian::Extension::IO</small>
191
197
  </li>
192
198
 
193
199
 
194
- <li class="r1 ">
200
+ <li class="r2 ">
195
201
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ip_add_membership-instance_method" title="Ionian::Extension::Socket#ip_add_membership (method)">#ip_add_membership</a></span>
196
202
  <small>Ionian::Extension::Socket</small>
197
203
  </li>
198
204
 
199
205
 
200
- <li class="r2 ">
206
+ <li class="r1 ">
201
207
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ip_drop_membership-instance_method" title="Ionian::Extension::Socket#ip_drop_membership (method)">#ip_drop_membership</a></span>
202
208
  <small>Ionian::Extension::Socket</small>
203
209
  </li>
204
210
 
205
211
 
206
- <li class="r1 ">
212
+ <li class="r2 ">
207
213
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ip_multicast_if-instance_method" title="Ionian::Extension::Socket#ip_multicast_if (method)">#ip_multicast_if</a></span>
208
214
  <small>Ionian::Extension::Socket</small>
209
215
  </li>
210
216
 
211
217
 
212
- <li class="r2 ">
218
+ <li class="r1 ">
213
219
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ip_multicast_if%3D-instance_method" title="Ionian::Extension::Socket#ip_multicast_if= (method)">#ip_multicast_if=</a></span>
214
220
  <small>Ionian::Extension::Socket</small>
215
221
  </li>
216
222
 
217
223
 
218
- <li class="r1 ">
224
+ <li class="r2 ">
219
225
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ip_multicast_loop-instance_method" title="Ionian::Extension::Socket#ip_multicast_loop (method)">#ip_multicast_loop</a></span>
220
226
  <small>Ionian::Extension::Socket</small>
221
227
  </li>
222
228
 
223
229
 
224
- <li class="r2 ">
230
+ <li class="r1 ">
225
231
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ip_multicast_loop%3D-instance_method" title="Ionian::Extension::Socket#ip_multicast_loop= (method)">#ip_multicast_loop=</a></span>
226
232
  <small>Ionian::Extension::Socket</small>
227
233
  </li>
228
234
 
229
235
 
230
- <li class="r1 ">
236
+ <li class="r2 ">
231
237
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ip_multicast_ttl-instance_method" title="Ionian::Extension::Socket#ip_multicast_ttl (method)">#ip_multicast_ttl</a></span>
232
238
  <small>Ionian::Extension::Socket</small>
233
239
  </li>
234
240
 
235
241
 
236
- <li class="r2 ">
242
+ <li class="r1 ">
237
243
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ip_multicast_ttl%3D-instance_method" title="Ionian::Extension::Socket#ip_multicast_ttl= (method)">#ip_multicast_ttl=</a></span>
238
244
  <small>Ionian::Extension::Socket</small>
239
245
  </li>
240
246
 
241
247
 
242
- <li class="r1 ">
248
+ <li class="r2 ">
243
249
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ipv6_add_membership-instance_method" title="Ionian::Extension::Socket#ipv6_add_membership (method)">#ipv6_add_membership</a></span>
244
250
  <small>Ionian::Extension::Socket</small>
245
251
  </li>
246
252
 
247
253
 
248
- <li class="r2 ">
254
+ <li class="r1 ">
249
255
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ipv6_drop_membership-instance_method" title="Ionian::Extension::Socket#ipv6_drop_membership (method)">#ipv6_drop_membership</a></span>
250
256
  <small>Ionian::Extension::Socket</small>
251
257
  </li>
252
258
 
253
259
 
254
- <li class="r1 ">
260
+ <li class="r2 ">
255
261
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ipv6_multicast_hops-instance_method" title="Ionian::Extension::Socket#ipv6_multicast_hops (method)">#ipv6_multicast_hops</a></span>
256
262
  <small>Ionian::Extension::Socket</small>
257
263
  </li>
258
264
 
259
265
 
260
- <li class="r2 ">
266
+ <li class="r1 ">
261
267
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ipv6_multicast_hops%3D-instance_method" title="Ionian::Extension::Socket#ipv6_multicast_hops= (method)">#ipv6_multicast_hops=</a></span>
262
268
  <small>Ionian::Extension::Socket</small>
263
269
  </li>
264
270
 
265
271
 
266
- <li class="r1 ">
272
+ <li class="r2 ">
267
273
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ipv6_multicast_if-instance_method" title="Ionian::Extension::Socket#ipv6_multicast_if (method)">#ipv6_multicast_if</a></span>
268
274
  <small>Ionian::Extension::Socket</small>
269
275
  </li>
270
276
 
271
277
 
272
- <li class="r2 ">
278
+ <li class="r1 ">
273
279
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ipv6_multicast_if%3D-instance_method" title="Ionian::Extension::Socket#ipv6_multicast_if= (method)">#ipv6_multicast_if=</a></span>
274
280
  <small>Ionian::Extension::Socket</small>
275
281
  </li>
276
282
 
277
283
 
278
- <li class="r1 ">
284
+ <li class="r2 ">
279
285
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ipv6_multicast_loop-instance_method" title="Ionian::Extension::Socket#ipv6_multicast_loop (method)">#ipv6_multicast_loop</a></span>
280
286
  <small>Ionian::Extension::Socket</small>
281
287
  </li>
282
288
 
283
289
 
284
- <li class="r2 ">
290
+ <li class="r1 ">
285
291
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ipv6_multicast_loop%3D-instance_method" title="Ionian::Extension::Socket#ipv6_multicast_loop= (method)">#ipv6_multicast_loop=</a></span>
286
292
  <small>Ionian::Extension::Socket</small>
287
293
  </li>
288
294
 
289
295
 
290
- <li class="r1 ">
296
+ <li class="r2 ">
291
297
  <span class='object_link'><a href="Ionian/Extension/Socket.html#linger-instance_method" title="Ionian::Extension::Socket#linger (method)">#linger</a></span>
292
298
  <small>Ionian::Extension::Socket</small>
293
299
  </li>
294
300
 
295
301
 
296
- <li class="r2 ">
302
+ <li class="r1 ">
297
303
  <span class='object_link'><a href="Ionian/Extension/Socket.html#linger%3D-instance_method" title="Ionian::Extension::Socket#linger= (method)">#linger=</a></span>
298
304
  <small>Ionian::Extension::Socket</small>
299
305
  </li>
300
306
 
301
307
 
302
- <li class="r1 ">
308
+ <li class="r2 ">
303
309
  <span class='object_link'><a href="Ionian/Server.html#listen-instance_method" title="Ionian::Server#listen (method)">#listen</a></span>
304
310
  <small>Ionian::Server</small>
305
311
  </li>
306
312
 
307
313
 
314
+ <li class="r1 ">
315
+ <span class='object_link'><a href="Ionian/Extension/Socket.html#multicast-instance_method" title="Ionian::Extension::Socket#multicast (method)">#multicast</a></span>
316
+ <small>Ionian::Extension::Socket</small>
317
+ </li>
318
+
319
+
308
320
  <li class="r2 ">
309
321
  <span class='object_link'><a href="Ionian/Extension/Socket.html#multicast-class_method" title="Ionian::Extension::Socket.multicast (method)">multicast</a></span>
310
322
  <small>Ionian::Extension::Socket</small>
@@ -312,38 +324,38 @@
312
324
 
313
325
 
314
326
  <li class="r1 ">
315
- <span class='object_link'><a href="Ionian/Extension/Socket.html#multicast-instance_method" title="Ionian::Extension::Socket#multicast (method)">#multicast</a></span>
327
+ <span class='object_link'><a href="Ionian/Extension/Socket.html#multicast%3F-class_method" title="Ionian::Extension::Socket.multicast? (method)">multicast?</a></span>
316
328
  <small>Ionian::Extension::Socket</small>
317
329
  </li>
318
330
 
319
331
 
320
332
  <li class="r2 ">
321
- <span class='object_link'><a href="Ionian/Extension/Socket.html#multicast%3F-class_method" title="Ionian::Extension::Socket.multicast? (method)">multicast?</a></span>
333
+ <span class='object_link'><a href="Ionian/Extension/Socket.html#no_delay-instance_method" title="Ionian::Extension::Socket#no_delay (method)">#no_delay</a></span>
322
334
  <small>Ionian::Extension::Socket</small>
323
335
  </li>
324
336
 
325
337
 
326
338
  <li class="r1 ">
327
- <span class='object_link'><a href="Ionian/Extension/Socket.html#no_delay-instance_method" title="Ionian::Extension::Socket#no_delay (method)">#no_delay</a></span>
339
+ <span class='object_link'><a href="Ionian/Extension/Socket.html#no_delay%3D-instance_method" title="Ionian::Extension::Socket#no_delay= (method)">#no_delay=</a></span>
328
340
  <small>Ionian::Extension::Socket</small>
329
341
  </li>
330
342
 
331
343
 
332
344
  <li class="r2 ">
333
- <span class='object_link'><a href="Ionian/Extension/Socket.html#no_delay%3D-instance_method" title="Ionian::Extension::Socket#no_delay= (method)">#no_delay=</a></span>
334
- <small>Ionian::Extension::Socket</small>
345
+ <span class='object_link'><a href="Ionian/Socket.html#persistent%3F-instance_method" title="Ionian::Socket#persistent? (method)">#persistent?</a></span>
346
+ <small>Ionian::Socket</small>
335
347
  </li>
336
348
 
337
349
 
338
350
  <li class="r1 ">
339
- <span class='object_link'><a href="Ionian/Socket.html#persistent%3F-instance_method" title="Ionian::Socket#persistent? (method)">#persistent?</a></span>
351
+ <span class='object_link'><a href="Ionian/Socket.html#port-instance_method" title="Ionian::Socket#port (method)">#port</a></span>
340
352
  <small>Ionian::Socket</small>
341
353
  </li>
342
354
 
343
355
 
344
356
  <li class="r2 ">
345
- <span class='object_link'><a href="Ionian/Socket.html#port-instance_method" title="Ionian::Socket#port (method)">#port</a></span>
346
- <small>Ionian::Socket</small>
357
+ <span class='object_link'><a href="Ionian/Server.html#port-instance_method" title="Ionian::Server#port (method)">#port</a></span>
358
+ <small>Ionian::Server</small>
347
359
  </li>
348
360
 
349
361
 
@@ -354,102 +366,108 @@
354
366
 
355
367
 
356
368
  <li class="r2 ">
369
+ <span class='object_link'><a href="Ionian/Server.html#protocol-instance_method" title="Ionian::Server#protocol (method)">#protocol</a></span>
370
+ <small>Ionian::Server</small>
371
+ </li>
372
+
373
+
374
+ <li class="r1 ">
357
375
  <span class='object_link'><a href="Ionian/Extension/IO.html#purge-instance_method" title="Ionian::Extension::IO#purge (method)">#purge</a></span>
358
376
  <small>Ionian::Extension::IO</small>
359
377
  </li>
360
378
 
361
379
 
362
- <li class="r1 ">
380
+ <li class="r2 ">
363
381
  <span class='object_link'><a href="Ionian/Socket.html#puts-instance_method" title="Ionian::Socket#puts (method)">#puts</a></span>
364
382
  <small>Ionian::Socket</small>
365
383
  </li>
366
384
 
367
385
 
368
- <li class="r2 ">
386
+ <li class="r1 ">
369
387
  <span class='object_link'><a href="Ionian/Extension/IO.html#read_all-instance_method" title="Ionian::Extension::IO#read_all (method)">#read_all</a></span>
370
388
  <small>Ionian::Extension::IO</small>
371
389
  </li>
372
390
 
373
391
 
374
- <li class="r1 ">
392
+ <li class="r2 ">
375
393
  <span class='object_link'><a href="Ionian/Extension/IO.html#read_match-instance_method" title="Ionian::Extension::IO#read_match (method)">#read_match</a></span>
376
394
  <small>Ionian::Extension::IO</small>
377
395
  </li>
378
396
 
379
397
 
380
- <li class="r2 ">
398
+ <li class="r1 ">
381
399
  <span class='object_link'><a href="Ionian/Extension/Socket.html#recork-instance_method" title="Ionian::Extension::Socket#recork (method)">#recork</a></span>
382
400
  <small>Ionian::Extension::Socket</small>
383
401
  </li>
384
402
 
385
403
 
386
- <li class="r1 ">
404
+ <li class="r2 ">
387
405
  <span class='object_link'><a href="Ionian/Server.html#register_accept_listener-instance_method" title="Ionian::Server#register_accept_listener (method)">#register_accept_listener</a></span>
388
406
  <small>Ionian::Server</small>
389
407
  </li>
390
408
 
391
409
 
392
- <li class="r2 ">
410
+ <li class="r1 ">
393
411
  <span class='object_link'><a href="Ionian/Extension/IO.html#register_observer-instance_method" title="Ionian::Extension::IO#register_observer (method)">#register_observer</a></span>
394
412
  <small>Ionian::Extension::IO</small>
395
413
  </li>
396
414
 
397
415
 
398
- <li class="r1 ">
416
+ <li class="r2 ">
399
417
  <span class='object_link'><a href="Ionian/Socket.html#register_observer-instance_method" title="Ionian::Socket#register_observer (method)">#register_observer</a></span>
400
418
  <small>Ionian::Socket</small>
401
419
  </li>
402
420
 
403
421
 
404
- <li class="r2 ">
422
+ <li class="r1 ">
405
423
  <span class='object_link'><a href="Ionian/Extension/Socket.html#reuse_addr-instance_method" title="Ionian::Extension::Socket#reuse_addr (method)">#reuse_addr</a></span>
406
424
  <small>Ionian::Extension::Socket</small>
407
425
  </li>
408
426
 
409
427
 
410
- <li class="r1 ">
428
+ <li class="r2 ">
411
429
  <span class='object_link'><a href="Ionian/Extension/Socket.html#reuse_addr%3D-instance_method" title="Ionian::Extension::Socket#reuse_addr= (method)">#reuse_addr=</a></span>
412
430
  <small>Ionian::Extension::Socket</small>
413
431
  </li>
414
432
 
415
433
 
416
- <li class="r2 ">
434
+ <li class="r1 ">
417
435
  <span class='object_link'><a href="Ionian/Extension/IO.html#run_match-instance_method" title="Ionian::Extension::IO#run_match (method)">#run_match</a></span>
418
436
  <small>Ionian::Extension::IO</small>
419
437
  </li>
420
438
 
421
439
 
422
- <li class="r1 ">
440
+ <li class="r2 ">
423
441
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ttl-instance_method" title="Ionian::Extension::Socket#ttl (method)">#ttl</a></span>
424
442
  <small>Ionian::Extension::Socket</small>
425
443
  </li>
426
444
 
427
445
 
428
- <li class="r2 ">
446
+ <li class="r1 ">
429
447
  <span class='object_link'><a href="Ionian/Extension/Socket.html#ttl%3D-instance_method" title="Ionian::Extension::Socket#ttl= (method)">#ttl=</a></span>
430
448
  <small>Ionian::Extension::Socket</small>
431
449
  </li>
432
450
 
433
451
 
434
- <li class="r1 ">
452
+ <li class="r2 ">
435
453
  <span class='object_link'><a href="Ionian/Server.html#unregister_accept_listener-instance_method" title="Ionian::Server#unregister_accept_listener (method)">#unregister_accept_listener</a></span>
436
454
  <small>Ionian::Server</small>
437
455
  </li>
438
456
 
439
457
 
440
- <li class="r2 ">
458
+ <li class="r1 ">
441
459
  <span class='object_link'><a href="Ionian/Socket.html#unregister_observer-instance_method" title="Ionian::Socket#unregister_observer (method)">#unregister_observer</a></span>
442
460
  <small>Ionian::Socket</small>
443
461
  </li>
444
462
 
445
463
 
446
- <li class="r1 ">
464
+ <li class="r2 ">
447
465
  <span class='object_link'><a href="Ionian/Extension/IO.html#unregister_observer-instance_method" title="Ionian::Extension::IO#unregister_observer (method)">#unregister_observer</a></span>
448
466
  <small>Ionian::Extension::IO</small>
449
467
  </li>
450
468
 
451
469
 
452
- <li class="r2 ">
470
+ <li class="r1 ">
453
471
  <span class='object_link'><a href="Ionian/Socket.html#write-instance_method" title="Ionian::Socket#write (method)">#write</a></span>
454
472
  <small>Ionian::Socket</small>
455
473
  </li>
@@ -103,7 +103,7 @@
103
103
  </div>
104
104
 
105
105
  <div id="footer">
106
- Generated on Fri Apr 11 21:18:17 2014 by
106
+ Generated on Sat Apr 12 13:24:31 2014 by
107
107
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
108
  0.8.7.4 (ruby-2.1.1).
109
109
  </div>
@@ -53,8 +53,11 @@ module Ionian
53
53
 
54
54
  # Read all data in the buffer.
55
55
  # An alternative to using #readpartial with a large length.
56
+ # Blocks until data is available.
56
57
  def read_all
57
- data = ''
58
+ # Block until data has arrived.
59
+ data = readpartial 0xFFFF
60
+ # If there is more data in the buffer, retrieve it nonblocking.
58
61
  data += readpartial 0xFFFF while has_data?
59
62
  data
60
63
  end
data/lib/ionian/server.rb CHANGED
@@ -6,6 +6,18 @@ module Ionian
6
6
  # A convenient wrapper for TCP, UDP, and Unix server sockets.
7
7
  class Server
8
8
 
9
+ # Interface to listen for clients.
10
+ attr_reader :interface
11
+
12
+ # Port number to listen for clients.
13
+ attr_reader :port
14
+
15
+ # Returns a symbol of the type of protocol this socket uses:
16
+ # :tcp, :udp, :unix
17
+ attr_reader :protocol
18
+ alias_method :protocol?, :protocol
19
+
20
+
9
21
  # A convenient wrapper for TCP and Unix server sockets (UDP doesn't use
10
22
  # a server).
11
23
  #
@@ -13,6 +25,7 @@ module Ionian
13
25
  # Server opens listening socket on instantiation if this block is provided.
14
26
  #
15
27
  # Args:
28
+ # port: Port number to listen for clients.
16
29
  # interface: The address of the network interface to bind to.
17
30
  # Defaults to all.
18
31
  # protocol: :tcp, :unix. Default is :tcp.
@@ -20,26 +33,45 @@ module Ionian
20
33
  @accept_listeners = []
21
34
  register_accept_listener &block if block_given?
22
35
 
23
- @interface = kwargs.fetch :interface, ''
36
+ # @interface = kwargs.fetch :interface, nil
37
+ @interface = kwargs.fetch :interface, nil
24
38
  @port = kwargs.fetch :port, nil
25
39
 
26
-
27
40
  # Automatically select UDP for the multicast range. Otherwise default to TCP.
28
41
  default_protocol = :tcp
29
- # TODO: This ivar may be incorrect for UDP -- bound interface is not destination.
30
- default_protocol = :udp if Ionian::Extension::Socket.multicast? @interface
31
- default_protocol = :unix if @interface.start_with? '/'
42
+
43
+ if @interface
44
+ # TODO: This ivar may be incorrect for UDP -- bound interface is not destination.
45
+ default_protocol = :udp if Ionian::Extension::Socket.multicast? @interface
46
+ default_protocol = :unix if @interface.start_with? '/'
47
+ end
32
48
 
33
49
  @protocol = kwargs.fetch :protocol, default_protocol
34
50
 
51
+
35
52
  # TODO: Move this to #listen.
36
53
  case @protocol
37
54
  when :tcp
55
+ @interface ||= '0.0.0.0' # All interfaces.
56
+
57
+ # Parse host out of "host:port" if specified.
58
+ host_port_ary = @interface.to_s.split ':'
59
+ @interface = host_port_ary[0]
60
+ @port ||= host_port_ary[1]
61
+
62
+ # TODO: Parse port from interface if TCP.
63
+ raise ArgumentError, "Port not specified." unless @port
64
+ @port = @port.to_i
65
+
38
66
  @server = TCPServer.new @interface, @port
39
67
  @server.setsockopt ::Socket::SOL_SOCKET, ::Socket::SO_REUSEADDR, [1].pack('i')
68
+
40
69
  when :udp
41
70
  raise ArgumentError, "UDP should be implemented with Ionian::Socket."
71
+
42
72
  when :unix
73
+ raise ArgumentError, "Path not specified." unless @interface
74
+
43
75
  @server = UNIXServer.new @interface
44
76
  end
45
77
 
@@ -93,7 +125,7 @@ module Ionian
93
125
 
94
126
  # Unregisters a socket accept notifier block.
95
127
  def unregister_accept_listener proc
96
- @accept_listeners.delete_if {|o| o == proc}
128
+ @accept_listeners.delete_if { |o| o == proc }
97
129
  proc
98
130
  end
99
131
 
data/lib/ionian/socket.rb CHANGED
@@ -14,10 +14,16 @@ module Ionian
14
14
  # Local port number.
15
15
  attr_reader :bind_port
16
16
 
17
+ # Returns a symbol of the type of protocol this socket uses:
18
+ # :tcp, :udp, :unix
19
+ attr_reader :protocol
20
+ alias_method :protocol?, :protocol
21
+
22
+
17
23
  # Creates a new socket or wraps an existing socket.
18
24
  #
19
25
  # Args:
20
- # host: IP or hostname to connect to.
26
+ # host: IP or hostname to connect to. Can contain the port in the format "host:port".
21
27
  # port: Connection's port number. Default is 23. Unused by :unix protocol.
22
28
  # protocol: Type of socket to create. :tcp, :udp, :unix. Default is :tcp.
23
29
  # :udp will be automatically selected for addresses in the multicast range.
@@ -93,11 +99,6 @@ module Ionian
93
99
  end
94
100
  end
95
101
 
96
- # Returns a symbol of the type of protocol this socket uses:
97
- # :tcp, :udp, :unix
98
- attr_reader :protocol
99
- alias_method :protocol?, :protocol
100
-
101
102
  # Returns the regular expression used to match incoming data.
102
103
  def expression
103
104
  @expression || @socket.expression
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ionian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex McLain
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-11 00:00:00.000000000 Z
11
+ date: 2014-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake