Class: OSC::OSCPacket
Class Method Summary collapse
Instance Method Summary collapse
- #bundle? ⇒ Boolean
- #get_arguments ⇒ Object
- #get_blob ⇒ Object
- #get_bundle_messages ⇒ Object
- #get_float32 ⇒ Object
- #get_int32 ⇒ Object
- #get_string ⇒ Object
- #get_timestamp ⇒ Object
-
#initialize(string) ⇒ OSCPacket
constructor
A new instance of OSCPacket.
- #string_delemeter ⇒ Object
Constructor Details
#initialize(string) ⇒ OSCPacket
Returns a new instance of OSCPacket.
33 34 35 36 37 38 39 40 41 |
# File 'lib/osc-ruby/osc_packet.rb', line 33 def initialize( string ) @packet = NetworkPacket.new( string ) @types = { "i" => lambda{ OSCInt32.new( get_int32 ) }, "f" => lambda{ OSCFloat32.new( get_float32 ) }, "s" => lambda{ OSCString.new( get_string ) }, "b" => lambda{ OSCBlob.new( get_blob )} } end |
Class Method Details
.decode_simple_message(time, osc_packet) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/osc-ruby/osc_packet.rb', line 26 def self.( time, osc_packet ) address = osc_packet.get_string args = osc_packet.get_arguments Message.new_with_time(address, time, nil, *args ) end |
.messages_from_network(string) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/osc-ruby/osc_packet.rb', line 7 def self.( string ) = [] osc = new( string ) if osc.bundle? bundle = osc.get_string time = osc. osc..each do | | << ( time, OSCPacket.new( ) ) end else << ( time, osc ) end return end |
Instance Method Details
#bundle? ⇒ Boolean
109 110 111 |
# File 'lib/osc-ruby/osc_packet.rb', line 109 def bundle? !(@packet.to_s =~ /\A\#bundle/).nil? end |
#get_arguments ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/osc-ruby/osc_packet.rb', line 76 def get_arguments if @packet.getc == ?, = get_string args = [] .scan(/./) do | tag | args << @types[tag].call end args end end |
#get_blob ⇒ Object
102 103 104 105 106 107 |
# File 'lib/osc-ruby/osc_packet.rb', line 102 def get_blob l = @packet.getn(4).unpack('N')[0] b = @packet.getn(l) @packet.skip_padding b end |
#get_bundle_messages ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'lib/osc-ruby/osc_packet.rb', line 43 def = [] until @packet.eof? l = @packet.getn(4).unpack('N')[0] << @packet.getn(l) end end |
#get_float32 ⇒ Object
96 97 98 99 100 |
# File 'lib/osc-ruby/osc_packet.rb', line 96 def get_float32 f = @packet.getn(4).unpack('g')[0] @packet.skip_padding f end |
#get_int32 ⇒ Object
89 90 91 92 93 94 |
# File 'lib/osc-ruby/osc_packet.rb', line 89 def get_int32 i = @packet.getn(4).unpack('N')[0] i -= 2**32 if i > (2**31-1) @packet.skip_padding i end |
#get_string ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/osc-ruby/osc_packet.rb', line 53 def get_string result = '' until (c = @packet.getc) == string_delemeter result << c end @packet.skip_padding result end |
#get_timestamp ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/osc-ruby/osc_packet.rb', line 62 def t1 = @packet.getn(4).unpack('N')[0] t2 = @packet.getn(4).unpack('N')[0] @packet.skip_padding if t1 == 0 && t2 == 1 time = nil else time = t1 + t2.to_f / (2**32) end time end |
#string_delemeter ⇒ Object
113 114 115 116 |
# File 'lib/osc-ruby/osc_packet.rb', line 113 def string_delemeter # ruby 1.9 has multicharacter support RUBY_VERSION.include?( '1.9' ) ? "\x00" : 0 end |