blob: a03823a2b050c7f5f4ce13681e1adc26a3375f5e [file] [log] [blame]
/*
* 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.
*/
#ifndef _CMS_DESTINATIONSOURCE_H_
#define _CMS_DESTINATIONSOURCE_H_
#include <cms/Config.h>
#include <cms/DestinationListener.h>
#include <cms/Topic.h>
#include <cms/Queue.h>
#include <cms/TemporaryQueue.h>
#include <cms/TemporaryTopic.h>
#include <cms/Startable.h>
#include <cms/Stoppable.h>
namespace cms {
/**
* Provides an object that will provide a snapshot view of Destinations that exist
* on the Message provider.
*
* @since 3.2
*/
class CMS_API DestinationSource : public cms::Startable, public cms::Stoppable {
public:
virtual ~DestinationSource();
/**
* Sets the current listener of Destination events.
*
* This class does not manage the lifetime of the configured listener, the client
* must ensure that it deletes the listener instance at the appropriate time.
*
* @param listener
* The new listener to provide destination events to.
*/
virtual void setListener(cms::DestinationListener* listener) = 0;
/**
* Gets the currently configured DestiantionListener for this event source.
*
* The event source instance remains active in this DestinationSource until
* it is removed via a call to setListener(null) and should not be deleted
* until the client is sure it will not receive any future events.
*
* @return the configured DestinationListener for this event source or null if none.
*/
virtual cms::DestinationListener* getListener() const = 0;
/**
* Returns a snapshot of the currently known Queues that are active on the CMS
* provider, this state can change at any time as Destinations are added and deleted
* from the provider.
*
* The destinations are cloned and placed into the returned vector, the caller is
* responsible for deleting these cloned objects.
*
* @return an STL vector containing the current list of known Queues.
*/
virtual std::vector<cms::Queue*> getQueues() const = 0;
/**
* Returns a snapshot of the currently known Queues that are active on the CMS
* provider, this state can change at any time as Destinations are added and deleted
* from the provider.
*
* The destinations are cloned and placed into the returned vector, the caller is
* responsible for deleting these cloned objects.
*
* @return an STL vector containing the current list of known Queues.
*/
virtual std::vector<cms::Topic*> getTopics() const = 0;
/**
* Returns a snapshot of the currently known Queues that are active on the CMS
* provider, this state can change at any time as Destinations are added and deleted
* from the provider.
*
* The destinations are cloned and placed into the returned vector, the caller is
* responsible for deleting these cloned objects.
*
* @return an STL vector containing the current list of known Queues.
*/
virtual std::vector<cms::TemporaryQueue*> getTemporaryQueues() const = 0;
/**
* Returns a snapshot of the currently known Queues that are active on the CMS
* provider, this state can change at any time as Destinations are added and deleted
* from the provider.
*
* The destinations are cloned and placed into the returned vector, the caller is
* responsible for deleting these cloned objects.
*
* @return an STL vector containing the current list of known Queues.
*/
virtual std::vector<cms::TemporaryTopic*> getTemporaryTopics() const = 0;
};
}
#endif /* _CMS_DESTINATIONSOURCE_H_ */