lightstreamer 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c64dd0d680841a38eb530d0a17fa0700985426a
4
- data.tar.gz: 5a66944aff7e81aeef70c8cb5551703c1389c281
3
+ metadata.gz: 8c5dce2a119bf535faac9e10b36a13624cf57038
4
+ data.tar.gz: 64bd43f2f8e122608e552e23dfa38047a0e3b53f
5
5
  SHA512:
6
- metadata.gz: dca8fbcb4375c44451946467847f764b072e86b45d7f7c6d50b4240e9c8a4ae3d3eac5cbb3ee2019365e2436bdcadbeb21bda2dd9eb2a9bdd89bed5bd6657bcd
7
- data.tar.gz: 1cd6cc4234ddcf107194d59d4443a69e3ffa4f6ce2bfed5671f5e5ac72c33bc9a64ccfda4086fca1901489133e7f43f32ef787bf32fc1b3a57304dd2fec43c78
6
+ metadata.gz: 3261d66e3032ff0f0d324b02e7efda9626fd9a207921247307cbc6d0cbb97698131d423185012ae1b1741af1c50e867a886b4ed5fe30d1093bc6e9c7ec85a7b5
7
+ data.tar.gz: a8ad81e667183f8d867162f0d0f2733ec7c9d15541508f22b94c34638f944d9343b9cea862bf0f7407475a141f487d281c45bff04644eed37c1c02990b8bd75a
@@ -1,10 +1,16 @@
1
1
  # Lightstreamer Changelog
2
2
 
3
+ ### 0.6 — July 26, 2016
4
+
5
+ - Switched to the `excon` HTTP library
6
+ - Moved all subclasses of `Lightstreamer::LightstreamerError` into the `Lightstreamer::Errors` module
7
+ - Replaced `Lightstreamer::Errors::RequestError` with `Lightstreamer::Errors::ConnectionError`
8
+
3
9
  ### 0.5 — July 26, 2016
4
10
 
5
11
  - Improved handling of `:distinct` subscriptions
6
12
  - Subscriptions can now request an unfiltered stream and handle any overflow messages from the server using
7
- `Lightstreamer::Subscription#on_callback`
13
+ `Lightstreamer::Subscription#on_overflow`
8
14
  - Added a connection timeout to all requests
9
15
  - Unhandled exceptions in subscription data callbacks are no longer automatically rescued
10
16
  - Improved API documentation
@@ -1,5 +1,5 @@
1
+ require 'excon'
1
2
  require 'thor'
2
- require 'typhoeus'
3
3
  require 'uri'
4
4
 
5
5
  require 'lightstreamer/cli/main'
@@ -21,6 +21,7 @@ module Lightstreamer
21
21
  def execute(operation, options = {})
22
22
  result = execute_post_request build_payload(operation, options)
23
23
 
24
+ raise Errors::SyncError if result.first == 'SYNC ERROR'
24
25
  raise LightstreamerError.build(result[2], result[1]) if result.first != 'OK'
25
26
  end
26
27
 
@@ -55,14 +56,14 @@ module Lightstreamer
55
56
  raise ArgumentError, 'Unsupported mode' unless [:distinct, :merge].include? options[:mode]
56
57
  end
57
58
 
58
- # Executes a POST request to the control address with the specified payload. Raises {RequestError} if the HTTP
59
+ # Executes a POST request to the control address with the specified payload. Raises {ConnectionError} if the HTTP
59
60
  # request fails. Returns the response body split into individual lines.
60
61
  def execute_post_request(payload)
61
- response = Typhoeus.post @control_url, body: payload, timeout: 15
62
-
63
- raise RequestError.new(response.return_message, response.response_code) unless response.success?
62
+ response = Excon.post @control_url, body: URI.encode_www_form(payload), connect_timeout: 15
64
63
 
65
64
  response.body.split("\n").map(&:strip)
65
+ rescue Excon::Error => error
66
+ raise Errors::ConnectionError, error.message
66
67
  end
67
68
 
68
69
  # Constructs the payload for a Lightstreamer control request based on the given options hash. See {#execute} for
@@ -2,183 +2,163 @@ module Lightstreamer
2
2
  class LightstreamerError < StandardError
3
3
  end
4
4
 
5
- # This error is raised when the session username and password check fails.
6
- class AuthenticationError < LightstreamerError
7
- end
8
-
9
- # This error is raised when the requested adapter set is unknown.
10
- class UnknownAdapterSetError < LightstreamerError
11
- end
12
-
13
- # This error is raise when trying to bind to a session that was initialized with a different and incompatible
14
- # communication protocol.
15
- class IncompatibleSessionError < LightstreamerError
16
- end
17
-
18
- # This error is raised when the licensed maximum number of sessions is reached.
19
- class LicensedMaximumSessionsReachedError < LightstreamerError
20
- end
21
-
22
- # This error is raised when the configured maximum number of sessions is reached.
23
- class ConfiguredMaximumSessionsReachedError < LightstreamerError
24
- end
25
-
26
- # This error is raised when the configured maximum server load is reached.
27
- class ConfiguredMaximumServerLoadReachedError < LightstreamerError
28
- end
5
+ # This module contains all the error classes for this gem. They all subclass {LightstreamerError}.
6
+ module Errors
7
+ # This error is raised when the session username and password check fails.
8
+ class AuthenticationError < LightstreamerError
9
+ end
29
10
 
30
- # This error is raised when the creation of new sessions has been temporarily blocked.
31
- class NewSessionsTemporarilyBlockedError < LightstreamerError
32
- end
11
+ # This error is raised when the requested adapter set is unknown.
12
+ class UnknownAdapterSetError < LightstreamerError
13
+ end
33
14
 
34
- # This error is raised when streaming is not available because of the current license terms.
35
- class StreamingNotAvailableError < LightstreamerError
36
- end
15
+ # This error is raised when trying to bind to a session that was initialized with a different and incompatible
16
+ # communication protocol.
17
+ class IncompatibleSessionError < LightstreamerError
18
+ end
37
19
 
38
- # This error is raised when the specified table can't be modified because it is configured for unfiltered dispatching.
39
- class TableModificationNotAllowedError < LightstreamerError
40
- end
20
+ # This error is raised when the licensed maximum number of sessions is reached.
21
+ class LicensedMaximumSessionsReachedError < LightstreamerError
22
+ end
41
23
 
42
- # This error is raised when the specified data adapter is invalid or the data adapter is not specified and there is
43
- # no default data adapter.
44
- class InvalidDataAdapterError < LightstreamerError
45
- end
24
+ # This error is raised when the configured maximum number of sessions is reached.
25
+ class ConfiguredMaximumSessionsReachedError < LightstreamerError
26
+ end
46
27
 
47
- # This error occurs when the specified table is not found.
48
- class UnknownTableError < LightstreamerError
49
- end
28
+ # This error is raised when the configured maximum server load is reached.
29
+ class ConfiguredMaximumServerLoadReachedError < LightstreamerError
30
+ end
50
31
 
51
- # This error is raised when an invalid item name is specified.
52
- class InvalidItemError < LightstreamerError
53
- end
32
+ # This error is raised when the creation of new sessions has been temporarily blocked.
33
+ class NewSessionsTemporarilyBlockedError < LightstreamerError
34
+ end
54
35
 
55
- # This error is raised when an invalid item name for the given fields is specified.
56
- class InvalidItemForFieldsError < LightstreamerError
57
- end
36
+ # This error is raised when streaming is not available because of the current license terms.
37
+ class StreamingNotAvailableError < LightstreamerError
38
+ end
58
39
 
59
- # This error is raised when an invalid field name is specified.
60
- class InvalidFieldError < LightstreamerError
61
- end
40
+ # This error is raised when the specified table can't be modified because it is configured for unfiltered
41
+ # dispatching.
42
+ class TableModificationNotAllowedError < LightstreamerError
43
+ end
62
44
 
