Class: Couchbase::View::AsyncHelper

Inherits:
Object
  • Object
show all
Includes:
Constants
Defined in:
lib/couchbase/view.rb

Overview

:nodoc:

Constant Summary collapse

EMPTY =
[]

Constants included from Constants

Constants::S_CAS, Constants::S_DOC, Constants::S_FLAGS, Constants::S_ID, Constants::S_IS_LAST, Constants::S_KEY, Constants::S_META, Constants::S_VALUE

Instance Method Summary collapse

Constructor Details

#initialize(wrapper_class, bucket, include_docs, quiet, block) ⇒ AsyncHelper

Returns a new instance of AsyncHelper.



73
74
75
76
77
78
79
80
81
82
# File 'lib/couchbase/view.rb', line 73

def initialize(wrapper_class, bucket, include_docs, quiet, block)
  @wrapper_class = wrapper_class
  @bucket = bucket
  @block = block
  @quiet = quiet
  @include_docs = include_docs
  @queue = []
  @first = @shift = 0
  @completed = false
end

Instance Method Details

#complete!Object



106
107
108
109
110
111
112
113
114
115
# File 'lib/couchbase/view.rb', line 106

def complete!
  if @include_docs
    @completed = true
    check_for_ready_documents
  elsif !@queue.empty?
    obj = @queue.shift
    obj[S_IS_LAST] = true
    block_call obj
  end
end

#push(obj) ⇒ Object

Register object in the emitter.



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/couchbase/view.rb', line 85

def push(obj)
  if @include_docs
    @queue << obj
    @bucket.get(obj[S_ID], :extended => true, :quiet => @quiet) do |res|
      obj[S_DOC] = {
        S_VALUE => res.value,
        S_META => {
          S_ID => obj[S_ID],
          S_FLAGS => res.flags,
          S_CAS => res.cas
        }
      }
      check_for_ready_documents
    end
  else
    old_obj = @queue.shift
    @queue << obj
    block_call(old_obj) if old_obj
  end
end