diff options
Diffstat (limited to 'cpp/bindings/qpid/ruby/lib')
| -rw-r--r-- | cpp/bindings/qpid/ruby/lib/qpid.rb | 1 | ||||
| -rw-r--r-- | cpp/bindings/qpid/ruby/lib/qpid/receiver.rb | 102 |
2 files changed, 103 insertions, 0 deletions
diff --git a/cpp/bindings/qpid/ruby/lib/qpid.rb b/cpp/bindings/qpid/ruby/lib/qpid.rb index b72747d9e3..3edb65c08f 100644 --- a/cpp/bindings/qpid/ruby/lib/qpid.rb +++ b/cpp/bindings/qpid/ruby/lib/qpid.rb @@ -23,4 +23,5 @@ require 'qpid/address' require 'qpid/encoding' require 'qpid/message' require 'qpid/sender' +require 'qpid/receiver' diff --git a/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb b/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb new file mode 100644 index 0000000000..d498aa922b --- /dev/null +++ b/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb @@ -0,0 +1,102 @@ +# +# 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. +# + +require 'cqpid' + +require 'qpid/duration' + +module Qpid + + module Messaging + + # Receiver defines a type for receiving messages. + class Receiver + + def initialize(receiver_impl) # :nodoc: + @receiver_impl = receiver_impl + end + + def receiver_impl # :nodoc: + @receiver_impl + end + + # Retrieves a message from the receiver's local queue, or waits + # for up to the duration specified for one to become available. + def get(duration = Qpid::Messaging::Duration::FOREVER) + message_impl = @receiver_impl.get duration.duration_impl + create_message_wrapper message_impl unless message_impl.nil? + end + + # Retrieves a message from the receiver's subscription, or waits + # for up to the duration specified for one to become available. + def fetch(duration = Qpid::Messaging::Duration::FOREVER) + message_impl = @receiver_impl.fetch duration.duration_impl + create_message_wrapper message_impl unless message_impl.nil? + end + + # Sets the capacity. + # + # The capacity for a receiver determines the number of messages that + # can be held in the receiver before being fetched. + def capacity=(capacity); @receiver_impl.setCapacity capacity; end + + # Returns the capacity. + def capacity; @receiver_impl.getCapacity; end + + # Returns the number of available messages waiting to be fetched. + def available; @receiver_impl.getAvailable; end + + # Returns the number of messages that have been received and acknowledged + # but whose acknowledgements have not been confirmed by the sender. + def unsettled; @receiver_impl.getUnsettled; end + + # Cancels the reciever. + def close; @receiver_impl.close; end + + # Returns whether the receiver is closed. + def closed?; @receiver_impl.isClosed; end + + # Returns the name of the receiver + def name; @receiver_impl.getName; end + + # Returns the Session for this receiver. + def session; Qpid::Messaging::Session.new(@receiver_impl.getSession); end + + # Returns whether the underlying handle is valid. + def valid?; @receiver_impl.isValid; end + + # Returns whether the underlying handle is null. + def null?; @receiver_impl.isNull; end + + def swap receiver + @receiver_impl.swap receiver.receiver_impl + end + + private + + def create_message_wrapper message_impl + Qpid::Messaging::Message.new({}, message_impl) + end + + end + + end + +end + |
