em-breakout 0.0.3 → 0.0.4

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/em-breakout.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.add_dependency 'json', '>=1.4.6'
18
18
  s.add_dependency 'em-websocket', '>=0.2.1'
19
- s.add_dependency 'breakout', '0.0.1'
19
+ s.add_dependency 'breakout', '>=0.0.2'
20
20
 
21
21
  s.files = `git ls-files`.split("\n")
22
22
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -17,3 +17,16 @@ Feature: notify
17
17
  Then worker 1's payload route should be "test"
18
18
  Then worker 1's payload bid should be "1"
19
19
  Then worker 1's payload message should be "/close"
20
+
21
+ Scenario: bid freed after notify
22
+ Given worker 1 opens a url for work
23
+ When browser 1 opens a url with bid "foo" and notify
24
+ And worker 1 receives a payload
25
+ And browser 1 disconnects
26
+ And browser 2 opens a url with bid "foo"
27
+ Then browser 2 should not be connected
28
+ When worker 1 sends done_work
29
+ And worker 1 receives a payload
30
+ And worker 1 sends done_work
31
+ When browser 2 opens a url with bid "foo"
32
+ Then browser 2 should be connected
@@ -18,6 +18,13 @@ Feature: security
18
18
  And browser 2 should be disconnected
19
19
  And browser 1 should be connected
20
20
 
21
+ Scenario: bid freed after use
22
+ Given worker 1 opens a url
23
+ When browser 1 opens a url with bid "foo"
24
+ And browser 1 disconnects
25
+ And browser 2 opens a url with bid "foo"
26
+ Then browser 2 should be connected
27
+
21
28
  Scenario: expired link
22
29
  Given worker 1 opens a url
23
30
  When browser 1 opens an expired url
@@ -14,6 +14,10 @@ When /^browser (\d+) opens a url with notify$/ do |id|
14
14
  @browser_by_id[id] = Breakout::Socket.new(Breakout.browser_url("test", :bid => id, :notify => true))
15
15
  end
16
16
 
17
+ When /^browser (\d+) opens a url with bid "([^"]*)" and notify$/ do |id, bid|
18
+ @browser_by_id[id] = Breakout::Socket.new(Breakout.browser_url("test", :bid => bid, :notify => true))
19
+ end
20
+
17
21
  When /^worker (\d+) opens a url for work$/ do |id|
18
22
  @worker_by_id[id] = Breakout::Socket.new(Breakout.worker_url)
19
23
  @worker_by_id[id].send :done_work => true
@@ -103,10 +107,12 @@ end
103
107
 
104
108
  When /^browser (\d+) disconnects$/ do |id|
105
109
  @browser_by_id[id].close
110
+ sleep(0.01)
106
111
  end
107
112
 
108
113
  When /^worker (\d+) disconnects$/ do |id|
109
114
  @worker_by_id[id].close
115
+ sleep(0.01)
110
116
  end
111
117
 
112
118
  Then /^browser (\d+) should be disconnected$/ do |id|
@@ -153,3 +159,7 @@ end
153
159
  Given /^the server is restarted$/ do
154
160
  restart_server
155
161
  end
162
+
163
+ When /^there is a pause$/ do
164
+ sleep(0.1)
165
+ end
@@ -28,7 +28,7 @@ module EventMachine
28
28
  throw :break
29
29
  end
30
30
 
31
- if @grid.browsers.has_key?(@bid)
31
+ if @grid.browsers.has_key?(@bid) or @grid.disconnected_browsers.has_key?(@bid)
32
32
  close_websocket "bid in use"
33
33
  throw :break
34
34
  end
@@ -71,6 +71,7 @@ module EventMachine
71
71
  log("closing") if debug
72
72
 
73
73
  if @message_queue
74
+ @grid.browsers.delete @bid
74
75
 
75
76
  if @notify
76
77
  @grid.disconnected_browsers[@bid] = self
@@ -1,5 +1,5 @@
1
1
  module EventMachine
2
2
  module Breakout
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,61 +1,57 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: em-breakout
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
4
5
  prerelease:
5
- version: 0.0.3
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Steve Masterman
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-05-02 00:00:00 -04:00
12
+ date: 2011-05-02 00:00:00.000000000 -04:00
14
13
  default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
17
16
  name: json
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &70737630 !ruby/object:Gem::Requirement
20
18
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
24
22
  version: 1.4.6
25
23
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: em-websocket
29
24
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *70737630
26
+ - !ruby/object:Gem::Dependency
27
+ name: em-websocket
28
+ requirement: &70737370 !ruby/object:Gem::Requirement
31
29
  none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
35
33
  version: 0.2.1
36
34
  type: :runtime
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: breakout
40
35
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *70737370
37
+ - !ruby/object:Gem::Dependency
38
+ name: breakout
39
+ requirement: &70737140 !ruby/object:Gem::Requirement
42
40
  none: false
43
- requirements:
44
- - - "="
45
- - !ruby/object:Gem::Version
46
- version: 0.0.1
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 0.0.2
47
45
  type: :runtime
48
- version_requirements: *id003
46
+ prerelease: false
47
+ version_requirements: *70737140
49
48
  description: Breakout routes messages among web browsers and workers using WebSockets.
50
- email:
49
+ email:
51
50
  - steve@vermonster.com
52
51
  executables: []
53
-
54
52
  extensions: []
55
-
56
53
  extra_rdoc_files: []
57
-
58
- files:
54
+ files:
59
55
  - .gitignore
60
56
  - Gemfile
61
57
  - README.md
@@ -87,43 +83,26 @@ files:
87
83
  has_rdoc: true
88
84
  homepage: https://github.com/steve9001/em-breakout
89
85
  licenses: []
90
-
91
86
  post_install_message:
92
87
  rdoc_options: []
93
-
94
- require_paths:
88
+ require_paths:
95
89
  - lib
96
- required_ruby_version: !ruby/object:Gem::Requirement
90
+ required_ruby_version: !ruby/object:Gem::Requirement
97
91
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: "0"
102
- required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
97
  none: false
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- version: "0"
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
108
102
  requirements: []
109
-
110
103
  rubyforge_project: em-breakout
111
104
  rubygems_version: 1.6.2
112
105
  signing_key:
113
106
  specification_version: 3
114
107
  summary: Breakout routes messages among web browsers and workers using WebSockets.
115
- test_files:
116
- - features/api.feature
117
- - features/api_format.feature
118
- - features/connect.feature
119
- - features/notify.feature
120
- - features/performance.feature
121
- - features/ping.feature
122
- - features/security.feature
123
- - features/serialize.feature
124
- - features/step_definitions/common_steps.rb
125
- - features/step_definitions/performance_steps.rb
126
- - features/support/em_control
127
- - features/support/env.rb
128
- - features/support/server.rb
129
- - features/support/socket.rb
108
+ test_files: []