ruby_fs 1.0.4 → 1.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d348f43f6d10b00d99167d5acb31ad6290773d23
4
- data.tar.gz: a15e0e300a7842d26e7c2fc2b6d0339bbe156eba
3
+ metadata.gz: 32b68c933f40664fb0b884507a542b4d10914e91
4
+ data.tar.gz: e7e1821584741db70d7040deeadd2017f15bc1f3
5
5
  SHA512:
6
- metadata.gz: 4a0d84722ff7c6676f2c16e34d69c1b1e3bfae9787165f87da562f655a42c8918003469ed88715166b0eb6fcccb7c59a9a77704eebdbef067a25fb38f3c4bc5a
7
- data.tar.gz: 932ae43643c522ce909c06c3b7adebd7649923576dd09cf429e54af1926af961b4480cd0e38273ae0227b5629831000f0ea4f95e9be7c410cbcdb8c3dcb3b6f2
6
+ metadata.gz: 4a1ddf66fe30a97596f9bf9f83fcde3909e69aeb3fb05480e21781eb0207af4c811ef345c8768b7b1d9ff1da8e05a8b88d963f3fea7475d34e8bc559fe729bc8
7
+ data.tar.gz: 9f138ddc9b654c4e9f7188ace388920413fceefa08461ec959cf76f055b096027139ebdd41677d7b4c3f28895fedd1833207eb655da45309aec20e2a619cb8d1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # develop
2
2
 
3
+ # 1.0.5
4
+ * Bugfix: Allow sending large app arguments. Application arguments (headers in general) are limited to 2048 bytes. The work-around is to send them in the body of the message with a content-length header.
5
+ * CS: Avoid Celluloid deprecation warnings
6
+
3
7
  # 1.0.4
4
8
  * Bugfix: Loosen celluloid dependency
5
9
 
@@ -17,6 +17,8 @@ module RubyFS
17
17
 
18
18
  include Celluloid::IO
19
19
 
20
+ finalizer :finalize
21
+
20
22
  def initialize(host, port, secret, event_callback, events = true)
21
23
  super()
22
24
  @host, @port, @secret, @event_callback, @events = host, port, secret, event_callback, events
@@ -60,9 +62,11 @@ module RubyFS
60
62
  uuid = SecureRandom.uuid
61
63
  @command_callbacks << (callback || lambda { |reply| signal uuid, reply })
62
64
  string = "#{command}\n"
65
+ body_value = options.delete :command_body_value
63
66
  options.each_pair do |key, value|
64
67
  string << "#{key.to_s.gsub '_', '-'}: #{value}\n" if value
65
68
  end
69
+ string << "\n" << body_value << "\n" if body_value
66
70
  string << "\n"
67
71
  send_data string
68
72
  wait uuid unless callback
@@ -108,21 +112,19 @@ module RubyFS
108
112
  #
109
113
  # @return [RubyFS::Response] response the application's response object
110
114
  def application(call, appname, options = nil)
111
- sendmsg call, :call_command => 'execute', :execute_app_name => appname, :execute_app_arg => options
115
+ opts = {call_command: 'execute', execute_app_name: appname}
116
+ if options
117
+ opts[:content_type] = 'text/plain'
118
+ opts[:content_length] = options.bytesize
119
+ opts[:command_body_value] = options
120
+ end
121
+ sendmsg call, opts
112
122
  end
113
123
 
114
124
  #
115
125
  # Shutdown the stream and disconnect from the socket
116
126
  alias :shutdown :terminate
117
127
 
118
- # @private
119
- def finalize
120
- logger.debug "Finalizing stream"
121
- @socket.close if @socket
122
- @state = :stopped
123
- fire_event Disconnected.new
124
- end
125
-
126
128
  #
127
129
  # Fire an event to the specified callback
128
130
  #
@@ -145,6 +147,13 @@ module RubyFS
145
147
 
146
148
  private
147
149
 
150
+ def finalize
151
+ logger.debug "Finalizing stream"
152
+ @socket.close if @socket
153
+ @state = :stopped
154
+ fire_event Disconnected.new
155
+ end
156
+
148
157
  def receive_data(data)
