class Noam::Lemma

Attributes

listener[R]
name[R]
player[R]
speaks[R]

Public Class Methods

new(name, hears = [], speaks = []) click to toggle source
# File lib/noam_lemma/lemma.rb, line 7
def initialize(name, hears = [], speaks = [])
  @name = name
  @speaks = speaks
  @player = nil
  @listener = nil

  initialize_message_filter(hears)
end

Public Instance Methods

advertise(room_name) click to toggle source
discover() click to toggle source
# File lib/noam_lemma/lemma.rb, line 22
def discover
  advertise('')
end
hear(event_name, &block) click to toggle source
# File lib/noam_lemma/lemma.rb, line 26
def hear(event_name, &block)
  @message_filter.hear(event_name, &block)
end
hears() click to toggle source
# File lib/noam_lemma/lemma.rb, line 54
def hears
  @message_filter.hears
end
listen() click to toggle source
# File lib/noam_lemma/lemma.rb, line 39
def listen
  if @listener.connected?
    @message_filter.receive(@listener.take)
  else
    raise Noam::Disconnected.new("Listener disconnected")
  end
end
speak(event, value) click to toggle source
# File lib/noam_lemma/lemma.rb, line 30
def speak(event, value)
  if @player.connected?
    @player.put(Noam::Message::Playable.new(@name, event, value))
    true
  else
    raise Noam::Disconnected.new("Player disconnected")
  end
end
stop() click to toggle source
# File lib/noam_lemma/lemma.rb, line 47
def stop
  @player.stop if @player
  @listener.stop if @listener
  @player = nil
  @listener = nil
end

Private Instance Methods

initialize_message_filter(hears) click to toggle source
# File lib/noam_lemma/lemma.rb, line 66
def initialize_message_filter(hears)
  @message_filter = MessageFilter.new
  hears.each do |event_name|
    @message_filter.hear(event_name) {}
  end
end
start(host, port) click to toggle source
# File lib/noam_lemma/lemma.rb, line 60
def start(host, port)
  @listener = Listener.new
  @player = Player.new(host, port)
  @player.put(Message::Register.new(@name, @listener.port, @message_filter.hears, @speaks))
end