63
- # This error is raised when the specified subscription mode is not supported by one of the items.
64
- class UnsupportedModeForItemError < LightstreamerError
65
- end
45
+ # This error is raised when the specified data adapter is invalid or the data adapter is not specified and there is
46
+ # no default data adapter.
47
+ class InvalidDataAdapterError < LightstreamerError
48
+ end
66
49
 
67
- # This error is raised when an invalid selector is specified.
68
- class InvalidSelectorError < LightstreamerError
69
- end
50
+ # This error occurs when the specified table is not found.
51
+ class UnknownTableError < LightstreamerError
52
+ end
70
53
 
71
- # This error is raised when unfiltered dispatching is requested on an item that does not allow it.
72
- class UnfilteredDispatchingNotAllowedForItemError < LightstreamerError
73
- end
54
+ # This error is raised when an invalid item name is specified.
55
+ class InvalidItemError < LightstreamerError
56
+ end
74
57
 
75
- # This error is raised when unfiltered dispatching is requested on an item that does not support it.
76
- class UnfilteredDispatchingNotSupportedForItemError < LightstreamerError
77
- end
58
+ # This error is raised when an invalid item name for the given fields is specified.
59
+ class InvalidItemForFieldsError < LightstreamerError
60
+ end
78
61
 
79
- # This error is raised when unfiltered dispatching is requested but is not allowed by the current license terms.
80
- class UnfilteredDispatchingNotAllowedByLicenseError < LightstreamerError
81
- end
62
+ # This error is raised when an invalid field name is specified.
63
+ class InvalidFieldError < LightstreamerError
64
+ end
82
65
 
83
- # This error is raised when `RAW` mode was requested but is not allowed by the current license terms.
84
- class RawModeNotAllowedByLicenseError < LightstreamerError
85
- end
66
+ # This error is raised when the specified subscription mode is not supported by one of the items.
67
+ class UnsupportedModeForItemError < LightstreamerError
68
+ end
86
69
 
87
- # This error is raised when subscriptions are not allowed by the current license terms.
88
- class SubscriptionsNotAllowedByLicenseError < LightstreamerError
89
- end
70
+ # This error is raised when an invalid selector is specified.
71
+ class InvalidSelectorError < LightstreamerError
72
+ end
90
73
 
91
- # This error is raised when the specified progressive sequence number for the custom message was invalid.
92
- class InvalidProgressiveNumberError < LightstreamerError
93
- end
74
+ # This error is raised when unfiltered dispatching is requested on an item that does not allow it.
75
+ class UnfilteredDispatchingNotAllowedForItemError < LightstreamerError
76
+ end
94
77
 
95
- # This error is raised when the client version requested is not supported by the server.
96
- class ClientVersionNotSupportedError < LightstreamerError
97
- end
78
+ # This error is raised when unfiltered dispatching is requested on an item that does not support it.
79
+ class UnfilteredDispatchingNotSupportedForItemError < LightstreamerError
80
+ end
98
81
 
99
- # This error is raised when a error defined by a metadata adapter is raised.
100
- class MetadataAdapterError < LightstreamerError
101
- # The error message from the metadata adapter.
102
- #
103
- # @return [String]
104
- attr_reader :adapter_error_message
82
+ # This error is raised when unfiltered dispatching is requested but is not allowed by the current license terms.
83
+ class UnfilteredDispatchingNotAllowedByLicenseError < LightstreamerError
84
+ end
105
85
 
106
- # The error code from the metadata adapter.
107
- #
108
- # @return [Fixnum]
109
- attr_reader :adapter_error_code
86
+ # This error is raised when `RAW` mode was requested but is not allowed by the current license terms.
87
+ class RawModeNotAllowedByLicenseError < LightstreamerError
88
+ end
110
89
 
111
- # Initializes this metadata adapter error with the specified error message and error code.
112
- #
113
- # @param [String] message The error message.
114
- # @param [Fixnum] code The error code.
115
- def initialize(message, code)
116
- @adapter_error_message = message
117
- @adapter_error_code = code
90
+ # This error is raised when subscriptions are not allowed by the current license terms.
91
+ class SubscriptionsNotAllowedByLicenseError < LightstreamerError
92
+ end
118
93
 
119
- super message
94
+ # This error is raised when the specified progressive sequence number for the custom message was invalid.
95
+ class InvalidProgressiveNumberError < LightstreamerError
120
96
  end
121
- end
122
97
 
123
- # This error is raised when a sync error occurs, which most often means that the session ID provided is invalid and
124
- # a new session needs to be created.
125
- class SyncError < LightstreamerError
126
- end
98
+ # This error is raised when the client version requested is not supported by the server.
99
+ class ClientVersionNotSupportedError < LightstreamerError
100
+ end
127
101
 
128
- # This error is raised when the session was explicitly closed on the server side. The reason for this is specified by
129
- # {#cause_code}.
130
- class SessionEndError < LightstreamerError
131
- # The cause code specifying why the session was terminated by the server, or `nil` if unknown.
132
- #
133
- # The following codes are defined, but other values are allowed and signal an unexpected cause.
134
- #
135
- # - `<=0` - The session was closed through a `destroy` request and this custom code was specified.
136
- # - `31` - The session was closed through a `destroy` request.
137
- # - `32` - The session was closed by an administrator through JMX.
138
- # - `33`, `34` - An unexpected error occurred on the server.
139
- # - `35` - Another session was opened on the metadata adapter and the metadata adpater only supports one session.
140
- # - `40` - A manual rebind to the session was done by another client.
141
- # - `48` - The maximum session duration configured on the server has been reached. This is meant as a way to refresh
142
- # the session and the client should recover by opening a new session immediately.
143
- #
144
- # @return [Fixnum, nil]
145
- attr_reader :cause_code
102
+ # This error is raised when a error defined by a metadata adapter is raised.
103
+ class MetadataAdapterError < LightstreamerError
104
+ # The error message from the metadata adapter.
105
+ #
106
+ # @return [String]
107
+ attr_reader :adapter_error_message
108
+
109
+ # The error code from the metadata adapter.
110
+ #
111
+ # @return [Fixnum]
112
+ attr_reader :adapter_error_code
113
+
114
+ # Initializes this metadata adapter error with the specified error message and error code.
115
+ #
116
+ # @param [String] message The error message.
117
+ # @param [Fixnum] code The error code.
118
+ def initialize(message, code)
119
+ @adapter_error_message = message
120
+ @adapter_error_code = code
146
121
 
147
- # Initializes this session end error with the specified cause code.
148
- #
149
- # @param [Session?] cause_code See {#cause_code} for details.
150
- def initialize(cause_code)
151
- @cause_code = cause_code && cause_code.to_i
152
- super()
122
+ super message
123
+ end
153
124
  end
154
- end
155
125
 
156
- # This error is raised when an HTTP request error occurs.
157
- class RequestError < LightstreamerError
158
- # The description of the request error that occurred.
159
- #
160
- # @return [String]
161
- attr_reader :request_error_message
162
-
163
- # The HTTP code that was returned, or zero if unknown.
164
- #
165
- # @return [Fixnum]
166
- attr_reader :request_error_code
126
+ # This error is raised when a sync error occurs, which most often means that the session ID provided is invalid and
127
+ # a new session needs to be created.
128
+ class SyncError < LightstreamerError
129
+ end
167
130
 
168
- # Initializes this request error with a message and an HTTP code.
169
- #
170
- # @param [String] message The error description.
171
- # @param [Fixnum] code The HTTP code for the request failure, or zero if unknown.
172
- def initialize(message, code)
173
- @request_error_message = message
174
- @request_error_code = code
175
-
176
- if code != 0
177
- super "#{code}: #{message}"
178
- else
179
- super message
131
+ # This error is raised when the session was explicitly closed on the server side. The reason for this is specified
132
+ # by {#cause_code}.
133
+ class SessionEndError < LightstreamerError
134
+ # The cause code specifying why the session was terminated by the server, or `nil` if unknown.
135
+ #
136
+ # The following codes are defined, but other values are allowed and signal an unexpected cause.
137
+ #
138
+ # - `<=0` - The session was closed through a `destroy` request and this custom code was specified.
139
+ # - `31` - The session was closed through a `destroy` request.
140
+ # - `32` - The session was closed by an administrator through JMX.
141
+ # - `33`, `34` - An unexpected error occurred on the server.
142
+ # - `35` - Another session was opened on the metadata adapter and the metadata adpater only supports one session.
143
+ # - `40` - A manual rebind to the session was done by another client.
144
+ # - `48` - The maximum session duration configured on the server has been reached. This is meant as a way to
145
+ # refresh the session and the client should recover by opening a new session immediately.
146
+ #
147
+ # @return [Fixnum, nil]
148
+ attr_reader :cause_code
149
+
150
+ # Initializes this session end error with the specified cause code.
151
+ #
152
+ # @param [Session?] cause_code See {#cause_code} for details.
153
+ def initialize(cause_code)
154
+ @cause_code = cause_code && cause_code.to_i
155
+ super()
180
156
  end
181
157
  end
158
+
159
+ # This error is raised when an HTTP connection error occurs.
160
+ class ConnectionError < LightstreamerError
161
+ end
182
162
  end
183
163
 
184
164
  # Base class for all errors raised by this gem.
@@ -190,46 +170,46 @@ module Lightstreamer
190
170
  # @param [Fixnum] code The numeric error code that is used to determine which {LightstreamerError} subclass to
191
171
  # instantiate.
192
172
  #
193
- # @return [Error]
173
+ # @return [LightstreamerError]
194
174
  #
195
175
  # @private
196
176
  def self.build(message, code)
197
177
  code = code.to_i
198
178
 
199
179
  if API_ERROR_CODE_TO_CLASS.key? code
200
- API_ERROR_CODE_TO_CLASS[code].new
180
+ API_ERROR_CODE_TO_CLASS[code].new ''
201
181
  elsif code <= 0
202
- MetadataAdapterError.new message, code
182
+ Errors::MetadataAdapterError.new message, code
203
183
  else
204
184
  new "#{code}: #{message}"
205
185
  end
206
186
  end
207
187
 
