activemq-cpp-3.8.2
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>
23 #include <activemq/util/Config.h>
24 
25 namespace activemq {
26 namespace cmsutil {
27 
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 
81 
82  public:
83 
85 
86  virtual ~DynamicDestinationResolver();
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 
117  virtual cms::Destination* resolveDestinationName(cms::Session* session,
118  const std::string& destName,
119  bool pubSubDomain);
120 
121  };
122 
123 }}
124 
125 #endif /* _ACTIVEMQ_CMSUTIL_DYNAMICDESTINATIONRESOLVER_H_ */
An interface encapsulating a provider-specific topic name.
Definition: Topic.h:36
A Destination object encapsulates a provider-specific address.
Definition: Destination.h:39
#define AMQCPP_API
Definition: Config.h:30
Map template that wraps around a std::map to provide a more user-friendly interface and to provide co...
Definition: StlMap.h:47
Resolves a CMS destination name to a Destination.
Definition: DestinationResolver.h:36
Resolves a CMS destination name to a Destination.
Definition: DynamicDestinationResolver.h:31
A Session object is a single-threaded context for producing and consuming messages.
Definition: Session.h:105
Manages the lifecycle of a set of CMS resources.
Definition: ResourceLifecycleManager.h:37
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements...
Definition: CachedConsumer.h:24
An interface encapsulating a provider-specific queue name.
Definition: Queue.h:37
virtual void init(ResourceLifecycleManager *mgr)
Initializes this destination resolver for use.
Definition: DynamicDestinationResolver.h:88