The sending endpoint.
@see Receiver
@return [Boolean] #auto_settle flag, see {#open}
# File lib/core/sender.rb, line 93 def initialize(*arg) super; @tag_count = 0; end
@deprecated internal use only
# File lib/core/sender.rb, line 89 def delivery_tag() deprecated(__method__); next_tag; end
Hint to the remote receiver about the number of messages available. The receiver may use this to optimize credit flow, or may ignore it. @param n [Integer] The number of deliveries potentially available.
# File lib/core/sender.rb, line 57 def offered(n) Cproton.pn_link_offered(@impl, n) end
Open the {Sender} link
@overload open_sender(address)
@param address [String] address of the target to send to
@overload open_sender(opts)
@option opts [Boolean] :auto_settle (true) if true, automatically settle transfers @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/sender.rb, line 40 def open(opts=nil) opts = { :target => opts } if opts.is_a? String opts ||= {} target.apply opts[:target] source.apply opts[:source] target.dynamic = !!opts[:dynamic] @auto_settle = opts.fetch(:auto_settle, true) super() self end
@!method send(message) Send a message. @param message [Message] The message to send. @return [Tracker] Tracks the outcome of the message.
# File lib/core/sender.rb, line 67 def send(message, *args) tag = nil if args.size > 0 # deprecated: allow tag in args[0] for backwards compat raise ArgumentError("too many arguments") if args.size > 1 tag = args[0] end tag ||= next_tag t = Tracker.new(Cproton.pn_delivery(@impl, tag)) Cproton.pn_link_send(@impl, message.encode) Cproton.pn_link_advance(@impl) t.settle if snd_settle_mode == SND_SETTLED return t end
@deprecated use {#send}
# File lib/core/sender.rb, line 83 def stream(bytes) deprecated __method__, "send" Cproton.pn_link_send(@impl, bytes) end
# File lib/core/sender.rb, line 94 def next_tag() (@tag_count += 1).to_s(32); end