simultaneous 0.4.2 → 0.5.2

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3df07a9e30710532aec1af60a2c792407bcf03ac
4
+ data.tar.gz: 6f64a25c5ec8582f986a3f8f6593c2a569304d1d
5
+ SHA512:
6
+ metadata.gz: 1251007c89c3cf7f6be01fae01e498f5b9d495998a7f778476a4d08e71656f5ad4720e96417d0afe0a1ca6fa1396113e5e1366e062626bf3ba958adeecfb2cec
7
+ data.tar.gz: 4dd6e2c19b5ca770458ee5a3e47d99e2747f81ea870c2d0fabde35ec723cf5f103c1d25b87ac33f34da6f2a67b28061d2411a9804379a10d269cfea1389d4c77
data/lib/simultaneous.rb CHANGED
@@ -4,7 +4,7 @@ require 'socket'
4
4
  require 'eventmachine'
5
5
 
6
6
  module Simultaneous
7
- VERSION = "0.4.2"
7
+ VERSION = "0.5.2"
8
8
 
9
9
  DEFAULT_CONNECTION = "/tmp/simultaneous-server.sock"
10
10
  DEFAULT_PORT = 9999
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Simultaneous
4
4
  class BroadcastMessage
5
- attr_accessor :domain
5
+ attr_accessor :domain, :id
6
6
  attr_reader :event
7
7
 
8
8
  def initialize(values = {})
@@ -12,6 +12,11 @@ module Simultaneous
12
12
  self.event = event
13
13
  end
14
14
  self.data = (values[:data] || values["data"] || "")
15
+ self.id = (values[:id] || next_id)
16
+ end
17
+
18
+ def next_id
19
+ SecureRandom.uuid
15
20
  end
16
21
 
17
22
  def event=(event)
@@ -33,6 +38,8 @@ module Simultaneous
33
38
  self.domain = $1
34
39
  when /^event: *(.+)/
35
40
  self.event = $1
41
+ when /^id: *(.+)/
42
+ @id = $1
36
43
  when /^data: *(.*)/
37
44
  @data << $1
38
45
  when /^:/
@@ -47,17 +54,19 @@ module Simultaneous
47
54
  end
48
55
 
49
56
  def to_event
50
- lines = ["domain: #{domain}", "event: #{event}"]
51
- lines.concat(@data.map { |l| "data: #{l}" })
52
- lines.push("\n")
57
+ lines = ["domain: #{domain}"]
58
+ lines.concat(event_content)
53
59
  lines.join("\n")
54
60
  end
55
61
 
56
62
  def to_sse
57
- lines = ["event: #{event}"]
63
+ event_content.join("\n")
64
+ end
65
+
66
+ def event_content
67
+ lines = ["event: #{event}", "id: #{id}"]
58
68
  lines.concat(@data.map { |l| "data: #{l}" })
59
69
  lines.push("\n")
60
- lines.join("\n")
61
70
  end
62
71
  end
63
72
  end
data/simultaneous.gemspec CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'simultaneous'
16
- s.version = '0.4.2'
17
- s.date = '2013-01-22'
16
+ s.version = '0.5.2'
17
+ s.date = '2016-05-17'
18
18
  s.rubyforge_project = 'simultaneous'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
data/test/test_message.rb CHANGED
@@ -2,6 +2,12 @@ require File.expand_path('../helper', __FILE__)
2
2
 
3
3
  describe Simultaneous::BroadcastMessage do
4
4
 
5
+ it "should assign a unique id to each message" do
6
+ message1 = Simultaneous::BroadcastMessage.new
7
+ message2 = Simultaneous::BroadcastMessage.new
8
+ message1.id.wont_equal message2.id
9
+ end
10
+
5
11
  describe "when parsing input" do
6
12
  before do
7
13
  @message = Simultaneous::BroadcastMessage.new
@@ -16,6 +22,12 @@ describe Simultaneous::BroadcastMessage do
16
22
  @message.valid?.wont_be :==, true
17
23
  end
18
24
 
25
+ it "should recognise the id: header" do
26
+ @message << "id: 12345"
27
+ @message.id.must_equal "12345"
28
+ @message.valid?.wont_be :==, true
29
+ end
30
+
19
31
  it "should recognise the event: header" do
20
32
  @message << "event: name"
21
33
  @message.event.must_equal "name"
@@ -46,6 +58,7 @@ describe Simultaneous::BroadcastMessage do
46
58
  describe "when data has been parsed" do
47
59
  before do
48
60
  @message = Simultaneous::BroadcastMessage.new
61
+ @message.id = "62936e70-1815-439b-bf89-8492855a7e6b"
49
62
  @message.event = "event"
50
63
  @message.domain = "domain"
51
64
  @message.data = "line 1\nline 2"
@@ -59,6 +72,7 @@ describe Simultaneous::BroadcastMessage do
59
72
  @message.to_event.must_equal((<<-SRC).gsub(/^ */, ''))
60
73
  domain: domain
61
74
  event: event
75
+ id: 62936e70-1815-439b-bf89-8492855a7e6b
62
76
  data: line 1
63
77
  data: line 2
64
78
 
@@ -71,11 +85,13 @@ describe Simultaneous::BroadcastMessage do
71
85
  message = Simultaneous::BroadcastMessage.new({
72
86
  :domain => "domain",
73
87
  :event => "event",
88
+ :id => "62936e70-1815-439b-bf89-8492855a7e6b",
74
89
  :data => "line 1\nline 2"
75
90
  })
76
91
  message.domain.must_equal "domain"
77
92
  message.event.must_equal "event"
78
93
  message.data.must_equal "line 1\nline 2"
94
+ message.id.must_equal "62936e70-1815-439b-bf89-8492855a7e6b"
79
95
  end
80
96
  end
81
97
  end
metadata CHANGED
@@ -1,90 +1,81 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simultaneous
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
5
- prerelease:
4
+ version: 0.5.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Garry Hill
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-22 00:00:00.000000000 Z
11
+ date: 2016-05-17 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: eventmachine
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 1.0.0.rc.1
22
- - - <
20
+ - - "<"
23
21
  - !ruby/object:Gem::Version
24
22
  version: '2.0'
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
- - - ! '>='
27
+ - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 1.0.0.rc.1
33
- - - <
30
+ - - "<"
34
31
  - !ruby/object:Gem::Version
35
32
  version: '2.0'
36
33
  - !ruby/object:Gem::Dependency
37
34
  name: rack
38
35
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
36
  requirements:
41
- - - ! '>='
37
+ - - ">="
42
38
  - !ruby/object:Gem::Version
43
39
  version: '1.0'
44
- - - <
40
+ - - "<"
45
41
  - !ruby/object:Gem::Version
46
42
  version: '2.0'
47
43
  type: :runtime
48
44
  prerelease: false
49
45
  version_requirements: !ruby/object:Gem::Requirement
50
- none: false
51
46
  requirements:
52
- - - ! '>='
47
+ - - ">="
53
48
  - !ruby/object:Gem::Version
54
49
  version: '1.0'
55
- - - <
50
+ - - "<"
56
51
  - !ruby/object:Gem::Version
57
52
  version: '2.0'
58
53
  - !ruby/object:Gem::Dependency
59
54
  name: async-rack
60
55
  requirement: !ruby/object:Gem::Requirement
61
- none: false
62
56
  requirements:
63
- - - ~>
57
+ - - "~>"
64
58
  - !ruby/object:Gem::Version
65
59
  version: 0.5.0
66
60
  type: :runtime
67
61
  prerelease: false
68
62
  version_requirements: !ruby/object:Gem::Requirement
69
- none: false
70
63
  requirements:
71
- - - ~>
64
+ - - "~>"
72
65
  - !ruby/object:Gem::Version
73
66
  version: 0.5.0
74
67
  - !ruby/object:Gem::Dependency
75
68
  name: rr
76
69
  requirement: !ruby/object:Gem::Requirement
77
- none: false
78
70
  requirements:
79
- - - ~>
71
+ - - "~>"
80
72
  - !ruby/object:Gem::Version
81
73
  version: 1.0.4
82
74
  type: :development
83
75
  prerelease: false
84
76
  version_requirements: !ruby/object:Gem::Requirement
85
- none: false
86
77
  requirements:
87
- - - ~>
78
+ - - "~>"
88
79
  - !ruby/object:Gem::Version
89
80
  version: 1.0.4
90
81
  description: Simultaneous is designed for the very specific use case of a small set
@@ -135,26 +126,25 @@ files:
135
126
  - test/test_task.rb
136
127
  homepage: http://spontaneouscms.org
137
128
  licenses: []
129
+ metadata: {}
138
130
  post_install_message:
139
131
  rdoc_options:
140
- - --charset=UTF-8
132
+ - "--charset=UTF-8"
141
133
  require_paths:
142
134
  - lib
143
135
  required_ruby_version: !ruby/object:Gem::Requirement
144
- none: false
145
136
  requirements:
146
- - - ! '>='
137
+ - - ">="
147
138
  - !ruby/object:Gem::Version
148
139
  version: '0'
149
140
  required_rubygems_version: !ruby/object:Gem::Requirement
150
- none: false
151
141
  requirements:
152
- - - ! '>='
142
+ - - ">="
153
143
  - !ruby/object:Gem::Version
154
144
  version: '0'
155
145
  requirements: []
156
146
  rubyforge_project: simultaneous
157
- rubygems_version: 1.8.24
147
+ rubygems_version: 2.4.5
158
148
  signing_key:
159
149
  specification_version: 2
160
150
  summary: Simultaneous is the background task launcher used by Spontaneous CMS
@@ -166,3 +156,4 @@ test_files:
166
156
  - test/test_message.rb
167
157
  - test/test_server.rb
168
158
  - test/test_task.rb
159
+ has_rdoc: