osc-ruby 0.7.0 → 1.0.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.
data/Rakefile CHANGED
@@ -1,15 +1,13 @@
1
- require 'spec/rake/spectask'
1
+ require 'rspec/core/rake_task'
2
2
 
3
3
  task :default => :spec
4
4
 
5
- Spec::Rake::SpecTask.new do |t|
6
- t.libs << 'lib'
7
- t.warning = false
5
+ RSpec::Core::RakeTask.new do |t|
8
6
  t.rcov = false
9
- t.spec_opts = ["--colour"]
7
+ t.rspec_opts = ["--colour"]
10
8
  end
11
9
 
12
- require 'rake/rdoctask'
10
+ require 'rdoc/task'
13
11
  Rake::RDocTask.new do |rdoc|
14
12
  if File.exist?('VERSION')
15
13
  version = File.read('VERSION')
@@ -22,32 +20,3 @@ Rake::RDocTask.new do |rdoc|
22
20
  rdoc.rdoc_files.include('README*')
23
21
  rdoc.rdoc_files.include('lib/**/*.rb')
24
22
  end
25
-
26
- require 'rake/packagetask'
27
- require 'rake/gempackagetask'
28
-
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
-
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
46
-
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
53
- end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.0
1
+ 1.0.0
@@ -0,0 +1,18 @@
1
+ # compatible with ruby 1.8
2
+ $:.unshift File.join( File.dirname( __FILE__ ), '..', 'lib')
3
+ require 'osc-ruby'
4
+
5
+ @server = OSC::Server.new( 3333 )
6
+ @client = OSC::Client.new( 'localhost', 3333 )
7
+
8
+ @server.add_method '/greeting' do | message |
9
+ puts message.ip_address + ":" + message.ip_port.to_s + " -- " + message.address + " -- " + message.to_a.to_s
10
+ end
11
+
12
+ Thread.new do
13
+ @server.run
14
+ end
15
+
16
+ @client.send( OSC::Message.new( "/greeting", "hullo!" ))
17
+
18
+ sleep( 3 )
@@ -0,0 +1,22 @@
1
+ # compatible with ruby 1.8, 1.9, and jruby
2
+ $:.unshift File.join( File.dirname( __FILE__ ), '..', 'lib')
3
+ require 'osc-ruby'
4
+
5
+ require 'rubygems'
6
+ require 'eventmachine'
7
+ require 'osc-ruby/em_server'
8
+
9
+ @server = OSC::EMServer.new( 3333 )
10
+ @client = OSC::Client.new( 'localhost', 3333 )
11
+
12
+ @server.add_method '/greeting' do | message |
13
+ puts message.ip_address + ":" + message.ip_port.to_s + " -- " + message.address + " -- " + message.to_a.to_s
14
+ end
15
+
16
+ Thread.new do
17
+ @server.run
18
+ end
19
+
20
+ @client.send( OSC::Message.new( "/greeting" , "hullo!" ))
21
+
22
+ sleep( 3 )
@@ -5,7 +5,8 @@ module OSC
5
5
 
6
6
  class Connection < EventMachine::Connection
7
7
  def receive_data data
8
- Channel << OSC::OSCPacket.messages_from_network( data )
8
+ ip_info = get_peername[2,6].unpack "nC4"
9
+ Channel << OSC::OSCPacket.messages_from_network( data, ip_info )
9
10
  end
10
11
  end
11
12
 
@@ -2,6 +2,8 @@ module OSC
2
2
  class Message
3
3
  attr_accessor :address
4
4
  attr_accessor :time
5
+ attr_accessor :ip_address
6
+ attr_accessor :ip_port
5
7
 
6
8
  def self.new_with_time( address, time, tags=nil, *args )
7
9
  message = new( address, tags, *args )
@@ -4,7 +4,7 @@ require 'ostruct'
4
4
  module OSC
5
5
  class OSCPacket
6
6
 
7
- def self.messages_from_network( string )
7
+ def self.messages_from_network( string, ip_info=nil )
8
8
  messages = []
9
9
  osc = new( string )
10
10
 
@@ -13,11 +13,23 @@ module OSC
13
13
  time = osc.get_timestamp
14
14
 
15
15
  osc.get_bundle_messages.each do | message |
