class Qpid::Proton::Receiver
The receiving endpoint.
@see Sender
Constants
- PROTON_METHOD_PREFIX
@private
Attributes
@return [Boolean] auto_accept
flag, see {#open}
@return [Integer] credit window, see {#open}
Public Instance Methods
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 {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.
# 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
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