udpbucket 0.0.5

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3ad8afe38b4578ab4e28b8a80db3a8a11b2c415d
4
+ data.tar.gz: 299f22285d238ab32b54f3ea2cff954f364b1eea
5
+ SHA512:
6
+ metadata.gz: 6b9df121041a8f2f9eed97aada66a7e891c2559f3043e444dc19e09d9204d5685b58dbcac847a570c39929b9a5c62efe32058477d6ef34be0c8c5823a8f9c7c5
7
+ data.tar.gz: 92e6b670a21c7d45cb3bb090cb4ddce87e60992797eb108650939126b4030fb5bab4bdbcad8f9680f11c6fac579a6c0b9b875c3c510253aafc5385bfa9ee5bcd
@@ -0,0 +1,36 @@
1
+ module UDPBucket
2
+ class Core
3
+
4
+ def initialize cfg
5
+ @cfg = cfg
6
+ @debug = @cfg[:debug]
7
+ @localhost = @cfg[:localhost]
8
+ @localport = @cfg[:localport]
9
+ @rx_queue = Queue.new
10
+ @sock = UDPSocket.new
11
+ @sock.bind @localhost, @localport
12
+ end
13
+
14
+ def listen
15
+ enqueue_targets = Thread.new do
16
+ while true do
17
+ r, w, e = IO.select([@sock], nil, nil)
18
+ if r[0]
19
+ buffer, sockaddr = @sock.recvfrom_nonblock(1500)
20
+ @rx_queue << { :client_sock => @sock, :client_ip => sockaddr[3], :client_port => sockaddr[1], :payload => buffer }
21
+ end
22
+ end
23
+ end
24
+ consumer = Thread.new do
25
+ while true do
26
+ begin
27
+ pkt = @rx_queue.pop
28
+ yield pkt
29
+ end
30
+ end
31
+ end
32
+ consumer.join
33
+ end
34
+ end
35
+
36
+ end
data/lib/udpbucket.rb ADDED
@@ -0,0 +1,6 @@
1
+ module UDPBucket
2
+ Directory = File.expand_path File.join File.dirname(__FILE__), '../'
3
+ require 'socket'
4
+ require 'thread'
5
+ require 'udpbucket/core'
6
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: udpbucket
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Samer Abdel-Hafez
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-13 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: a lightweight udp server library
14
+ email:
15
+ - sam@arahant.net
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/udpbucket.rb
21
+ - lib/udpbucket/core.rb
22
+ homepage: http://github.com/nopedial/udpbucket
23
+ licenses: []
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project: udpbucket
41
+ rubygems_version: 2.0.3
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: udpbucket
45
+ test_files: []