# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. module Qpid::Proton class Disposition include Util::Deprecation # @private PROTON_METHOD_PREFIX = "pn_disposition" # @private extend Util::SWIGClassHelper # States of a message transfer module State # Message was successfully processed by the receiver ACCEPTED = Cproton::PN_ACCEPTED # Message rejected as invalid and unprocessable by the receiver. REJECTED = Cproton::PN_REJECTED # Message was not (and will not be) processed by the receiver, but may be # acceptable if re-delivered to another receiver RELEASED = Cproton::PN_RELEASED # Like {RELEASED}, but there are modifications (see {Tracker#modifications}) # that must be applied to the message by the {Sender} before re-delivering it. MODIFIED = Cproton::PN_MODIFIED # Partial message data received. Only used during link recovery. RECEIVED = Cproton::PN_RECEIVED module ClassMethods def name_of(state) Cproton::pn_disposition_type_name(state); end end extend ClassMethods def self.included(klass) klass.extend ClassMethods; end end include State attr_reader :impl # @private def initialize(impl, local) deprecated self.class, Delivery @impl = impl @local = local @data = nil @condition = nil @annotations = nil end # @!attribute section_number # # @return [Integer] The section number of the disposition. # proton_set_get :section_number # @!attribute section_offset # # @return [Integer] The section offset of the disposition. # proton_set_get :section_offset # @!attribute failed? # # @return [Boolean] The failed flag. # proton_set_is :failed # @!attribute undeliverable? # # @return [Boolean] The undeliverable flag. # proton_set_is :undeliverable # Sets the data for the disposition. # # @param data [Codec::Data] The data. # # @raise [AttributeError] If the disposition is remote. # def data=(data) raise AttributeError.new("data attribute is read-only") unless @local @data = data end # Returns the data for the disposition. # # @return [Codec::Data] The data. # def data if @local @data else Codec::Data.to_object(Cproton.pn_disposition_data(@impl)) end end # Sets the annotations for the disposition. # # @param annotations [Codec::Data] The annotations. # # @raise [AttributeError] If the disposition is remote. # def annotations=(annotations) raise AttributeError.new("annotations attribute is read-only") unless @local @annotations = annotations end # Returns the annotations for the disposition. # # @return [Codec::Data] The annotations. # def annotations if @local @annotations else Codec::Data.to_object(Cproton.pn_disposition_annotations(@impl)) end end # Sets the condition for the disposition. # # @param condition [Codec::Data] The condition. # # @raise [AttributeError] If the disposition is remote. # def condition=(condition) raise AttributeError.new("condition attribute is read-only") unless @local @condition = condition end # Returns the condition of the disposition. # # @return [Codec::Data] The condition of the disposition. # def condition if @local @condition else Condition.convert(Cproton.pn_disposition_condition(@impl)) end end end end