Sha256: 7f8f26f93598d2cd9cb282a5e15fece25d19be24ba853d2d96fce9a918de660f
Contents?: true
Size: 1.24 KB
Versions: 2
Compression:
Stored size: 1.24 KB
Contents
require 'rubygems' require 'eventmachine' require File.join( File.dirname( __FILE__), '..', 'osc-ruby') module OSC Channel = EM::Channel.new class Connection < EventMachine::Connection def receive_data data Channel << OSC::OSCPacket.messages_from_network( data ) end end class EMServer def initialize( port = 3333 ) @port = port setup_dispatcher @tuples = [] end def run EM::run { EM::open_datagram_socket "localhost", @port, Connection } end def add_method(address_pattern, &proc) matcher = AddressPattern.new( address_pattern ) @tuples << [matcher, proc] end private def setup_dispatcher Channel.subscribe do |messages| messages.each do |message| diff = ( message.time || 0 ) - Time.now.to_ntp if diff <= 0 sendmesg( message ) else EM.defer do sleep( diff ) sendmesg( message ) end end end end end def sendmesg(mesg) @tuples.each do |matcher, obj| if matcher.match?( mesg.address ) obj.call( mesg ) end end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
aberant-osc-ruby-0.2.0 | lib/osc-ruby/em_server.rb |
osc-ruby-0.2.0 | lib/osc-ruby/em_server.rb |