class Qpid::Proton::Receiver

The receiving endpoint.

@see Sender

Constants

PROTON_METHOD_PREFIX

@private

Attributes

auto_accept[R]

@return [Boolean] auto_accept flag, see {#open}

credit_window[R]

@return [Integer] credit window, see {#open}

Public Instance Methods

flow(n) click to toggle source

Grants credit for incoming deliveries.

@param n [Integer] The amount to increment the link credit.

# File lib/core/receiver.rb, line 93
def flow(n)
  Cproton.pn_link_flow(@impl, n)
end
open(opts=nil) click to toggle source

Open {Receiver} link

@overload open_receiver(address)

@param address [String] address of the source to receive from

@overload open_receiver(opts)

@param opts [Hash] Receiver options, see {Receiver#open}
@option opts [Integer] :credit_window automatically maintain this much credit
  for messages to be pre-fetched while the current message is processed.
@option opts [Boolean] :auto_accept if true, deliveries that are not settled by
  the application in {MessagingHandler#on_message} are automatically accepted.
@option opts [Boolean] :dynamic (false) dynamic property for source {Terminus#dynamic}
@option opts [String,Hash] :source source address or source options, see {Terminus#apply}
@option opts [String,Hash] :target target address or target options, see {Terminus#apply}
@option opts [String] :name (generated) unique name for the link.
Calls superclass method
# File lib/core/receiver.rb, line 46
def open(opts=nil)
  opts ||= {}
  opts = { :source => opts } if opts.is_a? String
  @credit_window =  opts.fetch(:credit_window, 10)
  @auto_accept = opts.fetch(:auto_accept, true)
  source.apply(opts[:source])
  target.apply(opts[:target])
  source.dynamic = !!opts[:dynamic]
  super()
  self
end
receive(limit) click to toggle source

Allows receiving up to the specified limit of data from the remote endpoint.

Note that large messages can be streamed across the network, so just because there is no data to read does not imply the message is complete.

To ensure the entirety of the message data has been read, either call receive until nil is returned, or verify that partial? is false and Delivery#pending is 0.

@param limit [Integer] The maximum bytes to receive.

@return [Integer, nil] The number of bytes received, or nil if the end of the stream was reached.

@see Deliver#pending To see how much buffer space is needed.

@raise [LinkError] If an error occurs.

# File lib/core/receiver.rb, line 116
def receive(limit)
  (n, bytes) = Cproton.pn_link_recv(@impl, limit)
  return nil if n == Qpid::Proton::Error::EOS
  raise LinkError.new("[#{n}]: #{Cproton.pn_link_error(@impl)}") if n < 0
  return bytes
end