00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _ACTIVEMQ_CORE_ACTIVEMQCONNECTIONFACTORY_H_
00018 #define _ACTIVEMQ_CORE_ACTIVEMQCONNECTIONFACTORY_H_
00019
00020 #include <activemq/util/Config.h>
00021
00022 #include <cms/ConnectionFactory.h>
00023 #include <cms/Connection.h>
00024
00025 #include <activemq/transport/Transport.h>
00026
00027 #include <decaf/net/URI.h>
00028 #include <decaf/util/Properties.h>
00029
00030 namespace activemq{
00031 namespace core{
00032
00033 using decaf::lang::Pointer;
00034
00035 class ActiveMQConnection;
00036 class FactorySettings;
00037 class PrefetchPolicy;
00038 class RedeliveryPolicy;
00039
00040 class AMQCPP_API ActiveMQConnectionFactory : public cms::ConnectionFactory {
00041 public:
00042
00043
00044 static const std::string DEFAULT_URI;
00045
00046 private:
00047
00048 FactorySettings* settings;
00049
00050 private:
00051
00052 ActiveMQConnectionFactory(const ActiveMQConnectionFactory&);
00053 ActiveMQConnectionFactory& operator=(const ActiveMQConnectionFactory&);
00054
00055 public:
00056
00057 ActiveMQConnectionFactory();
00058
00069 ActiveMQConnectionFactory(const std::string& uri,
00070 const std::string& username = "",
00071 const std::string& password = "");
00072
00083 ActiveMQConnectionFactory(const decaf::net::URI& uri,
00084 const std::string& username = "",
00085 const std::string& password = "");
00086
00087 virtual ~ActiveMQConnectionFactory();
00088
00099 virtual cms::Connection* createConnection();
00100
00120 virtual cms::Connection* createConnection(const std::string& username,
00121 const std::string& password);
00122
00145 virtual cms::Connection* createConnection(const std::string& username,
00146 const std::string& password,
00147 const std::string& clientId);
00148
00149 public:
00150
00155 void setUsername(const std::string& username);
00156
00162 const std::string& getUsername() const;
00163
00168 void setPassword(const std::string& password);
00169
00175 const std::string& getPassword() const;
00176
00181 std::string getClientId() const;
00182
00187 void setClientId(const std::string& clientId);
00188
00195 void setBrokerURI(const std::string& uri);
00196
00203 void setBrokerURI(const decaf::net::URI& uri);
00204
00210 const decaf::net::URI& getBrokerURI() const;
00211
00220 virtual void setExceptionListener(cms::ExceptionListener* listener);
00221
00228 virtual cms::ExceptionListener* getExceptionListener() const;
00229
00237 virtual void setMessageTransformer(cms::MessageTransformer* transformer);
00238
00244 virtual cms::MessageTransformer* getMessageTransformer() const;
00245
00254 void setPrefetchPolicy(PrefetchPolicy* policy);
00255
00261 PrefetchPolicy* getPrefetchPolicy() const;
00262
00271 void setRedeliveryPolicy(RedeliveryPolicy* policy);
00272
00278 RedeliveryPolicy* getRedeliveryPolicy() const;
00279
00283 bool isDispatchAsync() const;
00284
00293 void setDispatchAsync(bool value);
00294
00300 bool isAlwaysSyncSend() const;
00301
00307 void setAlwaysSyncSend(bool value);
00308
00313 bool isUseAsyncSend() const;
00314
00319 void setUseAsyncSend(bool value);
00320
00327 bool isSendAcksAsync() const;
00328
00336 void setSendAcksAsync(bool sendAcksAsync);
00337
00342 bool isUseCompression() const;
00343
00350 void setUseCompression(bool value);
00351
00361 void setCompressionLevel(int value);
00362
00368 int getCompressionLevel() const;
00369
00374 unsigned int getSendTimeout() const;
00375
00381 void setSendTimeout(unsigned int timeout);
00382
00387 unsigned int getCloseTimeout() const;
00388
00393 void setCloseTimeout(unsigned int timeout);
00394
00402 unsigned int getProducerWindowSize() const;
00403
00410 void setProducerWindowSize(unsigned int windowSize);
00411
00416 bool isMessagePrioritySupported() const;
00417
00425 void setMessagePrioritySupported(bool value);
00426
00432 bool isUseRetroactiveConsumer() const;
00433
00442 void setUseRetroactiveConsumer(bool useRetroactiveConsumer);
00443
00449 bool isExclusiveConsumer() const;
00450
00458 void setExclusiveConsumer(bool exclusiveConsumer);
00459
00466 bool isWatchTopicAdvisories() const;
00467
00475 void setWatchTopicAdvisories(bool value);
00476
00485 int getAuditDepth() const;
00486
00496 void setAuditDepth(int auditDepth);
00497
00503 int getAuditMaximumProducerNumber() const;
00504
00511 void setAuditMaximumProducerNumber(int auditMaximumProducerNumber);
00512
00525 bool isCheckForDuplicates() const;
00526
00540 void setCheckForDuplicates(bool checkForDuplicates);
00541
00549 bool isTransactedIndividualAck() const;
00550
00559 void setTransactedIndividualAck(bool transactedIndividualAck);
00560
00567 bool isNonBlockingRedelivery() const;
00568
00577 void setNonBlockingRedelivery(bool nonBlockingRedelivery);
00578
00584 long long getConsumerFailoverRedeliveryWaitPeriod() const;
00585
00592 void setConsumerFailoverRedeliveryWaitPeriod(long long value);
00593
00597 bool isOptimizeAcknowledge() const;
00598
00605 void setOptimizeAcknowledge(bool optimizeAcknowledge);
00606
00612 long long getOptimizeAcknowledgeTimeOut() const;
00613
00620 void setOptimizeAcknowledgeTimeOut(long long optimizeAcknowledgeTimeOut);
00621
00630 long long getOptimizedAckScheduledAckInterval() const;
00631
00641 void setOptimizedAckScheduledAckInterval(long long optimizedAckScheduledAckInterval);
00642
00643 public:
00644
00661 static cms::Connection* createConnection(const std::string& uri, const std::string& username,
00662 const std::string& password, const std::string& clientId = "");
00663
00664 protected:
00665
00678 virtual ActiveMQConnection* createActiveMQConnection(const Pointer<transport::Transport>& transport,
00679 const Pointer<decaf::util::Properties>& properties);
00680
00681 private:
00682
00683 cms::Connection* doCreateConnection(const decaf::net::URI& uri, const std::string& username,
00684 const std::string& password, const std::string& clientId);
00685
00686 void configureConnection(ActiveMQConnection* connection);
00687
00688 };
00689
00690 }}
00691
00692 #endif