udpbucket 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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: []