activemq-cpp-3.9.5
DynamicDestinationResolver.h
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17#ifndef _ACTIVEMQ_CMSUTIL_DYNAMICDESTINATIONRESOLVER_H_
18#define _ACTIVEMQ_CMSUTIL_DYNAMICDESTINATIONRESOLVER_H_
19
21#include <cms/Session.h>
22#include <decaf/util/StlMap.h>
24
25namespace activemq {
26namespace cmsutil {
27
31 class AMQCPP_API DynamicDestinationResolver : public DestinationResolver {
32 private:
33
37 class SessionResolver {
38 private:
39
40 ResourceLifecycleManager* resourceLifecycleManager;
41 cms::Session* session;
44
45 private:
46
47 SessionResolver(const SessionResolver&);
48 SessionResolver& operator=(const SessionResolver&);
49
50 public:
51
52 SessionResolver(cms::Session* session, ResourceLifecycleManager* resourceLifecycleManager )
53 : resourceLifecycleManager( resourceLifecycleManager ),
54 session( session ),
55 topicMap(),
56 queueMap() {
57 }
58
59 virtual ~SessionResolver() {}
60
61 cms::Topic* getTopic(const std::string& topicName);
62
63 cms::Queue* getQueue(const std::string& queueName);
64
65 };
66
71
75 ResourceLifecycleManager* resourceLifecycleManager;
76
77 private:
78
79 DynamicDestinationResolver(const DynamicDestinationResolver&);
80 DynamicDestinationResolver& operator=(const DynamicDestinationResolver&);
81
82 public:
83
85
87
88 virtual void init(ResourceLifecycleManager* mgr) {
89
90 // since we're changing the lifecycle manager, clear out references
91 // to old resources.
92 destroy();
93
94 this->resourceLifecycleManager = mgr;
95 }
96
97 virtual void destroy();
98
118 const std::string& destName,
119 bool pubSubDomain);
120
121 };
122
123}}
124
125#endif /* _ACTIVEMQ_CMSUTIL_DYNAMICDESTINATIONRESOLVER_H_ */
#define AMQCPP_API
Definition Config.h:30
Resolves a CMS destination name to a Destination.
Definition DestinationResolver.h:36
virtual void destroy()
Destroys any allocated resources.
virtual void init(ResourceLifecycleManager *mgr)
Initializes this destination resolver for use.
Definition DynamicDestinationResolver.h:88
virtual cms::Destination * resolveDestinationName(cms::Session *session, const std::string &destName, bool pubSubDomain)
Resolves the given name to a destination.
Manages the lifecycle of a set of CMS resources.
Definition ResourceLifecycleManager.h:37
A Destination object encapsulates a provider-specific address.
Definition Destination.h:39
An interface encapsulating a provider-specific queue name.
Definition Queue.h:37
A Session object is a single-threaded context for producing and consuming messages.
Definition Session.h:105
An interface encapsulating a provider-specific topic name.
Definition Topic.h:36
Map template that wraps around a std::map to provide a more user-friendly interface and to provide co...
Definition StlMap.h:48
Definition CachedConsumer.h:25
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.
Definition CachedConsumer.h:24