新增sql连接,目前支持mysql、sqlite、oracle连接以及相关数据库操作
This commit is contained in:
@@ -0,0 +1,379 @@
|
||||
/* Copyright (c) 2002, 2013, Oracle and/or its affiliates.
|
||||
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
|
||||
|
||||
#ifdef RAW
|
||||
#undef RAW
|
||||
#endif /* RAW */
|
||||
|
||||
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 */
|
||||
Reference in New Issue
Block a user