16
- messages << decode_simple_message( time, OSCPacket.new( message ) )
16
+ msg = decode_simple_message( time, OSCPacket.new( message ) )
17
+ if ip_info
18
+ # Append info for the ip address
19
+ msg.ip_address = ip_info[1].to_s + "." + ip_info[2].to_s + "." + ip_info[3].to_s + "." + ip_info[4].to_s
20
+ msg.ip_port = ip_info[0]
21
+ end
22
+ messages << msg
17
23
  end
18
24
 
19
25
  else
20
- messages << decode_simple_message( time, osc )
26
+ msg = decode_simple_message( time, osc )
27
+ if ip_info
28
+ # Append info for the ip address
29
+ msg.ip_address = ip_info[1].to_s + "." + ip_info[2].to_s + "." + ip_info[3].to_s + "." + ip_info[4].to_s
30
+ msg.ip_port = ip_info[0]
31
+ end
32
+ messages << msg
21
33
  end
22
34
 
23
35
  return messages
@@ -1,6 +1,5 @@
1
1
  module OSC
2
2
  class Server
3
-
4
3
  def initialize( port )
5
4
  @socket = UDPSocket.new
6
5
  @socket.bind( '', port )
@@ -77,8 +76,10 @@ private
77
76
  loop do
78
77
  osc_data, network = @socket.recvfrom( 16384 )
79
78
  begin
80
-
81
- OSCPacket.messages_from_network( osc_data ).each do |message|
79
+ ip_info = Array.new
80
+ ip_info << network[1]
81
+ ip_info.concat(network[2].split('.'))
82
+ OSCPacket.messages_from_network( osc_data, ip_info ).each do |message|
82
83
  @queue.push(message)
83
84
  end
84
85
 
@@ -1,5 +1,4 @@
1
1
  require 'osc-ruby'
2
- require 'spec'
2
+ require 'rspec'
3
3
 
4
4
  require 'builders/message_builder'
5
-
@@ -6,102 +6,102 @@ describe OSC::OSCPacket do
6
6
  @address = "/hi"
7
7
  @first_int = 42
8
8
  @second_int = 33
9
-
9
+
10
10
  @first_float = 42.01
11
11
  @second_float = 33.01
12
-
12
+
13
13
  @first_string = "greetings"
14
14
  @second_string = "how are you?"
15
-
15
+
16
16
  @first_blob = "this is a fake blob"
17
17
  @second_blob = "tis another fake blob"
18
-
18
+
19
19
  @builder = MessageBuilder.new
20
20
  @builder.with_address( @address )
21
21
  end
22
-
22
+
23
23
  it "should decode the address of a simple message from the network data" do
24
24
  sent_msg = @builder.build
25
-
25
+
26
26
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
27
-
27
+
28
28
  msg.first.address.should == @address
29
29
  end
30
-
30
+
31
31
  it "should decode the int arg of a simple message from the network data" do
32
32
  sent_msg = @builder.with_int( @first_int ).build
33
-
33
+
34
34
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
35
-
35
+
36
36
  msg.first.to_a.should == [@first_int]
37
37
  end
38
-
38
+
39
39
  it "should decode two int args" do
40
40
  sent_msg = @builder.with_int( @first_int ).with_int( @second_int ).build
41
-
41
+
42
42
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
43
-
43
+
44
44
  msg.first.to_a.should == [@first_int, @second_int]
45
45
  end
46
-
46
+
47
47
  it "shold decode address with float arg" do
48
48
  sent_msg = @builder.with_float( @first_float ).build
49
-
49
+
50
50
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
51
-
52
- msg.first.to_a[0].should be_close( @first_float, 0.001 )
51
+
52
+ msg.first.to_a[0].should be_within( 0.001 ).of( @first_float )
53
53
  end
54
-
55
-
54
+
55
+
56
56
  it "shold decode address with two float args" do
57
57
  sent_msg = @builder.with_float( @first_float ).with_float( @second_float).build
58
-
58
+
59
59
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
60
-
60
+
61
61
  args = msg.first.to_a
62
- args.first.should be_close( @first_float, 0.001 )
63
- args[1].should be_close( @second_float, 0.0001 )
62
+ args.first.should be_within( 0.001 ).of( @first_float )
63
+ args[1].should be_within( 0.001 ).of( @second_float )
64
64
  end
65
-
65
+
66
66
  it "should decode address with string arg" do
67
67
  sent_msg = @builder.with_string( @first_string ).build
