propono 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NTI0YmY4MWZjYThiZDUxOGZiMTI0NzQwNWZlMjMyZDE0MjAyOGU5ZQ==
5
- data.tar.gz: !binary |-
6
- NTk0YmM5NThlZjAxNTA2YzUyNGRkOTVjZGRmZTU0MThhMDcwYjlmMQ==
2
+ SHA1:
3
+ metadata.gz: 332f5ce412b16d17e9bf30d7c2615386817e1377
4
+ data.tar.gz: 983a95b42d7666f55880715e23546dcc2bf7d18f
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- MTY5ZjU1YzY5NTYyN2M5MDdiYTc1ZjM5YmJmZWNkMjA4MTFjMDkyODU3YTM4
10
- NmJiYzQ5YTA0YjMzOTNhNjVlZDhlOGMwOWQ2MWE4MDQwMzQ5NDU3NWUxOWQx
11
- YTFiZDhiYmIxNmE0NWMyNTI5NmFhZDk4NDBlZmFhMWNlYTI4Njc=
12
- data.tar.gz: !binary |-
13
- OTM5MWZhNWRlYzg5OWRkOTBhYzA0NjUzNDMwNzYyOGE2MWQ3MTdmZTExNzE2
14
- NWFiMmYxYWU2ZTk3MTBjNDhlYjRjYjhhZmIwYTAxYTE1NTEwZDgyNmFjN2Qw
15
- NzQ5YWMxZTgzNTQ2ZDJjNDk2NjUxYmQ4YTIzN2MxNzEzZmYyOTM=
6
+ metadata.gz: ae13b56849678876c35881f3d89c1bc0883a0d52820cc1a618fe9d009fea5ff0e4030849aaf84ba0a1fe64cccbd7642bf5a81fc8f67e3f307dedf109a0f5ce27
7
+ data.tar.gz: d7cc08ad314c40b8b37c0e7ccf3f34ba4d213f75c08c55fa20881eb21462e65e35f574edfe9cbfe3d23515407aa04e2129605849710681ddfa96b2e44c698863
data/lib/propono.rb CHANGED
@@ -12,6 +12,7 @@ require "propono/services/queue_creator"
12
12
  require "propono/services/queue_listener"
13
13
  require "propono/services/subscriber"
14
14
  require "propono/services/topic_creator"
15
+ require "propono/services/udp_listener"
15
16
 
16
17
  module Propono
17
18
  def self.config
@@ -0,0 +1,42 @@
1
+ module Propono
2
+ class UdpListenerError < StandardError
3
+ end
4
+
5
+ class UdpListener
6
+
7
+ def self.listen(&processor)
8
+ new(&processor).listen
9
+ end
10
+
11
+ def initialize(&processor)
12
+ raise UdpListenerError.new("Please provide a block to call for each message") unless block_given?
13
+ @processor = processor
14
+ end
15
+
16
+ def listen
17
+ loop { receive_and_process }
18
+ end
19
+
20
+ private
21
+
22
+ def receive_and_process
23
+ text = socket.recvfrom(1024)[0]
24
+ Thread.new { @processor.call(text) }
25
+ end
26
+
27
+ def socket
28
+ @socket ||= begin
29
+ socket = UDPSocket.new
30
+ socket.bind(@host, @port)
31
+ socket
32
+ end
33
+ end
34
+
35
+ def config
36
+ Configuration.instance
37
+ end
38
+
39
+ end
40
+ end
41
+
42
+
@@ -1,3 +1,3 @@
1
1
  module Propono
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ module Propono
4
+ class UdpListenerTest < Minitest::Test
5
+
6
+ def test_initialize_should_fail_without_a_block
7
+ assert_raises(UdpListenerError) do
8
+ UdpListener.new
9
+ end
10
+ end
11
+
12
+ def test_message_is_processed
13
+ text = "Foobar123"
14
+ processor = Proc.new {}
15
+ server = UdpListener.new &processor
16
+ socket = mock(recvfrom: [text])
17
+ server.stubs(socket: socket)
18
+ processor.expects(:call).with(text)
19
+ thread = server.send(:receive_and_process)
20
+ thread.join
21
+ end
22
+
23
+ def test_listen_should_loop
24
+ listener = UdpListener.new {}
25
+ listener.expects(:loop)
26
+ listener.listen
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: propono
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - MalcyL
@@ -15,14 +15,14 @@ dependencies:
15
15
  name: fog
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ! '>='
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ! '>='
25
+ - - '>='
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
@@ -43,28 +43,28 @@ dependencies:
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ! '>='
46
+ - - '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ! '>='
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: mocha
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ! '>='
60
+ - - '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ! '>='
67
+ - - '>='
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
@@ -109,6 +109,7 @@ files:
109
109
  - lib/propono/services/queue_listener.rb
110
110
  - lib/propono/services/subscriber.rb
111
111
  - lib/propono/services/topic_creator.rb
112
+ - lib/propono/services/udp_listener.rb
112
113
  - lib/propono/version.rb
113
114
  - propono.gemspec
114
115
  - test/configuration_test.rb
@@ -124,6 +125,7 @@ files:
124
125
  - test/test_helper.rb
125
126
  - test/topic_creator_test.rb
126
127
  - test/topic_test.rb
128
+ - test/udp_listener.rb
127
129
  homepage: ''
128
130
  licenses:
129
131
  - AGPL3
@@ -134,12 +136,12 @@ require_paths:
134
136
  - lib
135
137
  required_ruby_version: !ruby/object:Gem::Requirement
136
138
  requirements:
137
- - - ! '>='
139
+ - - '>='
138
140
  - !ruby/object:Gem::Version
139
141
  version: '0'
140
142
  required_rubygems_version: !ruby/object:Gem::Requirement
141
143
  requirements:
142
- - - ! '>='
144
+ - - '>='
143
145
  - !ruby/object:Gem::Version
144
146
  version: '0'
145
147
  requirements: []
@@ -162,3 +164,4 @@ test_files:
162
164
  - test/test_helper.rb
163
165
  - test/topic_creator_test.rb
164
166
  - test/topic_test.rb
167
+ - test/udp_listener.rb