my_queues 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2 @@
1
+ require "my_queues/my_sqs.rb"
2
+ require "my_queues/mock_sqs.rb"
@@ -0,0 +1,33 @@
1
+
2
+ class MockSQS
3
+ def initialize
4
+ @queues={}
5
+ end
6
+ def safe_ruby_string text
7
+ return "'"+text.to_s.gsub(/[']/, '\\\\\'')+"'"
8
+ end
9
+ def send_message(queue_name,message)
10
+ queue = @queues[queue_name]
11
+ if !queue
12
+ queue=[]
13
+ @queues[queue_name]=queue
14
+ end
15
+
16
+ queue<<message
17
+
18
+ end
19
+ def recieve_message(queue_name)
20
+ queue = @queues[queue_name]
21
+ return nil if !queue
22
+ return nil if queue.length==0
23
+ queue.shift
24
+ end
25
+
26
+ def drain(queue_name)
27
+ queue = @queues[queue_name]
28
+ return [] if !queue
29
+ @queues[queue_name]=[]
30
+ return queue
31
+ end
32
+
33
+ end
@@ -0,0 +1,90 @@
1
+
2
+ require 'rubygems'
3
+ require 'sqs'
4
+ require 'cgi'
5
+
6
+
7
+ class MySQS
8
+ def initialize(access_key_id,secret_access_key)
9
+ SQS.access_key_id = access_key_id
10
+ SQS.secret_access_key = secret_access_key
11
+
12
+ end
13
+
14
+ def safe_ruby_string text
15
+ return "'"+text.to_s.gsub(/[']/, '\\\\\'')+"'"
16
+ end
17
+
18
+
19
+ def send_message(queue_name,message)
20
+ queue = SQS.create_queue queue_name
21
+ message=CGI.escape(message)
22
+ 16.times do |i|
23
+ begin
24
+ queue.send_message(message)
25
+ return
26
+ rescue => e
27
+ s= "#{e.message}\n#{e.backtrace}"
28
+ puts(s)#TODO log WARN to file
29
+ sleep(i*i)
30
+ end
31
+ end
32
+ # #TODO log ERROR to file
33
+ end
34
+
35
+
36
+ def recieve_message(queue_name)
37
+ queue = SQS.get_queue queue_name
38
+ message=nil
39
+
40
+ 4.times do |i|
41
+ begin
42
+ message=queue.receive_message
43
+
44
+ rescue => e
45
+ s= "#{e.message}\n#{e.backtrace}"
46
+ puts(s)#TODO log WARN to file
47
+
48
+ sleep(i*i)
49
+ end
50
+ end
51
+ if block_given?
52
+
53
+ begin
54
+ yield message
55
+ ensure
56
+ message.delete if message
57
+ end
58
+ return message
59
+ else
60
+ if message
61
+ message.delete
62
+
63
+ if message.body and message.body.length>0 and !message.body.index("undefined")
64
+ return CGI.unescape( message.body)
65
+ end
66
+
67
+
68
+ end
69
+
70
+
71
+ return nil
72
+ end
73
+ end
74
+
75
+ def drain(queue_name)
76
+ result=[]
77
+ SQS.create_queue queue_name
78
+ while true
79
+ message=recieve_message(queue_name)
80
+ if message
81
+ result<<message
82
+ else
83
+ return result
84
+ end
85
+ end
86
+ end
87
+
88
+ end
89
+
90
+
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: my_queues
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - David Knight
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-10-07 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: my queues.
17
+ email: knight@example.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/my_queues.rb
26
+ - lib/my_queues/my_sqs.rb
27
+ - lib/my_queues/mock_sqs.rb
28
+ has_rdoc: false
29
+ homepage: http://www.yahoo.com/
30
+ post_install_message:
31
+ rdoc_options: []
32
+
33
+ require_paths:
34
+ - lib
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: "0"
40
+ version:
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ requirements: []
48
+
49
+ rubyforge_project:
50
+ rubygems_version: 1.3.1
51
+ signing_key:
52
+ specification_version: 2
53
+ summary: my queues.
54
+ test_files: []
55
+