arya-pandemic 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('pandemic', '0.5.2') do |p|
5
+ Echoe.new('pandemic', '0.5.3') do |p|
6
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"
@@ -40,7 +40,7 @@ module Pandemic
40
40
  @connection_pool.with_connection do |connection|
41
41
  if connection && !connection.closed?
42
42
  # debug("Writing client's request")
43
- connection.write("PROCESS #{request.hash} #{body.size}\n#{body}")
43
+ connection.write("P#{request.hash}#{[body.size].pack('N')}#{body}")
44
44
  connection.flush
45
45
  # debug("Finished writing client's request")
46
46
  else
@@ -68,7 +68,7 @@ module Pandemic
68
68
  # debug("Incoming connection thread started")
69
69
  while @server.running
70
70
  # debug("Listening for incoming requests")
71
- request = connection.gets
71
+ request = connection.read(15)
72
72
  # debug("Read incoming request from peer")
73
73
 
74
74
  if request.nil?
@@ -76,8 +76,8 @@ module Pandemic
76
76
  break
77
77
  else
78
78
  # debug("Received incoming (#{request.strip})")
79
- handle_incoming_request(request, connection) if request =~ /^PROCESS/
80
- handle_incoming_response(request, connection) if request =~ /^RESPONSE/
79
+ handle_incoming_request(request, connection) if request =~ /^P/
80
+ handle_incoming_response(request, connection) if request =~ /^R/
81
81
  end
82
82
  end
83
83
  rescue Exception => e
@@ -127,52 +127,40 @@ module Pandemic
127
127
 
128
128
  def handle_incoming_request(request, connection)
129
129
  # debug("Identified as request")
130
- if request.strip =~ /^PROCESS ([A-Za-z0-9]+) ([0-9]+)$/
131
- hash = $1
132
- size = $2.to_i
133
- # debug("Incoming request: #{hash} #{size}")
134
- begin
135
- # debug("Reading request body")
136
- request_body = connection.read(size)
137
- # debug("Finished reading request body")
138
- rescue EOFError, TruncatedDataError
139
- # debug("Failed to read request body")
140
- # TODO: what to do here?
141
- return false
142
- rescue Exception => e
143
- warn("Unhandled exception in incoming request read:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
144
- end
145
- # debug("Processing body")
146
- process_request(hash, request_body)
147
- else
148
- warn("Malformed incoming request: #{request.strip}")
149
- # when the incoming request was malformed
150
- # TODO: what to do here?
130
+ hash = request[1,10]
131
+ size = request[11, 4].unpack('N').first
132
+ # debug("Incoming request: #{hash} #{size}")
133
+ begin
134
+ # debug("Reading request body")
135
+ request_body = connection.read(size)
136
+ # debug("Finished reading request body")
137
+ rescue EOFError, TruncatedDataError
138
+ # debug("Failed to read request body")
139
+ # TODO: what to do here?
140
+ return false
141
+ rescue Exception => e
142
+ warn("Unhandled exception in incoming request read:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
151
143
  end
144
+ # debug("Processing body")
145
+ process_request(hash, request_body)
152
146
  end
153
147
 
154
148
  def handle_incoming_response(response, connection)
155
- if response.strip =~ /^RESPONSE ([A-Za-z0-9]+) ([0-9]+)$/
156
- hash = $1
157
- size = $2.to_i
158
- # debug("Incoming response: #{hash} #{size}")
159
- begin
160
- # debug("Reading response body")
161
- response_body = connection.read(size)
162
- # debug("Finished reading response body")
163
- rescue EOFError, TruncatedDataError
164
- # debug("Failed to read response body")
165
- # TODO: what to do here?
166
- return false
167
- rescue Exception => e
168
- warn("Unhandled exception in incoming response read:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
169
- end
170
- process_response(hash, response_body)
171
- else
172
- warn("Malformed incoming response: #{response.strip}")
173
- # when the incoming response was malformed
174
- # TODO: what to do here?
149
+ hash = response[1,10]
150
+ size = response[11, 4].unpack('N').first
151
+ # debug("Incoming response: #{hash} #{size}")
152
+ begin
153
+ # debug("Reading response body")
154
+ response_body = connection.read(size)
155
+ # debug("Finished reading response body")
156
+ rescue EOFError, TruncatedDataError
157
+ # debug("Failed to read response body")
158
+ # TODO: what to do here?
159
+ return false
160
+ rescue Exception => e
161
+ warn("Unhandled exception in incoming response read:\n#{e.inspect}\n#{e.backtrace.join("\n")}")
175
162
  end
163
+ process_response(hash, response_body)
176
164
  end
177
165
 
178
166
 
@@ -184,7 +172,7 @@ module Pandemic
184
172
  # debug("Processing finished (#{hash})")
185
173
  @connection_pool.with_connection do |connection|
186
174
  # debug( "Sending response (#{hash})")
187
- connection.write("RESPONSE #{hash} #{response.size}\n#{response}")
175
+ connection.write("R#{hash}#{[response.size].pack('N')}#{response}")
188
176
  connection.flush
189
177
  # debug( "Finished sending response (#{hash})")
190
178
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{pandemic}
5
- s.version = "0.5.2"
5
+ s.version = "0.5.3"
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-08-11}
9
+ s.date = %q{2009-08-16}
10
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/requests_per_second.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"]
@@ -39,7 +39,7 @@ class PeerTest < Test::Unit::TestCase
39
39
  @connection_pool.expects(:with_connection).yields(conn)
40
40
 
41
41
  conn.stubs(:closed? => false)
42
- conn.expects(:write).with("PROCESS #{request.hash} #{body.size}\n#{body}")
42
+ conn.expects(:write).with("P#{request.hash}#{[body.size].pack('N')}#{body}")
43
43
  conn.expects(:flush)
44
44
 
45
45
  @peer.client_request(request, body)
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.5.2
4
+ version: 0.5.3
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-08-11 00:00:00 -07:00
12
+ date: 2009-08-16 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency