Class: Moped::Cursor Private
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Contains logic for cursor behaviour.
Instance Attribute Summary collapse
- #get_more_op ⇒ Object readonly private
- #get_more_op The get more message.(Thegetmoremessage.) ⇒ Object readonly
- #kill_cursor_op ⇒ Object readonly private
- #kill_cursor_op The kill cursor message.(Thekillcursormessage.) ⇒ Object readonly
- #query_op ⇒ Object readonly private
- #query_op The query message.(Thequerymessage.) ⇒ Object readonly
- #session ⇒ Object readonly private
- #session The session.(Thesession.) ⇒ Object readonly
Instance Method Summary collapse
-
#each ⇒ Enumerator
private
Iterate over the results of the query.
-
#get_more ⇒ Array<Hash>
private
Get more documents from the database for the cursor.
-
#initialize(session, query_operation) ⇒ Cursor
constructor
private
Initialize the new cursor.
-
#kill ⇒ Object
private
Kill the cursor.
-
#limited? ⇒ true, false
private
Does the cursor have a limit provided in the query?.
-
#load_docs ⇒ Array<Hash>
private
Load the documents from the database.
-
#more? ⇒ true, false
private
Are there more documents to be returned from the database?.
Constructor Details
#initialize(session, query_operation) ⇒ Cursor
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Initialize the new cursor.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/moped/cursor.rb', line 59 def initialize(session, query_operation) @session = session @database = query_operation.database @collection = query_operation.collection @selector = query_operation.selector @cursor_id = 0 @limit = query_operation.limit @limited = @limit > 0 @options = { request_id: query_operation.request_id, flags: query_operation.flags, limit: query_operation.limit, skip: query_operation.skip, fields: query_operation.fields } end |
Instance Attribute Details
#get_more_op ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
12 13 14 |
# File 'lib/moped/cursor.rb', line 12 def get_more_op @get_more_op end |
#get_more_op The get more message.(Thegetmoremessage.) ⇒ Object (readonly)
12 |
# File 'lib/moped/cursor.rb', line 12 attr_reader :get_more_op, :kill_cursor_op, :query_op, :session |
#kill_cursor_op ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
12 13 14 |
# File 'lib/moped/cursor.rb', line 12 def kill_cursor_op @kill_cursor_op end |
#kill_cursor_op The kill cursor message.(Thekillcursormessage.) ⇒ Object (readonly)
12 |
# File 'lib/moped/cursor.rb', line 12 attr_reader :get_more_op, :kill_cursor_op, :query_op, :session |
#query_op ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
12 13 14 |
# File 'lib/moped/cursor.rb', line 12 def query_op @query_op end |
#query_op The query message.(Thequerymessage.) ⇒ Object (readonly)
12 |
# File 'lib/moped/cursor.rb', line 12 attr_reader :get_more_op, :kill_cursor_op, :query_op, :session |
#session ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
12 13 14 |
# File 'lib/moped/cursor.rb', line 12 def session @session end |
#session The session.(Thesession.) ⇒ Object (readonly)
12 |
# File 'lib/moped/cursor.rb', line 12 attr_reader :get_more_op, :kill_cursor_op, :query_op, :session |
Instance Method Details
#each ⇒ Enumerator
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Iterate over the results of the query.
24 25 26 27 28 29 30 31 32 |
# File 'lib/moped/cursor.rb', line 24 def each documents = load_docs documents.each { |doc| yield doc } while more? return kill if limited? && @limit <= 0 documents = get_more documents.each { |doc| yield doc } end end |
#get_more ⇒ Array<Hash>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Get more documents from the database for the cursor. Executes a get more command.
43 44 45 46 47 48 |
# File 'lib/moped/cursor.rb', line 43 def get_more reply = @node.get_more @database, @collection, @cursor_id, @limit @limit -= reply.count if limited? @cursor_id = reply.cursor_id reply.documents end |
#kill ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Kill the cursor.
87 88 89 |
# File 'lib/moped/cursor.rb', line 87 def kill @node.kill_cursors([ @cursor_id ]) end |
#limited? ⇒ true, false
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Does the cursor have a limit provided in the query?
99 100 101 |
# File 'lib/moped/cursor.rb', line 99 def limited? @limited end |
#load_docs ⇒ Array<Hash>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Load the documents from the database.
111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/moped/cursor.rb', line 111 def load_docs consistency = session.consistency @options[:flags] |= [:slave_ok] if consistency == :eventual reply, @node = session.context.with_node do |node| [ node.query(@database, @collection, @selector, @options), node ] end @limit -= reply.count if limited? @cursor_id = reply.cursor_id reply.documents end |
#more? ⇒ true, false
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Are there more documents to be returned from the database?
132 133 134 |
# File 'lib/moped/cursor.rb', line 132 def more? @cursor_id != 0 end |