module DDP::Server::Protocol::Data
Protocol
regarding handling data subscriptions
Public Instance Methods
handle_data()
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 8 def handle_data case @message['msg'] when 'sub' handle_sub(@message['id'], @message['name'], @message['params']) true when 'unsub' handle_unsub(@message['id']) true else false end end
handle_sub(id, name, params)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 21 def handle_sub(id, name, params) params ||= [] query = api.collection_query(name, *params) subscription = subscriptions[id] = Subscription.new(self, id, name, query) subscription.async.start send_ready([id]) rescue => e send_error_result(id, e) end
handle_unsub(id)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 40 def handle_unsub(id) subscription = @subscriptions.delete(id) subscription.stop unless subscription.nil? send_nosub(id) end
send_added(collection, id, fields = nil)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 52 def send_added(collection, id, fields = nil) message = { msg: 'added', id: id, collection: collection } message.merge!(fields: fields) if fields write_message message end
send_added_before(collection, id, fields = nil, before = nil)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 73 def send_added_before(collection, id, fields = nil, before = nil) message = { msg: 'addedBefore', id: id, collection: collection, before: before } message.merge!(fields: fields) if fields write_message message end
send_changed(collection, id, fields = nil, cleared = nil)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 58 def send_changed(collection, id, fields = nil, cleared = nil) message = { msg: 'changed', id: id, collection: collection } message.merge!(fields: fields) if fields message.merge!(cleared: cleared) if cleared write_message message end
send_moved_before(collection, id, before = nil)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 79 def send_moved_before(collection, id, before = nil) write_message msg: 'movedBefore', id: id, collection: collection, before: before end
send_nosub(id, error = nil)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 46 def send_nosub(id, error = nil) message = { msg: 'nosub', id: id } message.merge!(error: error) if error write_message message end
send_ready(subs)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 69 def send_ready(subs) write_message msg: 'ready', subs: subs end
send_removed(collection, id)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 65 def send_removed(collection, id) write_message msg: 'removed', collection: collection, id: id end
subscription_update(id, old_value, new_value)
click to toggle source
# File lib/ddp/server/protocol/data.rb, line 31 def subscription_update(id, old_value, new_value) subscription_name = @subscriptions[id].name return send_added(subscription_name, new_value['id'], new_value) if old_value.nil? return send_removed(subscription_name, old_value['id']) if new_value.nil? send_changed(subscription_name, old_value['id'], new_value, old_value.keys - new_value.keys) end