208
188
  API_ERROR_CODE_TO_CLASS = {
209
- 1 => AuthenticationError,
210
- 2 => UnknownAdapterSetError,
211
- 3 => IncompatibleSessionError,
212
- 7 => LicensedMaximumSessionsReachedError,
213
- 8 => ConfiguredMaximumSessionsReachedError,
214
- 9 => ConfiguredMaximumServerLoadReachedError,
215
- 10 => NewSessionsTemporarilyBlockedError,
216
- 11 => StreamingNotAvailableError,
217
- 13 => TableModificationNotAllowedError,
218
- 17 => InvalidDataAdapterError,
219
- 19 => UnknownTableError,
220
- 21 => InvalidItemError,
221
- 22 => InvalidItemForFieldsError,
222
- 23 => InvalidFieldError,
223
- 24 => UnsupportedModeForItemError,
224
- 25 => InvalidSelectorError,
225
- 26 => UnfilteredDispatchingNotAllowedForItemError,
226
- 27 => UnfilteredDispatchingNotSupportedForItemError,
227
- 28 => UnfilteredDispatchingNotAllowedByLicenseError,
228
- 29 => RawModeNotAllowedByLicenseError,
229
- 30 => SubscriptionsNotAllowedByLicenseError,
230
- 32 => InvalidProgressiveNumberError,
231
- 33 => InvalidProgressiveNumberError,
232
- 60 => ClientVersionNotSupportedError
189
+ 1 => Errors::AuthenticationError,
190
+ 2 => Errors::UnknownAdapterSetError,
191
+ 3 => Errors::IncompatibleSessionError,
192
+ 7 => Errors::LicensedMaximumSessionsReachedError,
193
+ 8 => Errors::ConfiguredMaximumSessionsReachedError,
194
+ 9 => Errors::ConfiguredMaximumServerLoadReachedError,
195
+ 10 => Errors::NewSessionsTemporarilyBlockedError,
196
+ 11 => Errors::StreamingNotAvailableError,
197
+ 13 => Errors::TableModificationNotAllowedError,
198
+ 17 => Errors::InvalidDataAdapterError,
199
+ 19 => Errors::UnknownTableError,
200
+ 21 => Errors::InvalidItemError,
201
+ 22 => Errors::InvalidItemForFieldsError,
202
+ 23 => Errors::InvalidFieldError,
203
+ 24 => Errors::UnsupportedModeForItemError,
204
+ 25 => Errors::InvalidSelectorError,
205
+ 26 => Errors::UnfilteredDispatchingNotAllowedForItemError,
206
+ 27 => Errors::UnfilteredDispatchingNotSupportedForItemError,
207
+ 28 => Errors::UnfilteredDispatchingNotAllowedByLicenseError,
208
+ 29 => Errors::RawModeNotAllowedByLicenseError,
209
+ 30 => Errors::SubscriptionsNotAllowedByLicenseError,
210
+ 32 => Errors::InvalidProgressiveNumberError,
211
+ 33 => Errors::InvalidProgressiveNumberError,
212
+ 60 => Errors::ClientVersionNotSupportedError
233
213
  }.freeze
234
214
 
235
215
  private_constant :API_ERROR_CODE_TO_CLASS
@@ -26,7 +26,7 @@ module Lightstreamer
26
26
  # stored in this attribute. If the session is terminated as a result of calling {#disconnect} then the error will be
27
27
  # {SessionEndError}.
28
28
  #
29
- # @return [Error, nil]
29
+ # @return [LightstreamerError, nil]
30
30
  attr_reader :error
31
31
 
32
32
  # Initializes this new Lightstreamer session with the passed options.
@@ -17,7 +17,7 @@ module Lightstreamer
17
17
  # If an error occurs on the stream thread that causes the stream to disconnect then the error will be stored in this
18
18
  # attribute.
19
19
  #
20
- # @return [Error, nil]
20
+ # @return [LightstreamerError, nil]
21
21
  attr_reader :error
22
22
 
23
23
  # Establishes a new stream connection using the authentication details from the passed session.
@@ -85,11 +85,11 @@ module Lightstreamer
85
85
  @thread = Thread.new do
86
86
  Thread.current.abort_on_exception = true
87
87
 
88
- connect_stream_and_process_data stream_create_post_request
88
+ create_new_stream
89
89
 
90
90
  while @loop
91
91
  @loop = false
92
- connect_stream_and_process_data stream_bind_post_request
92
+ bind_to_existing_stream
93
93
  end
94
94
 
95
95
  @thread = nil
@@ -97,36 +97,32 @@ module Lightstreamer
97
97
  end
98
98
  end
99
99
 
100
- def stream_create_post_request
100
+ def create_new_stream
101
101
  params = { LS_op2: 'create', LS_cid: 'mgQkwtwdysogQz2BJ4Ji kOj2Bg', LS_user: @session.username,
102
102
  LS_password: @session.password }
103
103
 
104
104
  params[:LS_adapter_set] = @session.adapter_set if @session.adapter_set
105
105
 
106
- Typhoeus::Request.new @stream_create_url, method: :post, connecttimeout: 15, params: params
106
+ execute_stream_post_request @stream_create_url, connect_timeout: 15, query: params
107
+
108
+ signal_connect_result_ready
107
109
  end
108
110
 
