00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _CMS_SESSION_H_
00018 #define _CMS_SESSION_H_
00019
00020 #include <cms/Config.h>
00021 #include <cms/Closeable.h>
00022 #include <cms/Startable.h>
00023 #include <cms/Stoppable.h>
00024 #include <cms/Message.h>
00025 #include <cms/TextMessage.h>
00026 #include <cms/BytesMessage.h>
00027 #include <cms/MapMessage.h>
00028 #include <cms/StreamMessage.h>
00029 #include <cms/MessageProducer.h>
00030 #include <cms/MessageConsumer.h>
00031 #include <cms/Topic.h>
00032 #include <cms/Queue.h>
00033 #include <cms/QueueBrowser.h>
00034 #include <cms/TemporaryTopic.h>
00035 #include <cms/TemporaryQueue.h>
00036 #include <cms/CMSException.h>
00037
00038 namespace cms {
00039
00040 class MessageTransformer;
00041
00105 class CMS_API Session : public Closeable, public Startable, public Stoppable {
00106 public:
00107
00108 enum AcknowledgeMode {
00109
00117 AUTO_ACKNOWLEDGE,
00118
00128 DUPS_OK_ACKNOWLEDGE,
00129
00134 CLIENT_ACKNOWLEDGE,
00135
00139 SESSION_TRANSACTED,
00140
00146 INDIVIDUAL_ACKNOWLEDGE
00147
00148 };
00149
00150 public:
00151
00152 virtual ~Session();
00153
00160 virtual void close() = 0;
00161
00169 virtual void commit() = 0;
00170
00178 virtual void rollback() = 0;
00179
00200 virtual void recover() = 0;
00201
00213 virtual MessageConsumer* createConsumer(const Destination* destination) = 0;
00214
00230 virtual MessageConsumer* createConsumer(const Destination* destination, const std::string& selector) = 0;
00231
00251 virtual MessageConsumer* createConsumer(const Destination* destination, const std::string& selector, bool noLocal) = 0;
00252
00276 virtual MessageConsumer* createDurableConsumer(const Topic* destination, const std::string& name, const std::string& selector, bool noLocal = false) = 0;
00277
00289 virtual MessageProducer* createProducer(const Destination* destination = NULL) = 0;
00290
00301 virtual QueueBrowser* createBrowser(const cms::Queue* queue) = 0;
00302
00315 virtual QueueBrowser* createBrowser(const cms::Queue* queue, const std::string& selector) = 0;
00316
00326 virtual Queue* createQueue(const std::string& queueName) = 0;
00327
00337 virtual Topic* createTopic(const std::string& topicName) = 0;
00338
00346 virtual TemporaryQueue* createTemporaryQueue() = 0;
00347
00353 virtual TemporaryTopic* createTemporaryTopic() = 0;
00354
00360 virtual Message* createMessage() = 0;
00361
00367 virtual BytesMessage* createBytesMessage() = 0;
00368
00379 virtual BytesMessage* createBytesMessage(const unsigned char* bytes, int bytesSize) = 0;
00380
00386 virtual StreamMessage* createStreamMessage() = 0;
00387
00393 virtual TextMessage* createTextMessage() = 0;
00394
00403 virtual TextMessage* createTextMessage(const std::string& text) = 0;
00404
00410 virtual MapMessage* createMapMessage() = 0;
00411
00419 virtual AcknowledgeMode getAcknowledgeMode() const = 0;
00420
00428 virtual bool isTransacted() const = 0;
00429
00446 virtual void unsubscribe(const std::string& name) = 0;
00447
00459 virtual void setMessageTransformer(cms::MessageTransformer* transformer) = 0;
00460
00466 virtual cms::MessageTransformer* getMessageTransformer() const = 0;
00467
00468 };
00469
00470 }
00471
00472 #endif