Class: OSC::OSCPacket
- Inherits:
-
Object
- Object
- OSC::OSCPacket
- Defined in:
- lib/osc-ruby/osc_packet.rb
Class Method Summary collapse
- .decode_simple_message(time, osc_packet) ⇒ Object
- .messages_from_network(string, ip_info = nil) ⇒ Object
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.
45 46 47 48 49 50 51 52 53 |
# File 'lib/osc-ruby/osc_packet.rb', line 45 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
38 39 40 41 42 43 |
# File 'lib/osc-ruby/osc_packet.rb', line 38 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, ip_info = nil) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/osc-ruby/osc_packet.rb', line 7 def self.( string, ip_info=nil ) = [] osc = new( string ) if osc.bundle? osc.get_string #=> bundle time = osc. osc..each do | | msg = ( time, OSCPacket.new( ) ) if ip_info # Append info for the ip address msg.ip_port = ip_info.shift msg.ip_address = ip_info.join(".") end << msg end else msg = ( time, osc ) if ip_info # Append info for the ip address msg.ip_port = ip_info.shift msg.ip_address = ip_info.join(".") end << msg end return end |
Instance Method Details
#bundle? ⇒ Boolean
122 123 124 |
# File 'lib/osc-ruby/osc_packet.rb', line 122 def bundle? !(@packet.to_s =~ /\A\#bundle/).nil? end |
#get_arguments ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/osc-ruby/osc_packet.rb', line 89 def get_arguments if @packet.getc == ?, = get_string args = [] .scan(/./) do | tag | args << @types[tag].call end args end end |
#get_blob ⇒ Object
115 116 117 118 119 120 |
# File 'lib/osc-ruby/osc_packet.rb', line 115 def get_blob l = @packet.getn(4).unpack('N')[0] b = @packet.getn(l) @packet.skip_padding b end |
#get_bundle_messages ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/osc-ruby/osc_packet.rb', line 55 def = [] until @packet.eof? l = @packet.getn(4).unpack('N')[0] << @packet.getn(l) end end |
#get_float32 ⇒ Object
109 110 111 112 113 |
# File 'lib/osc-ruby/osc_packet.rb', line 109 def get_float32 f = @packet.getn(4).unpack('g')[0] @packet.skip_padding f end |
#get_int32 ⇒ Object
102 103 104 105 106 107 |
# File 'lib/osc-ruby/osc_packet.rb', line 102 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
65 66 67 68 69 70 71 72 |
# File 'lib/osc-ruby/osc_packet.rb', line 65 def get_string result = '' until (c = @packet.getc) == string_delemeter result << c end @packet.skip_padding result end |
#get_timestamp ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/osc-ruby/osc_packet.rb', line 74 def #TODO: refactor this so a mortal can figure it out 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
126 127 128 |
# File 'lib/osc-ruby/osc_packet.rb', line 126 def string_delemeter "\x00" end |