arya-pandemic 0.4.0 → 0.4.1
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.
data/Rakefile
CHANGED
|
@@ -2,8 +2,8 @@ require 'rubygems'
|
|
|
2
2
|
require 'rake'
|
|
3
3
|
require 'echoe'
|
|
4
4
|
|
|
5
|
-
Echoe.new('pandemic', '0.4.
|
|
6
|
-
p.description = "
|
|
5
|
+
Echoe.new('pandemic', '0.4.1') do |p|
|
|
6
|
+
p.description = "A framework for distributing work for real-time services and offline tasks."
|
|
7
7
|
p.url = "https://github.com/arya/pandemic/"
|
|
8
8
|
p.author = "Arya Asemanfar"
|
|
9
9
|
p.email = "aryaasemanfar@gmail.com"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module Pandemic
|
|
2
2
|
module ClientSide
|
|
3
3
|
class ClusterConnection
|
|
4
|
-
class NotEnoughConnectionsTimeout <
|
|
5
|
-
class NoNodesAvailable <
|
|
6
|
-
class LostConnectionToNode <
|
|
7
|
-
class NodeTimedOut <
|
|
4
|
+
class NotEnoughConnectionsTimeout < StandardError; end
|
|
5
|
+
class NoNodesAvailable < StandardError; end
|
|
6
|
+
class LostConnectionToNode < StandardError; end
|
|
7
|
+
class NodeTimedOut < StandardError; end
|
|
8
8
|
|
|
9
9
|
include Util
|
|
10
10
|
def initialize
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Pandemic
|
|
2
2
|
class ConnectionPool
|
|
3
|
-
class TimedOutWaitingForConnectionException <
|
|
4
|
-
class CreateConnectionUndefinedException <
|
|
3
|
+
class TimedOutWaitingForConnectionException < StandardError; end
|
|
4
|
+
class CreateConnectionUndefinedException < StandardError; end
|
|
5
5
|
include Util
|
|
6
6
|
def initialize(options = {})
|
|
7
7
|
@connected = false
|
|
@@ -62,7 +62,7 @@ module Pandemic
|
|
|
62
62
|
info("Connection to client lost")
|
|
63
63
|
close_connection
|
|
64
64
|
rescue Exception => e
|
|
65
|
-
warn("Unhandled exception in client listen thread
|
|
65
|
+
warn("Unhandled exception in client listen thread:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
66
66
|
ensure
|
|
67
67
|
@current_request.cancel! if @current_request
|
|
68
68
|
@server.client_closed(self)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Pandemic
|
|
2
2
|
module ServerSide
|
|
3
3
|
class Peer
|
|
4
|
-
class PeerUnavailableException <
|
|
4
|
+
class PeerUnavailableException < StandardError; end
|
|
5
5
|
include Util
|
|
6
6
|
attr_reader :host, :port
|
|
7
7
|
|
|
@@ -69,7 +69,7 @@ module Pandemic
|
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
71
|
rescue Exception => e
|
|
72
|
-
warn("Unhandled exception in peer listener thread
|
|
72
|
+
warn("Unhandled exception in peer listener thread:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
73
73
|
ensure
|
|
74
74
|
debug("Incoming connection closing")
|
|
75
75
|
conn.close if conn && !conn.closed?
|
|
@@ -103,7 +103,7 @@ module Pandemic
|
|
|
103
103
|
retry
|
|
104
104
|
end
|
|
105
105
|
rescue Exception => e
|
|
106
|
-
warn("Unhandled exception in create connection block
|
|
106
|
+
warn("Unhandled exception in create connection block:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
107
107
|
end
|
|
108
108
|
if connection
|
|
109
109
|
connection.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) if TCP_NO_DELAY_AVAILABLE
|
|
@@ -128,7 +128,7 @@ module Pandemic
|
|
|
128
128
|
# TODO: what to do here?
|
|
129
129
|
return false
|
|
130
130
|
rescue Exception => e
|
|
131
|
-
warn("Unhandled exception in incoming request read
|
|
131
|
+
warn("Unhandled exception in incoming request read:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
132
132
|
end
|
|
133
133
|
debug("Processing body")
|
|
134
134
|
process_request(hash, request_body)
|
|
@@ -153,7 +153,7 @@ module Pandemic
|
|
|
153
153
|
# TODO: what to do here?
|
|
154
154
|
return false
|
|
155
155
|
rescue Exception => e
|
|
156
|
-
warn("Unhandled exception in incoming response read
|
|
156
|
+
warn("Unhandled exception in incoming response read:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
157
157
|
end
|
|
158
158
|
process_response(hash, response_body)
|
|
159
159
|
else
|
|
@@ -177,7 +177,7 @@ module Pandemic
|
|
|
177
177
|
debug( "Finished sending response (#{hash})")
|
|
178
178
|
end
|
|
179
179
|
rescue Exception => e
|
|
180
|
-
warn("Unhandled exception in process request thread
|
|
180
|
+
warn("Unhandled exception in process request thread:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
181
181
|
end
|
|
182
182
|
end
|
|
183
183
|
end
|
|
@@ -194,7 +194,7 @@ module Pandemic
|
|
|
194
194
|
warn("Original response not found (#{hash})")
|
|
195
195
|
end
|
|
196
196
|
rescue Exception => e
|
|
197
|
-
warn("Unhandled exception in process response thread
|
|
197
|
+
warn("Unhandled exception in process response thread:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
198
198
|
end
|
|
199
199
|
end
|
|
200
200
|
end
|
|
@@ -74,8 +74,9 @@ module Pandemic
|
|
|
74
74
|
@listener.close if @listener
|
|
75
75
|
@peers.values.each { |p| p.disconnect }
|
|
76
76
|
@clients.each {|c| c.close }
|
|
77
|
+
self.processor.disconnect if Config.fork_for_processor
|
|
77
78
|
rescue Exception => e
|
|
78
|
-
warn("Unhandled exception in server listening thread
|
|
79
|
+
warn("Unhandled exception in server listening thread:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
79
80
|
end
|
|
80
81
|
end
|
|
81
82
|
end
|
|
@@ -101,6 +102,7 @@ module Pandemic
|
|
|
101
102
|
debug("Recognized as client")
|
|
102
103
|
@clients_mutex.synchronize do
|
|
103
104
|
@clients << Client.new(connection, self).listen
|
|
105
|
+
@total_clients += 1
|
|
104
106
|
end
|
|
105
107
|
elsif identification =~ /^stats$/
|
|
106
108
|
debug("Stats request received")
|
|
@@ -110,7 +112,7 @@ module Pandemic
|
|
|
110
112
|
connection.close # i dunno you
|
|
111
113
|
end
|
|
112
114
|
rescue Exception => e
|
|
113
|
-
warn("Unhandled exception in handle connection method
|
|
115
|
+
warn("Unhandled exception in handle connection method:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
|
|
114
116
|
end
|
|
115
117
|
end
|
|
116
118
|
|
|
@@ -132,7 +134,7 @@ module Pandemic
|
|
|
132
134
|
begin
|
|
133
135
|
request.add_response(self.process(map[signature]))
|
|
134
136
|
rescue Exception => e
|
|
135
|
-
warn("Unhandled exception in local processing
|
|
137
|
+
warn("Unhandled exception in local processing:\n#{e.inspect}#{e.backtrace.join("\n")}}")
|
|
136
138
|
end
|
|
137
139
|
end
|
|
138
140
|
end
|
data/pandemic.gemspec
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{pandemic}
|
|
5
|
-
s.version = "0.4.
|
|
5
|
+
s.version = "0.4.1"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Arya Asemanfar"]
|
|
9
|
-
s.date = %q{2009-07-
|
|
10
|
-
s.description = %q{
|
|
9
|
+
s.date = %q{2009-07-12}
|
|
10
|
+
s.description = %q{A framework for distributing work for real-time services and offline tasks.}
|
|
11
11
|
s.email = %q{aryaasemanfar@gmail.com}
|
|
12
12
|
s.extra_rdoc_files = ["lib/pandemic/client_side/cluster_connection.rb", "lib/pandemic/client_side/config.rb", "lib/pandemic/client_side/connection.rb", "lib/pandemic/client_side/connection_proxy.rb", "lib/pandemic/client_side/pandemize.rb", "lib/pandemic/connection_pool.rb", "lib/pandemic/mutex_counter.rb", "lib/pandemic/server_side/client.rb", "lib/pandemic/server_side/config.rb", "lib/pandemic/server_side/handler.rb", "lib/pandemic/server_side/peer.rb", "lib/pandemic/server_side/processor.rb", "lib/pandemic/server_side/request.rb", "lib/pandemic/server_side/server.rb", "lib/pandemic/util.rb", "lib/pandemic.rb", "README.markdown"]
|
|
13
13
|
s.files = ["examples/client/client.rb", "examples/client/constitution.txt", "examples/client/pandemic_client.yml", "examples/server/pandemic_server.yml", "examples/server/word_count_server.rb", "lib/pandemic/client_side/cluster_connection.rb", "lib/pandemic/client_side/config.rb", "lib/pandemic/client_side/connection.rb", "lib/pandemic/client_side/connection_proxy.rb", "lib/pandemic/client_side/pandemize.rb", "lib/pandemic/connection_pool.rb", "lib/pandemic/mutex_counter.rb", "lib/pandemic/server_side/client.rb", "lib/pandemic/server_side/config.rb", "lib/pandemic/server_side/handler.rb", "lib/pandemic/server_side/peer.rb", "lib/pandemic/server_side/processor.rb", "lib/pandemic/server_side/request.rb", "lib/pandemic/server_side/server.rb", "lib/pandemic/util.rb", "lib/pandemic.rb", "Manifest", "MIT-LICENSE", "pandemic.gemspec", "Rakefile", "README.markdown", "test/client_test.rb", "test/connection_pool_test.rb", "test/functional_test.rb", "test/handler_test.rb", "test/mutex_counter_test.rb", "test/peer_test.rb", "test/processor_test.rb", "test/server_test.rb", "test/test_helper.rb", "test/util_test.rb"]
|
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
|
16
16
|
s.require_paths = ["lib"]
|
|
17
17
|
s.rubyforge_project = %q{pandemic}
|
|
18
18
|
s.rubygems_version = %q{1.3.4}
|
|
19
|
-
s.summary = %q{
|
|
19
|
+
s.summary = %q{A framework for distributing work for real-time services and offline tasks.}
|
|
20
20
|
s.test_files = ["test/client_test.rb", "test/connection_pool_test.rb", "test/functional_test.rb", "test/handler_test.rb", "test/mutex_counter_test.rb", "test/peer_test.rb", "test/processor_test.rb", "test/server_test.rb", "test/test_helper.rb", "test/util_test.rb"]
|
|
21
21
|
|
|
22
22
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: arya-pandemic
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Arya Asemanfar
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-07-
|
|
12
|
+
date: 2009-07-12 00:00:00 -07:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -32,7 +32,7 @@ dependencies:
|
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: "0"
|
|
34
34
|
version:
|
|
35
|
-
description:
|
|
35
|
+
description: A framework for distributing work for real-time services and offline tasks.
|
|
36
36
|
email: aryaasemanfar@gmail.com
|
|
37
37
|
executables: []
|
|
38
38
|
|
|
@@ -123,7 +123,7 @@ rubyforge_project: pandemic
|
|
|
123
123
|
rubygems_version: 1.2.0
|
|
124
124
|
signing_key:
|
|
125
125
|
specification_version: 3
|
|
126
|
-
summary:
|
|
126
|
+
summary: A framework for distributing work for real-time services and offline tasks.
|
|
127
127
|
test_files:
|
|
128
128
|
- test/client_test.rb
|
|
129
129
|
- test/connection_pool_test.rb
|