osc-ruby 0.6.3 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2009 Colin Harris
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/Rakefile CHANGED
@@ -23,23 +23,31 @@ Rake::RDocTask.new do |rdoc|
23
23
  rdoc.rdoc_files.include('lib/**/*.rb')
24
24
  end
25
25
 
26
+ require 'rake/packagetask'
27
+ require 'rake/gempackagetask'
26
28
 
27
- begin
28
- require 'jeweler'
29
- Jeweler::Tasks.new do |gem|
30
- gem.name = "osc-ruby"
31
- gem.description = "a ruby client for the OSC protocol"
32
- gem.summary = %Q{inital gem}
33
- gem.email = "qzzzq1@gmail.com"
34
- gem.homepage = "http://github.com/aberant/osc-ruby"
35
- gem.authors = ["aberant"]
36
- gem.files = FileList['Rakefile', 'examples/**/*', 'lib/**/*'].to_a
37
- gem.test_files = FileList['spec/**/*.rb']
38
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
39
- end
29
+ ### Task: gem
30
+ gemspec = Gem::Specification.new do |gem|
31
+ gem.name = "osc-ruby"
32
+ gem.version = File.read('VERSION')
33
+
34
+ gem.summary = "a ruby client for the OSC protocol"
35
+ gem.description = "This OSC gem originally created by Tadayoshi Funaba has been updated for ruby 1.9/JRuby compatibility"
36
+
37
+ gem.authors = "Colin Harris"
38
+ gem.email = "qzzzq1@gmail.com"
39
+ gem.homepage = "http://github.com/aberant/osc-ruby"
40
40
 
41
- Jeweler::GemcutterTasks.new
41
+ gem.has_rdoc = true
42
+
43
+ gem.files = FileList['Rakefile', 'VERSION', 'LICENSE', 'examples/**/*', 'lib/**/*'].to_a
44
+ gem.test_files = FileList['spec/**/*.rb']
45
+ end
42
46
 
43
- rescue LoadError
44
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
47
+ Rake::GemPackageTask.new( gemspec ) do |task|
48
+ task.gem_spec = gemspec
49
+ task.need_tar = false
50
+ task.need_tar_gz = true
51
+ task.need_tar_bz2 = true
52
+ task.need_zip = true
45
53
  end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.7.0
@@ -18,7 +18,7 @@ module OSC
18
18
  end
19
19
 
20
20
  def run
21
- EM::run { EM::open_datagram_socket "localhost", @port, Connection }
21
+ EM::run { EM::open_datagram_socket "0.0.0.0", @port, Connection }
22
22
  end
23
23
 
24
24
  def add_method(address_pattern, &proc)
@@ -1,27 +1,27 @@
1
1
  module OSC
2
2
  class Server
3
3
 
4
- def initialize(port)
4
+ def initialize( port )
5
5
  @socket = UDPSocket.new
6
- @socket.bind('', port)
7
- @cb = []
6
+ @socket.bind( '', port )
7
+ @matchers = []
8
8
  @queue = Queue.new
9
9
  end
10
-
10
+
11
11
  def run
12
12
  start_dispatcher
13
-
13
+
14
14
  start_detector
15
15
  end
16
-
16
+
17
17
  def stop
18
18
  @socket.close
19
19
  end
20
20
 
21
- def add_method(address_pattern, &proc)
21
+ def add_method( address_pattern, &proc )
22
22
  matcher = AddressPattern.new( address_pattern )
23
-
24
- @cb << [matcher, proc]
23
+
24
+ @matchers << [matcher, proc]
25
25
  end
26
26
 
27
27
  private
@@ -33,7 +33,7 @@ private
33
33
  Thread.main.raise $!
34
34
  end
35
35
  end
36
-
36
+
37
37
  def start_dispatcher
38
38
  Thread.fork do
39
39
  begin
@@ -44,14 +44,6 @@ private
44
44
  end
45
45
  end
46
46
 
47
- def sendmesg(mesg)
48
- @cb.each do |matcher, obj|
49
- if matcher.match?( mesg.address )
50
- obj.call( mesg )
51
- end
52
- end
53
- end
54
-
55
47
  def dispatcher
56
48
  loop do
57
49
  mesg = @queue.pop
@@ -59,33 +51,41 @@ private
59
51
  end
60
52
  end
61
53
 
62
- def detector
63
- loop do
64
- pa, network = @socket.recvfrom(16384)
65
- begin
66
-
67
- OSCPacket.messages_from_network(pa).each do |x|
68
- @queue.push(x)
69
- end
70
-
71
- rescue EOFError
72
- end
73
- end
74
- end
75
-
76
54
  def dispatch_message( message )
77
55
  diff = ( message.time || 0 ) - Time.now.to_ntp
78
-
56
+
79
57
  if diff <= 0
80
58
  sendmesg( message)
81
59
  else # spawn a thread to wait until it's time
82
60
  Thread.fork do
83
- sleep(diff)
84
- sendmesg(mesg)
61
+ sleep( diff )
62
+ sendmesg( mesg )
85
63
  Thread.exit
86
64
  end
87
65
  end
88
66
  end
89
67
 
