module Sass::Observer
def initialize(transport)
def initialize(transport) @transport = transport @mutex = Mutex.new @condition_variable = ConditionVariable.new @error = nil @message = nil @transport.add_observer self end
def receive_message
def receive_message @mutex.synchronize do @condition_variable.wait(@mutex) if @error.nil? && @message.nil? end raise @error unless @error.nil? @message end
def send_message(message)
def send_message(message) @transport.send_message(message) end
def update(error, message)
def update(error, message) @transport.delete_observer self @mutex.synchronize do @error = error @message = message @condition_variable.broadcast end end