68
-
68
+
69
69
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
70
-
70
+
71
71
  msg.first.to_a.should == [@first_string]
72
72
  end
73
-
73
+
74
74
  it "should decode address with multiple string args" do
75
75
  sent_msg = @builder.with_string( @first_string ).with_string( @second_string).build
76
76
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
77
-
77
+
78
78
  args = msg.first.to_a
79
- args[0].should == @first_string
80
- args[1].should == @second_string
79
+ args[0].should eql @first_string
80
+ args[1].should eql @second_string
81
81
  end
82
-
83
-
82
+
83
+
84
84
  it "should decode messages with three different types of args" do
85
85
  sent_msg = @builder.with_int( @first_int ).
86
86
  with_float( @second_float ).
87
87
  with_string( @first_string ).
88
88
  build
89
-
89
+
90
90
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
91
-
91
+
92
92
  args = msg.first.to_a
93
-
93
+
94
94
  args[0].should eql( @first_int )
95
- args[1].should be_close( @second_float, 0.0001 )
95
+ args[1].should be_within( 0.001 ).of( @second_float )
96
96
  args[2].should eql( @first_string )
97
97
  end
98
-
98
+
99
99
  it "should decode messages with blobs" do
100
100
  sent_msg = @builder.with_blob( @first_blob ).build
101
-
102
-
101
+
102
+
103
103
  msg = OSC::OSCPacket.messages_from_network( sent_msg.encode )
104
-
104
+
105
105
  args = msg.first.to_a
106
106
  args.first.should eql( @first_blob )
107
107
  end
metadata CHANGED
@@ -1,37 +1,30 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: osc-ruby
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 7
8
- - 0
9
- version: 0.7.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Colin Harris
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-08-15 00:00:00 -05:00
18
- default_executable:
12
+ date: 2012-10-28 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
- description: This OSC gem originally created by Tadayoshi Funaba has been updated for ruby 1.9/JRuby compatibility
14
+ description: This OSC gem originally created by Tadayoshi Funaba has been updated
15
+ for ruby 1.9/JRuby compatibility
22
16
  email: qzzzq1@gmail.com
23
17
  executables: []
24
-
25
18
  extensions: []
26
-
27
19
  extra_rdoc_files: []
28
-
29
- files:
20
+ files:
30
21
  - Rakefile
31
22
  - VERSION
32
23
  - LICENSE
33
24
  - examples/classic_server.rb
25
+ - examples/classic_server_ip_info.rb
34
26
  - examples/event_machine_server.rb
27
+ - examples/ip_info.rb
35
28
  - lib/osc-ruby/address_pattern.rb
36
29
  - lib/osc-ruby/bundle.rb
37
30
  - lib/osc-ruby/client.rb
@@ -45,37 +38,42 @@ files:
45
38
  - lib/osc-ruby/osc_types.rb
46
39
  - lib/osc-ruby/server.rb
47
40
  - lib/osc-ruby.rb
48
- has_rdoc: true
41
+ - spec/builders/message_builder.rb
42
+ - spec/spec_helper.rb
43
+ - spec/unit/address_pattern_spec.rb
44
+ - spec/unit/message_builder_spec.rb
45
+ - spec/unit/message_bundle_spec.rb
46
+ - spec/unit/message_spec.rb
47
+ - spec/unit/network_packet_spec.rb
48
+ - spec/unit/osc_argument_spec.rb
49
+ - spec/unit/osc_complex_packets_spec.rb
50
+ - spec/unit/osc_simple_packets_spec.rb
51
+ - spec/unit/osc_types_spec.rb
49
52
  homepage: http://github.com/aberant/osc-ruby
50
53
  licenses: []
51
-
52
54
  post_install_message:
53
55
  rdoc_options: []
54
-
55
- require_paths:
56
+ require_paths:
56
57
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- segments:
62
- - 0
63
- version: "0"
64
- required_rubygems_version: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- segments:
69
- - 0
70
- version: "0"
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
71
70
  requirements: []
72
-
73
71
  rubyforge_project:
74
- rubygems_version: 1.3.6
72
+ rubygems_version: 1.8.24
75
73
  signing_key:
76
74
  specification_version: 3
77
75
  summary: a ruby client for the OSC protocol
78
- test_files:
76
+ test_files:
79
77
  - spec/builders/message_builder.rb
80
78
  - spec/spec_helper.rb
81
79
  - spec/unit/address_pattern_spec.rb