68
+ def sendmesg(mesg)
69
+ @matchers.each do |matcher, proc|
70
+ if matcher.match?( mesg.address )
71
+ proc.call( mesg )
72
+ end
73
+ end
74
+ end
75
+
76
+ def detector
77
+ loop do
78
+ osc_data, network = @socket.recvfrom( 16384 )
79
+ begin
80
+
81
+ OSCPacket.messages_from_network( osc_data ).each do |message|
82
+ @queue.push(message)
83
+ end
84
+
85
+ rescue EOFError
86
+ end
87
+ end
88
+ end
89
+
90
90
  end
91
91
  end
metadata CHANGED
@@ -1,31 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osc-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 7
8
+ - 0
9
+ version: 0.7.0
5
10
  platform: ruby
6
11
  authors:
7
- - aberant
12
+ - Colin Harris
8
13
  autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-08 00:00:00 -06:00
17
+ date: 2010-08-15 00:00:00 -05:00
13
18
  default_executable:
14
19
  dependencies: []
15
20
 
16
- description: a ruby client for the OSC protocol
21
+ description: This OSC gem originally created by Tadayoshi Funaba has been updated for ruby 1.9/JRuby compatibility
17
22
  email: qzzzq1@gmail.com
18
23
  executables: []
19
24
 
20
25
  extensions: []
21
26
 
22
- extra_rdoc_files:
23
- - README.rdoc
27
+ extra_rdoc_files: []
28
+
24
29
  files:
25
30
  - Rakefile
31
+ - VERSION
32
+ - LICENSE
26
33
  - examples/classic_server.rb
27
34
  - examples/event_machine_server.rb
28
- - lib/osc-ruby.rb
29
35
  - lib/osc-ruby/address_pattern.rb
30
36
  - lib/osc-ruby/bundle.rb
31
37
  - lib/osc-ruby/client.rb
@@ -38,35 +44,37 @@ files:
38
44
  - lib/osc-ruby/osc_packet.rb
39
45
  - lib/osc-ruby/osc_types.rb
40
46
  - lib/osc-ruby/server.rb
41
- - README.rdoc
47
+ - lib/osc-ruby.rb
42
48
  has_rdoc: true
43
49
  homepage: http://github.com/aberant/osc-ruby
44
50
  licenses: []
45
51
 
46
52
  post_install_message:
47
- rdoc_options:
48
- - --charset=UTF-8
53
+ rdoc_options: []
54
+
49
55
  require_paths:
50
56
  - lib
51
57
  required_ruby_version: !ruby/object:Gem::Requirement
52
58
  requirements:
53
59
  - - ">="
54
60
  - !ruby/object:Gem::Version
61
+ segments:
62
+ - 0
55
63
  version: "0"
56
- version:
57
64
  required_rubygems_version: !ruby/object:Gem::Requirement
58
65
  requirements:
59
66
  - - ">="
60
67
  - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
61
70
  version: "0"
62
- version:
63
71
  requirements: []
64
72
 
65
73
  rubyforge_project:
66
- rubygems_version: 1.3.5
74
+ rubygems_version: 1.3.6
67
75
  signing_key:
68
76
  specification_version: 3
69
- summary: inital gem
77
+ summary: a ruby client for the OSC protocol
70
78
  test_files:
71
79
  - spec/builders/message_builder.rb
72
80
  - spec/spec_helper.rb
@@ -1,72 +0,0 @@
1
- = An OSC client for Ruby
2
-
3
- http://opensoundcontrol.org/
4
-
5
- == Description
6
-
7
- This OSC gem originally created by Tadayoshi Funaba has been updated for ruby 1.9 compatibility. I've made a point to make this code as expressive as possible and provide a test suite for confident hacking. It also should be flexible enough to support most crazy ideas.
8
-
9
- Compatible with ruby 1.8, 1.9, and jruby
10
-
11
- == Install
12
-
13
- sudo gem install osc-ruby
14
-
15
- for the EMServer, you will need EventMachine
16
-
17
- sudo gem install eventmachine
18
-
19
- == Event Machine example
20
-
21
- # compatible with ruby 1.8, 1.9, and jruby
22
- require 'rubygems'
23
- require 'osc-ruby'
24
- require 'osc-ruby/em_server'
25
-
26
- @server = OSC::EMServer.new( 3333 )
27
- @client = OSC::Client.new( 'localhost', 3333 )
28
-
29
- @server.add_method '/greeting' do | message |
30
- puts message.to_a
31
- end
32
-
33
- Thread.new do
34
- @server.run
35
- end
36
-
37
- @client.send( OSC::Message.new( "/greeting" , "hullo!" ))
38
-
39
- sleep( 3 )
40
-
41
- == Classic example
42
-
43
- # compatible with ruby 1.8
44
- require 'rubygems'
45
- require 'osc-ruby'
46
-
47
-
48
- @server = OSC::Server.new( 3333 )
49
- @client = OSC::Client.new( 'localhost', 3333 )
50
-
51
- @server.add_method '/greeting' do | message |
52
- puts message.inspect
53
- end
54
-
55
- Thread.new do
56
- @server.run
57
- end
58
-
59
- @client.send( OSC::Message.new( "/greeting", "hullo!" ))
60
-
61
- sleep( 3 )
62
-
63
-
64
- == Credits
65
-
66
- Originally created by...
67
-
68
- Tadayoshi Funaba
69
-
70
- http://www.funaba.org/en/
71
-
72
- thx also to Toby Tripp and Obtiva