pcp-client 0.2.0 → 0.3.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pcp/client.rb +26 -13
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 404c05c867f92b146e2f9d046fe2d8741bf38402
4
- data.tar.gz: 6dcb82793a413080b7230d34228d6aab9ae70845
3
+ metadata.gz: 4bbadd16844a443623b6d9d1389b580960b17592
4
+ data.tar.gz: cfe1c97388dbab0db4496b316f57961cc6e30d9d
5
5
  SHA512:
6
- metadata.gz: d06217562d449a04f11c904d2cb0179a6bdbabe1458a48bc494f20fc38e7f29246bcfdb4d2173b99f1a1592d4a586d16b50cd638db7334523060f405110e646d
7
- data.tar.gz: 7b4d892e27a3271e312b326a660d64a406127963b1f52356158ff17ca0f3e821f17dd22ef74351f4576354c86c8b059745b5150419d450c7b1175da004edd2b9
6
+ metadata.gz: d006505e2bfdee5de658da1a1dff1215d3a483ce4e7326815f8229b39f9acf61597686ad7c4a83e1e0d46e712aa8420742387743792df3212ef760bbeb25947d
7
+ data.tar.gz: ef1ab13ddaeffda48954bc65c8d7b1d28c62037667dad6d40708eb79c37c69544767cd41198778cf690bd35b547d759665020897f82774aa7c85c31af5a30f04
@@ -1,4 +1,4 @@
1
- require 'eventmachine-le'
1
+ require 'eventmachine'
2
2
  require 'faye/websocket'
3
3
  require 'pcp/message'
4
4
  require 'logger'
@@ -42,17 +42,6 @@ module PCP
42
42
  # @param seconds [Numeric]
43
43
  # @return [true,false,nil]
44
44
  def connect(seconds = 0)
45
- unless EM.reactor_running?
46
- raise "An Eventmachine reactor needs to be running"
47
- end
48
-
49
- if EM.reactor_thread?
50
- # Because we use a condition variable to signal this thread
51
- # from the reactor thread to provide an imperative interface,
52
- # they cannot be the same thread
53
- raise "Cannot be run on the same thread as the reactor"
54
- end
55
-
56
45
  if @connection
57
46
  # We close over so much, we really just need to say no for now
58
47
  raise "Can only connect once per client"
@@ -64,7 +53,7 @@ module PCP
64
53
  @logger.debug { [:connect, @server] }
65
54
  @connection = Faye::WebSocket::Client.new(@server, nil, {:tls => {:private_key_file => @ssl_key,
66
55
  :cert_chain_file => @ssl_cert,
67
- :ssl_version => :TLSv1}})
56
+ :ssl_version => ["TLSv1", "TLSv1_1", "TLSv1_2"]}})
68
57
 
69
58
  @connection.on :open do |event|
70
59
  begin
@@ -110,6 +99,22 @@ module PCP
110
99
  @associated = false
111
100
  end
112
101
 
102
+ if !EM.reactor_running?
103
+ @logger.debug { [:no_eventmachine_reactor,
104
+ "Eventmachine reactor is not running" ] }
105
+ return nil
106
+ end
107
+
108
+ if EM.reactor_thread?
109
+ # Because we use a condition variable to signal this thread
110
+ # from the reactor thread to provide an imperative interface,
111
+ # they cannot be the same thread. We might associate later,
112
+ # we just can't wait on ourselves from here.
113
+ @logger.debug { [:connection_cannot_wait,
114
+ "Cannot wait on a connection if we are in the same thread as the reactor" ] }
115
+ return nil
116
+ end
117
+
113
118
  begin
114
119
  Timeout::timeout(seconds) do
115
120
  mutex.synchronize do
@@ -141,6 +146,14 @@ module PCP
141
146
  @connection.send(message.encode)
142
147
  end
143
148
 
149
+ # Disconnect the client
150
+ # @api public
151
+ # @return unused
152
+ def close
153
+ @logger.debug { [:close] }
154
+ @connection.close
155
+ end
156
+
144
157
  private
145
158
 
146
159
  # Get the common name from an X509 certficate in file
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pcp-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-18 00:00:00.000000000 Z
11
+ date: 2016-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: eventmachine-le
14
+ name: eventmachine
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.1'
19
+ version: '1.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.1'
26
+ version: '1.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faye-websocket
29
29
  requirement: !ruby/object:Gem::Requirement