class Fluent::PluginHelper::Server::CallbackSocket

def on(event, &callback)

def on(event, &callback)
  raise "BUG: this event is disabled for #{@server_type}: #{event}" unless @enabled_events.include?(event)
  case event
  when :data
    @sock.data(&callback)
  when :write_complete
    cb = ->(){ callback.call(self) }
    @sock.on_write_complete(&cb)
  when :close
    cb = ->(){ callback.call(self) }
    @sock.on_close(&cb)
  else
    raise "BUG: unknown event: #{event}"
  end
end