| /* Copyright (c) 2002, 2005, Oracle. All rights reserved. */ |
| |
| /* |
| NAME |
| occiAQ.h - Header file for occi AQ classes |
| |
| DESCRIPTION |
| Class declarations for Producer, Consumer, Message, Agent |
| Listener, Subscription |
| |
| RELATED DOCUMENTS |
| <note any documents related to this facility> |
| |
| EXPORT FUNCTION(S) |
| <external functions declared for use outside package - one-line |
| descriptions> |
| |
| INTERNAL FUNCTION(S) |
| <other external functions declared - one-line descriptions> |
| |
| EXAMPLES |
| |
| NOTES |
| <other useful comments, qualifications, etc.> |
| |
| MODIFIED (MM/DD/YY) |
| cparampa 10/12/02 - creation |
| |
| */ |
| |
| #ifndef _olint /* disable olint check */ |
| |
| #ifndef OCCIAQ_ORACLE |
| # define OCCIAQ_ORACLE |
| |
| #ifndef OCCICOMMON_ORACLE |
| #include <occiCommon.h> |
| #endif |
| |
| namespace oracle { |
| namespace occi { |
| namespace aq{ |
| |
| /*--------------------------------------------------------------------------- |
| PUBLIC TYPES AND CONSTANTS |
| ---------------------------------------------------------------------------*/ |
| |
| class Message |
| { |
| public: |
| |
| enum MessageState |
| { |
| MSG_READY = OCI_MSG_READY, |
| MSG_WAITING = OCI_MSG_WAITING, |
| MSG_PROCESSED = OCI_MSG_PROCESSED, |
| MSG_EXPIRED = OCI_MSG_EXPIRED |
| }; |
| enum PayloadType |
| { |
| RAW, |
| ANYDATA, |
| OBJECT |
| }; |
| |
| Message( const Environment *env ); |
| Message( const Message& rhs); |
| ~Message(); |
| |
| void operator=(const Message& rhs); |
| int getAttemptsToDequeue() const ; |
| void setCorrelationId( const OCCI_STD_NAMESPACE::string& corr_id ) ; |
| OCCI_STD_NAMESPACE::string getCorrelationId() const ; |
| void setDelay( int delay ) ; |
| int getDelay() const ; |
| Date getMessageEnqueuedTime() const ; |
| void setExceptionQueueName( const OCCI_STD_NAMESPACE::string& queue ) ; |
| OCCI_STD_NAMESPACE::string getExceptionQueueName() const ; |
| void setExpiration( int exp ) ; |
| int getExpiration() const ; |
| MessageState getMessageState() const ; |
| void setPriority( int priority ) ; |
| int getPriority() const ; |
| void setRecipientList( OCCI_STD_NAMESPACE::vector<Agent>& ag_list ) ; |
| void setSenderId( const Agent& sender ) ; |
| Agent getSenderId() const ; |
| void setOriginalMessageId( const Bytes& queue ) ; |
| Bytes getOriginalMessageId() const ; |
| void setNull(); |
| bool isNull() const; |
| |
| void setBytes( const Bytes& bytes); |
| void setObject( PObject* pobj); |
| void setAnyData( const AnyData& any); |
| |
| Bytes getBytes() const ; |
| PObject *getObject() ; |
| AnyData getAnyData() const ; |
| |
| PayloadType getPayloadType( ) const; |
| |
| private: |
| Ptr<MessageImpl> ptr; |
| OCIAQMsgProperties* getOCIMsgProperties() const; |
| Message( const Environment *env, const Connection *con, |
| OCIAQMsgProperties *msgprop, void *data, unsigned int dataLen, |
| bool isNull, PayloadType pType); |
| friend class ConsumerImpl; |
| friend class ProducerImpl; |
| friend class NotifyResult; |
| }; |
| |
| class Producer |
| { |
| public: |
| |
| enum EnqueueSequence |
| { |
| ENQ_BEFORE = OCI_ENQ_BEFORE, |
| ENQ_TOP = OCI_ENQ_TOP |
| }; |
| enum Visibility |
| { |
| ENQ_IMMEDIATE = OCI_ENQ_IMMEDIATE, |
| ENQ_ON_COMMIT = OCI_ENQ_ON_COMMIT |
| }; |
| |
| Producer( const Connection *conn ); |
| Producer( const Connection *conn, |
| const OCCI_STD_NAMESPACE::string& queue ); |
| Producer( const Producer& rhs); |
| ~Producer(); |
| |
| void operator=(const Producer& prod); |
| void setRelativeMessageId( const Bytes& msgid ); |
| Bytes getRelativeMessageId() const; |
| void setSequenceDeviation( EnqueueSequence option ); |
| EnqueueSequence getSequenceDeviation() const; |
| void setVisibility( Visibility option ); |
| Visibility getVisibility() const; |
| void setQueueName( const OCCI_STD_NAMESPACE::string& queue ); |
| OCCI_STD_NAMESPACE::string getQueueName() const; |
| void setTransformation( const OCCI_STD_NAMESPACE::string& fName); |
| OCCI_STD_NAMESPACE::string getTransformation() const; |
| Bytes send( Message& msg, const OCCI_STD_NAMESPACE::string& queue ); |
| Bytes send( Message& msg ); |
| void setNull(); |
| bool isNull() const; |
| |
| private: |
| Ptr<ProducerImpl> ptr; |
| }; |
| |
| class Consumer |
| { |
| public: |
| |
| enum DequeueMode |
| { |
| DEQ_BROWSE = OCI_DEQ_BROWSE, |
| DEQ_LOCKED = OCI_DEQ_LOCKED, |
| DEQ_REMOVE = OCI_DEQ_REMOVE, |
| DEQ_REMOVE_NODATA = OCI_DEQ_REMOVE_NODATA |
| }; |
| enum Navigation |
| { |
| DEQ_FIRST_MSG = OCI_DEQ_FIRST_MSG, |
| DEQ_NEXT_TRANSACTION = OCI_DEQ_NEXT_TRANSACTION, |
| DEQ_NEXT_MSG = OCI_DEQ_NEXT_MSG |
| }; |
| enum Visibility |
| { |
| DEQ_IMMEDIATE = OCI_DEQ_IMMEDIATE, |
| DEQ_ON_COMMIT = OCI_DEQ_ON_COMMIT |
| }; |
| enum |
| { |
| DEQ_WAIT_FOREVER = OCI_DEQ_WAIT_FOREVER, |
| DEQ_NO_WAIT = OCI_DEQ_NO_WAIT |
| }; |
| |
| Consumer( const Connection *conn ); |
| Consumer( const Connection * conn, const Agent& agent); |
| Consumer( const Connection *conn, |
| const OCCI_STD_NAMESPACE::string& queue ); |
| Consumer(const Consumer& con); |
| ~Consumer(); |
| |
| void operator=(const Consumer& con); |
| void setAgent(const Agent& agent); |
| void setConsumerName( const OCCI_STD_NAMESPACE::string& name ); |
| OCCI_STD_NAMESPACE::string getConsumerName() const; |
| void setCorrelationId( const OCCI_STD_NAMESPACE::string& cor_id ); |
| OCCI_STD_NAMESPACE::string getCorrelationId() const; |
| void setDequeueMode( DequeueMode mode ); |
| DequeueMode getDequeueMode() const; |
| void setMessageIdToDequeue( const Bytes& msgid ); |
| Bytes getMessageIdToDequeue() const; |
| void setPositionOfMessage( Navigation pos ); |
| Navigation getPositionOfMessage() const; |
| void setVisibility( Visibility option ); |
| Visibility getVisibility() const; |
| void setWaitTime( unsigned int wait ); |
| unsigned int getWaitTime() const; |
| void setQueueName( const OCCI_STD_NAMESPACE::string& queue ); |
| OCCI_STD_NAMESPACE::string getQueueName() const; |
| void setTransformation( const OCCI_STD_NAMESPACE::string& fName); |
| OCCI_STD_NAMESPACE::string getTransformation() const; |
| Message receive( Message::PayloadType pType, |
| const OCCI_STD_NAMESPACE::string& type="", |
| const OCCI_STD_NAMESPACE::string& schema=""); |
| void setNull(); |
| bool isNull() const; |
| |
| private: |
| Ptr<ConsumerImpl> ptr; |
| }; |
| |
| class Agent |
| { |
| public: |
| Agent( const Environment *env ); |
| Agent( const Environment *env, |
| const OCCI_STD_NAMESPACE::string& name, |
| const OCCI_STD_NAMESPACE::string& address, |
| unsigned int protocol=0 ) ; |
| Agent(const Agent& a); |
| ~Agent() ; |
| |
| void operator=(const Agent& a); |
| void setName( const OCCI_STD_NAMESPACE::string& name ); |
| OCCI_STD_NAMESPACE::string getName() const; |
| void setAddress( const OCCI_STD_NAMESPACE::string& addr ); |
| OCCI_STD_NAMESPACE::string getAddress() const; |
| void setProtocol(unsigned int protocol = 0); |
| unsigned int getProtocol() const; |
| void setNull(); |
| bool isNull() const; |
| OCIAQAgent* getOCIAQAgent() const; |
| |
| private: |
| Ptr<AgentImpl> ptr; |
| Agent( const Environment *env, OCIAQAgent *rhs, bool toFree = false ); |
| friend class Listener; |
| friend class MessageImpl; |
| }; |
| |
| class Listener |
| { |
| public: |
| Listener( const Connection *conn ); |
| Listener( const Connection *conn, |
| OCCI_STD_NAMESPACE::vector<Agent> &agList, |
| int waitTime=0 ); |
| ~Listener(); |
| |
| Agent listen(); |
| void setAgentList(OCCI_STD_NAMESPACE::vector<Agent> &agList); |
| void setTimeOutForListen(int waitTime); |
| OCCI_STD_NAMESPACE::vector<Agent> getAgentList() const; |
| int getTimeOutForListen() const; |
| |
| private: |
| const ConnectionImpl *conn; |
| OCIAQAgent** agentList; |
| unsigned int numAgents; |
| int timeOut; |
| void *listenerExt; |
| }; |
| |
| |
| class Subscription |
| { |
| public: |
| enum Presentation |
| { |
| PRES_DEFAULT = OCI_SUBSCR_PRES_DEFAULT, |
| PRES_XML = OCI_SUBSCR_PRES_XML |
| }; |
| enum Protocol |
| { |
| PROTO_CBK = OCI_SUBSCR_PROTO_OCI, |
| PROTO_MAIL = OCI_SUBSCR_PROTO_MAIL, |
| PROTO_SERVER = OCI_SUBSCR_PROTO_SERVER, |
| PROTO_HTTP = OCI_SUBSCR_PROTO_HTTP |
| }; |
| enum Namespace |
| { |
| NS_ANONYMOUS = OCI_SUBSCR_NAMESPACE_ANONYMOUS, |
| NS_AQ = OCI_SUBSCR_NAMESPACE_AQ |
| }; |
| |
| Subscription(const Environment* env); |
| Subscription(const Environment* env, OCISubscription* sub); |
| Subscription(const Subscription& sub); |
| ~Subscription(); |
| |
| void operator=(const Subscription& sub); |
| unsigned int getDatabaseServersCount() const; |
| void setDatabaseServerNames( |
| const OCCI_STD_NAMESPACE::vector<OCCI_STD_NAMESPACE::string>& dbsrv); |
| OCCI_STD_NAMESPACE::vector<OCCI_STD_NAMESPACE::string> |
| getDatabaseServerNames() const ; |
| void setNotifyCallback(unsigned int (*callback)(Subscription& sub, |
| NotifyResult *nr)); |
| unsigned int (*getNotifyCallback() const)(Subscription& sub, |
| NotifyResult *nr); |
| void setCallbackContext(void* ctx); |
| void* getCallbackContext() const; |
| void setSubscriptionName(const OCCI_STD_NAMESPACE::string& name); |
| OCCI_STD_NAMESPACE::string getSubscriptionName() const ; |
| void setSubscriptionNamespace(Namespace nameSpace); |
| Namespace getSubscriptionNamespace() const ; |
| void setPayload(const Bytes& payload); |
| Bytes getPayload() const ; |
| void setRecipientName( const OCCI_STD_NAMESPACE::string& name); |
| OCCI_STD_NAMESPACE::string getRecipientName() const; |
| void setPresentation( Presentation pres) ; |
| Presentation getPresentation() const ; |
| void setProtocol( Protocol prot) ; |
| Protocol getProtocol() const ; |
| OCISubscription* getOCISubscription() const; |
| void setNull(); |
| bool isNull() const; |
| Environment* getEnvironment() const; |
| |
| private: |
| Ptr<SubscriptionImpl> ptr; |
| }; |
| |
| class NotifyResult |
| { |
| public: |
| Bytes getPayload() const; |
| Message getMessage() const; |
| Bytes getMessageId() const; |
| OCCI_STD_NAMESPACE::string getConsumerName() const; |
| OCCI_STD_NAMESPACE::string getQueueName() const; |
| |
| private: |
| const EnvironmentImpl *env; |
| void *payload; |
| unsigned int payloadLen; |
| void *desc; |
| ub4 mode; |
| void *notifyResultExt; |
| |
| //private constructor |
| NotifyResult(const Environment *env, void *payload, ub4 payloadLen, |
| void *pdescriptor, ub4 mode); |
| |
| friend class SubscriptionImpl; |
| }; |
| |
| /*--------------------------------------------------------------------------- |
| PRIVATE TYPES AND CONSTANTS |
| ---------------------------------------------------------------------------*/ |
| |
| |
| /*--------------------------------------------------------------------------- |
| EXPORT FUNCTIONS |
| ---------------------------------------------------------------------------*/ |
| |
| |
| /*--------------------------------------------------------------------------- |
| INTERNAL FUNCTIONS |
| ---------------------------------------------------------------------------*/ |
| } /* end of namespace aq */ |
| } /* end of namespace occi */ |
| } /* end of namespace oracle */ |
| |
| #endif /* OCCIAQ_ORACLE */ |
| |
| #endif /* _olint */ |