00001 #ifndef _broker_DtxHandlerImpl_h
00002 #define _broker_DtxHandlerImpl_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "qpid/framing/AMQP_ServerOperations.h"
00023 #include "qpid/framing/AMQP_ClientProxy.h"
00024 #include "HandlerImpl.h"
00025
00026 namespace qpid {
00027 namespace broker {
00028
00029 class DtxHandlerImpl
00030 : public HandlerImpl,
00031 public framing::AMQP_ServerOperations::DtxCoordinationHandler,
00032 public framing::AMQP_ServerOperations::DtxDemarcationHandler
00033 {
00034 public:
00035 DtxHandlerImpl(SemanticState&);
00036
00037
00038
00039 framing::DtxCoordinationCommitResult commit(u_int16_t ticket, const std::string& xid, bool onePhase);
00040
00041 void forget(u_int16_t ticket, const std::string& xid);
00042
00043 framing::DtxCoordinationGetTimeoutResult getTimeout(const std::string& xid);
00044
00045 framing::DtxCoordinationPrepareResult prepare(u_int16_t ticket, const std::string& xid);
00046
00047 framing::DtxCoordinationRecoverResult recover(u_int16_t ticket, bool startscan, bool endscan);
00048
00049 framing::DtxCoordinationRollbackResult rollback(u_int16_t ticket, const std::string& xid);
00050
00051 void setTimeout(u_int16_t ticket, const std::string& xid, u_int32_t timeout);
00052
00053
00054
00055 framing::DtxDemarcationEndResult end(u_int16_t ticket, const std::string& xid, bool fail, bool suspend);
00056
00057 void select();
00058
00059 framing::DtxDemarcationStartResult start(u_int16_t ticket, const std::string& xid, bool join, bool resume);
00060 };
00061
00062
00063 }}
00064
00065
00066
00067 #endif