/*******************************************************************************
OpenAirInterface
Copyright(c) 1999 - 2014 Eurecom
OpenAirInterface is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenAirInterface is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenAirInterface.The full GNU General Public License is
included in this distribution in the file called "COPYING". If not,
see .
Contact Information
OpenAirInterface Admin: openair_admin@eurecom.fr
OpenAirInterface Tech : openair_tech@eurecom.fr
OpenAirInterface Dev : openair4g-devel@eurecom.fr
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
#include
#include "Transactions.h"
#include "Exceptions.h"
Transactions* Transactions::s_instance = 0;
//----------------------------------------------------------------------------
Transaction* const Transactions::GetTransaction(transaction_id_t idP) {
//----------------------------------------------------------------------------
map::iterator it;
it=m_transaction_map.find(idP);
if (it != m_transaction_map.end()) {
return it->second;
} else {
throw no_such_transaction_error();
}
}
//----------------------------------------------------------------------------
bool Transactions::IsTransactionRegistered(transaction_id_t idP) {
//----------------------------------------------------------------------------
map::iterator it;
it=m_transaction_map.find(idP);
if (it != m_transaction_map.end()) {
return true;
} else {
return false;
}
}
//----------------------------------------------------------------------------
void Transactions::RemoveTransaction(transaction_id_t idP) {
//----------------------------------------------------------------------------
unsigned int n = m_transaction_map.erase(idP);
fprintf(stderr, "[Transactions] Transaction %d removed(%d)\n", idP, n);
}
//----------------------------------------------------------------------------
void Transactions::AddTransaction(Transaction* txP) {
//----------------------------------------------------------------------------
if (txP == NULL) {
throw null_transaction_error();
}
transaction_id_t tx_id = txP->GetId();
if (IsTransactionRegistered(tx_id)) {
throw transaction_already_exist_error();
} else {
fprintf(stderr, "[Transactions] Adding new Transaction %d\n", tx_id);
m_transaction_map.insert(std::pair(tx_id, txP));
}
}
//-----------------------------------------------------------------
Transactions* Transactions::Instance()
//-----------------------------------------------------------------
{
if (Transactions::s_instance == 0) {
Transactions::s_instance = new Transactions;
}
return s_instance;
}
//-----------------------------------------------------------------
Transactions::Transactions()
//-----------------------------------------------------------------
{
}
//-----------------------------------------------------------------
Transactions::~Transactions()
//-----------------------------------------------------------------
{
if (!m_transaction_map.empty()) m_transaction_map.clear();
}