require 'ganymed/websocket' require 'ganymed/websocket/filter' module Ganymed class Websocket module Query def self.included(base) base.command :query end def query(data) return if not authenticated? data.each do |ns, query| query_id = query.delete('_id') log.debug("query #{query_id} from #{peer}: #{ns}(#{query.inspect})") t = Time.now events = db.collection(ns).find(query).map do |event| Event.parse(event.merge({'n' => ns})) end log.debug("query #{query_id} returned #{events.length} results in #{Time.now - t}s") send(:result, {query_id => convert(events)}) end end end end end