149
158
  logger.trace "[RECV] #{data}"
150
159
  @lexer << data
@@ -159,7 +168,7 @@ module RubyFS
159
168
  @command_callbacks.pop.call CommandReply.new(headers, (content == '' ? nil : content))
160
169
  when 'auth/request'
161
170
  command "auth #{@secret}" do
162
- command! "event json ALL" if @events
171
+ async.command "event json ALL" if @events
163
172
  end
164
173
  when 'text/disconnect-notice'
165
174
  terminate
@@ -1,3 +1,3 @@
1
1
  module RubyFS
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.5"
3
3
  end
data/ruby_fs.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_runtime_dependency %q<celluloid-io>, ["~> 0.12"]
21
+ s.add_runtime_dependency %q<celluloid-io>, ["~> 0.13"]
22
22
  s.add_runtime_dependency %q<json>
23
23
 
24
24
  s.add_development_dependency %q<bundler>, ["~> 1.0"]
@@ -34,7 +34,7 @@ module RubyFS
34
34
  mock_target.should_receive(:receive_data).send(*(times ? [:exactly, times] : [:at_least, 1])).with &block
35
35
  s = ServerMock.new '127.0.0.1', server_port, mock_target
36
36
  @stream = Stream.new '127.0.0.1', server_port, secret, lambda { |m| client.message_received m }, events
37
- @stream.run!
37
+ @stream.async.run
38
38
  sleep 0.1
39
39
  fake_client.call s if fake_client.respond_to? :call
40
40
  Celluloid::Actor.join s
@@ -156,7 +156,7 @@ Reply-Text: +OK accepted
156
156
  it "can send commands with options" do
157
157
  expect_connected_event
158
158
  expect_disconnected_event
159
- mocked_server(1, lambda { |server| @stream.command! 'foo', :one => 1, :foo_bar => :doo_dah }) do |val, server|
159
+ mocked_server(1, lambda { |server| @stream.async.command 'foo', :one => 1, :foo_bar => :doo_dah }) do |val, server|
160
160
  val.should == %Q(foo
161
161
  one: 1
162
162
  foo-bar: doo_dah
@@ -231,7 +231,7 @@ Reply-Text: +OK accepted
231
231
  end
232
232
  end
233
233
 
234
- it "can execute applications on calls with options and returns the response" do
234
+ it "can execute applications on calls with options (in the body) and returns the response" do
235
235
  expect_connected_event
236
236
  expect_disconnected_event
237
237
  reply = CommandReply.new(:content_type => 'command/reply', :reply_text => '+OK accepted')
@@ -239,7 +239,10 @@ Reply-Text: +OK accepted
239
239
  val.should == %Q(SendMsg aUUID
240
240
  call-command: execute
241
241
  execute-app-name: playback
242
- execute-app-arg: /tmp/test.wav
242
+ content-type: text/plain
243
+ content-length: 13
244
+
245
+ /tmp/test.wav
243
246
 
244
247
  )
245
248
  server.send_data %Q(
@@ -3,11 +3,13 @@ MockServer = Class.new
3
3
  class ServerMock
4
4
  include Celluloid::IO
5
5
 
6
+ finalizer :finalize
7
+
6
8
  def initialize(host, port, mock_target = MockServer.new)
7
9
  @server = TCPServer.new host, port
8
10
  @mock_target = mock_target
9
11
  @clients = []
10
- run!
12
+ async.run
11
13
  end
12
14
 
13
15
  def finalize
@@ -18,7 +20,7 @@ class ServerMock
18
20
 
19
21
  def run
20
22
  after(1) { terminate }
21
- loop { handle_connection! @server.accept }
23
+ loop { async.handle_connection @server.accept }
22
24
  end
23
25
 
24
26
  def handle_connection(socket)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_fs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Langfeld
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-20 00:00:00.000000000 Z
11
+ date: 2013-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: celluloid-io
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0.12'
19
+ version: '0.13'
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.12'
26
+ version: '0.13'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement