class Gapic::StreamInput

Manages requests for an input stream and holds the stream open until {#close} is called.

Public Class Methods

new(*requests) click to toggle source

Create a new input stream object to manage streaming requests and hold the stream open until {#close} is called.

@param requests [Object]

# File lib/gapic/stream_input.rb, line 25
def initialize *requests
  @queue = Queue.new

  # Push initial requests into the queue
  requests.each { |request| @queue.push request }
end

Public Instance Methods

<<(request)
Alias for: push
append(request)
Alias for: push
close() click to toggle source

Closes the stream.

@return [StreamInput] Returns self.

# File lib/gapic/stream_input.rb, line 52
def close
  @queue.push self

  self
end
push(request) click to toggle source

Adds a request object to the stream.

@param request [Object]

@return [StreamInput] Returns self.

# File lib/gapic/stream_input.rb, line 39
def push request
  @queue.push request

  self
end
Also aliased as: <<, append
to_enum() { |request| ... } click to toggle source

@private Iterates the requests given to the stream.

@yield [request] The block for accessing each request. @yieldparam [Object] request The request object.

@return [Enumerator] An Enumerator is returned if no block is given.

# File lib/gapic/stream_input.rb, line 67
def to_enum
  return enum_for :to_enum unless block_given?
  loop do
    request = @queue.pop
    break if request.equal? self
    yield request
  end
end