class OSC::Bundle
Attributes
timetag[RW]
Public Class Methods
decode(string)
click to toggle source
# File lib/ruby-osc/bundle.rb, line 28 def self.decode(string) string.sub!(/^#bundle\000/, "") t1, t2, content_str = string.unpack("N2a*") timetag = t1 == 0 && t2 == 1 ? nil : Time.at(t1 + t2 / (2**32.0) - 2_208_988_800) scanner = StringScanner.new content_str args = [] until scanner.eos? size = scanner.scan(/.{4}/).unpack("N").first arg_str = begin scanner.scan(/.{#{ size }}/nm) rescue raise(DecodeError, "An error occured while trying to decode bad formatted osc bundle") end args << OSC.decode(arg_str) end new timetag, *args end
new(timetag = nil, *args)
click to toggle source
Calls superclass method
# File lib/ruby-osc/bundle.rb, line 6 def initialize(timetag = nil, *args) args.each{ |arg| raise TypeError, "#{ arg.inspect } is required to be a Bundle or Message" unless Bundle === arg or Message === arg } raise TypeError, "#{ timetag.inspect } is required to be Time or nil" unless timetag.nil? or Time === timetag super args @timetag = timetag end
Public Instance Methods
==(other)
click to toggle source
# File lib/ruby-osc/bundle.rb, line 49 def ==(other) self.class == other.class and timetag == other.timetag and to_a == other.to_a end
encode()
click to toggle source
# File lib/ruby-osc/bundle.rb, line 13 def encode timetag = if @timetag time, _tag, dir = OSC.encoding_directive(@timetag) time.pack dir else "\000\000\000\000\000\000\000\001" end "#bundle\000#{ timetag }" + collect do |x| x = x.encode [x.size].pack("N") + x end.join end
to_a()
click to toggle source
# File lib/ruby-osc/bundle.rb, line 53 def to_a; Array.new self; end
to_s()
click to toggle source
# File lib/ruby-osc/bundle.rb, line 55 def to_s "OSC::Bundle(#{ join(', ') })" end