diff options
author | Gordon Sim <gsim@apache.org> | 2008-04-24 21:07:34 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2008-04-24 21:07:34 +0000 |
commit | 1c86294add5cbb640aac7f458c4de693de48dd9f (patch) | |
tree | 22d7774e00c7514c4b76be5cf8b50727b74fe4e3 /cpp/src/qpid/broker/DtxHandlerImpl.cpp | |
parent | 96f12949244b5af2b717156823309b66fe7bfb84 (diff) | |
download | qpid-python-1c86294add5cbb640aac7f458c4de693de48dd9f.tar.gz |
Generate c++ code from final 0-10 spec
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@651423 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/DtxHandlerImpl.cpp')
-rw-r--r-- | cpp/src/qpid/broker/DtxHandlerImpl.cpp | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/cpp/src/qpid/broker/DtxHandlerImpl.cpp b/cpp/src/qpid/broker/DtxHandlerImpl.cpp deleted file mode 100644 index 61ab856fa9..0000000000 --- a/cpp/src/qpid/broker/DtxHandlerImpl.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/* - * - * Copyright (c) 2006 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#include "DtxHandlerImpl.h" - -#include <boost/format.hpp> -#include "Broker.h" -#include "qpid/framing/constants.h" -#include "qpid/framing/Array.h" - -using namespace qpid::broker; -using namespace qpid::framing; -using std::string; - -DtxHandlerImpl::DtxHandlerImpl(SemanticState& s) : HandlerImpl(s) {} - -// DtxDemarcationHandler: - - -void DtxHandlerImpl::select() -{ - state.selectDtx(); -} - -DtxDemarcationXEndResult DtxHandlerImpl::end(u_int16_t /*ticket*/, - const string& xid, - bool fail, - bool suspend) -{ - try { - if (fail) { - state.endDtx(xid, true); - if (suspend) { - throw CommandInvalidException(QPID_MSG("End and suspend cannot both be set.")); - } else { - return DtxDemarcationXEndResult(XA_RBROLLBACK); - } - } else { - if (suspend) { - state.suspendDtx(xid); - } else { - state.endDtx(xid, false); - } - return DtxDemarcationXEndResult(XA_OK); - } - } catch (const DtxTimeoutException& e) { - return DtxDemarcationXEndResult(XA_RBTIMEOUT); - } -} - -DtxDemarcationXStartResult DtxHandlerImpl::start(u_int16_t /*ticket*/, - const string& xid, - bool join, - bool resume) -{ - if (join && resume) { - throw CommandInvalidException(QPID_MSG("Join and resume cannot both be set.")); - } - try { - if (resume) { - state.resumeDtx(xid); - } else { - state.startDtx(xid, getBroker().getDtxManager(), join); - } - return DtxDemarcationXStartResult(XA_OK); - } catch (const DtxTimeoutException& e) { - return DtxDemarcationXStartResult(XA_RBTIMEOUT); - } -} - -// DtxCoordinationHandler: - -DtxCoordinationXPrepareResult DtxHandlerImpl::prepare(u_int16_t /*ticket*/, - const string& xid) -{ - try { - bool ok = getBroker().getDtxManager().prepare(xid); - return DtxCoordinationXPrepareResult(ok ? XA_OK : XA_RBROLLBACK); - } catch (const DtxTimeoutException& e) { - return DtxCoordinationXPrepareResult(XA_RBTIMEOUT); - } -} - -DtxCoordinationXCommitResult DtxHandlerImpl::commit(u_int16_t /*ticket*/, - const string& xid, - bool onePhase) -{ - try { - bool ok = getBroker().getDtxManager().commit(xid, onePhase); - return DtxCoordinationXCommitResult(ok ? XA_OK : XA_RBROLLBACK); - } catch (const DtxTimeoutException& e) { - return DtxCoordinationXCommitResult(XA_RBTIMEOUT); - } -} - - -DtxCoordinationXRollbackResult DtxHandlerImpl::rollback(u_int16_t /*ticket*/, - const string& xid ) -{ - try { - getBroker().getDtxManager().rollback(xid); - return DtxCoordinationXRollbackResult(XA_OK); - } catch (const DtxTimeoutException& e) { - return DtxCoordinationXRollbackResult(XA_RBTIMEOUT); - } -} - -DtxCoordinationXRecoverResult DtxHandlerImpl::recover(u_int16_t /*ticket*/, - bool /*startscan*/, - bool /*endscan*/ ) -{ - //TODO: what do startscan and endscan actually mean? - - // response should hold on key value pair with key = 'xids' and - // value = sequence of xids - - // until sequences are supported (0-10 encoding), an alternate - // scheme is used for testing: - // - // key = 'xids' and value = a longstr containing shortstrs for each xid - // - // note that this restricts the length of the xids more than is - // strictly 'legal', but that is ok for testing - std::set<std::string> xids; - getBroker().getStore().collectPreparedXids(xids); - - //TODO: remove the need to copy from one container type to another - std::vector<std::string> data; - for (std::set<std::string>::iterator i = xids.begin(); i != xids.end(); i++) { - data.push_back(*i); - } - Array indoubt(data); - return DtxCoordinationXRecoverResult(indoubt); -} - -void DtxHandlerImpl::forget(u_int16_t /*ticket*/, - const string& xid) -{ - //Currently no heuristic completion is supported, so this should never be used. - throw CommandInvalidException(QPID_MSG("Forget is invalid. Branch with xid " << xid << " not heuristically completed!")); -} - -DtxCoordinationXGetTimeoutResult DtxHandlerImpl::getTimeout(const string& xid) -{ - uint32_t timeout = getBroker().getDtxManager().getTimeout(xid); - return DtxCoordinationXGetTimeoutResult(timeout); -} - - -void DtxHandlerImpl::setTimeout(u_int16_t /*ticket*/, - const string& xid, - u_int32_t timeout) -{ - getBroker().getDtxManager().setTimeout(xid, timeout); -} - - |