109
- def stream_bind_post_request
110
- Typhoeus::Request.new @stream_bind_url, method: :post, connecttimeout: 15, params: { LS_session: @session_id }
111
+ def bind_to_existing_stream
112
+ execute_stream_post_request @stream_bind_url, connect_timeout: 15, query: { LS_session: @session_id }
111
113
  end
112
114
 
113
- def connect_stream_and_process_data(request)
115
+ def execute_stream_post_request(url, options)
114
116
  @header = StreamConnectionHeader.new
115
117
 
116
118
  buffer = LineBuffer.new
117
- request.on_body do |data|
119
+ options[:response_block] = lambda do |data, _remaining_bytes, _total_bytes|
118
120
  buffer.process data, &method(:process_stream_line)
119
121
  end
120
122
 
121
- request.on_complete(&method(:on_request_complete))
122
- request.run
123
-
124
- signal_connect_result_ready
125
- end
126
-
127
- def on_request_complete(response)
128
- @error = @header.error if @header
129
- @error = RequestError.new(response.return_message, response.response_code) unless response.success?
123
+ Excon.post url, options
124
+ rescue Excon::Error => error
125
+ @error = Errors::ConnectionError.new error.message
130
126
  end
131
127
 
132
128
  def signal_connect_result_ready
@@ -142,12 +138,14 @@ module Lightstreamer
142
138
  end
143
139
 
144
140
  def process_header_line(line)
145
- return if @header.process_header_line line
141
+ header_incomplete = @header.process_line line
146
142
 
147
143
  @session_id = @header['SessionId']
148
144
  @control_address = @header['ControlAddress']
149
145
  @error = @header.error
150
146
 
147
+ return if header_incomplete
148
+
151
149
  signal_connect_result_ready
152
150
 
153
151
  @header = nil
@@ -157,7 +155,7 @@ module Lightstreamer
157
155
  if line =~ /^LOOP/
158
156
  @loop = true
159
157
  elsif line =~ /^END/
160
- @error = SessionEndError.new line[4..-1]
158
+ @error = Errors::SessionEndError.new line[4..-1]
161
159
  elsif line !~ /^(PROBE|Preamble:.*)$/
162
160
  @queue.push line
163
161
  end
@@ -7,7 +7,7 @@ module Lightstreamer
7
7
  # If there was an error in the header then this value will be set to the error instance that should be raised in
8
8
  # response.
9
9
  #
10
- # @return [Error, nil]
10
+ # @return [LightstreamerError, nil]
11
11
  attr_reader :error
12
12
 
13
13
  def initialize
@@ -21,7 +21,7 @@ module Lightstreamer
21
21
  # @param [String] line The line of header data to process.
22
22
  #
23
23
  # @return [Boolean] Whether the header is still incomplete and requires further data.
24
- def process_header_line(line)
24
+ def process_line(line)
25
25
  @lines << line
26
26
 
27
27
  return process_success if @lines.first == 'OK'
@@ -58,12 +58,12 @@ module Lightstreamer
58
58
  end
59
59
 
60
60
  def process_end
61
- @error = SessionEndError.new @lines[1]
61
+ @error = Errors::SessionEndError.new @lines[1]
62
62
  true
63
63
  end
64
64
 
65
65
  def process_sync_error
66
- @error = SyncError.new
66
+ @error = Errors::SyncError.new
67
67
  false
68
68
  end
69
69
 
@@ -1,4 +1,4 @@
1
1
  module Lightstreamer
2
2
  # The version of this gem.
3
- VERSION = '0.5'.freeze
3
+ VERSION = '0.6'.freeze
4
4
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lightstreamer
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Viney
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-26 00:00:00.000000000 Z
11
+ date: 2016-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: thor
14
+ name: excon
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.19'
19
+ version: '0.51'
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: '0.19'
26
+ version: '0.51'
27
27
  - !ruby/object:Gem::Dependency
28
- name: typhoeus
28
+ name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.1'
33
+ version: '0.19'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.1'
40
+ version: '0.19'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement