NCBI C++ Toolkit Cross Reference

C++/src/util/itransaction.cpp


  1 /*  $Id: itransaction.cpp 103491 2007-05-04 17:18:18Z kazimird $
  2  * ===========================================================================
  3  *
  4  *                            PUBLIC DOMAIN NOTICE
  5  *               National Center for Biotechnology Information
  6  *
  7  *  This software/database is a "United States Government Work" under the
  8  *  terms of the United States Copyright Act.  It was written as part of
  9  *  the author's official duties as a United States Government employee and
 10  *  thus cannot be copyrighted.  This software/database is freely available
 11  *  to the public for use. The National Library of Medicine and the U.S.
 12  *  Government have not placed any restriction on its use or reproduction.
 13  *
 14  *  Although all reasonable efforts have been taken to ensure the accuracy
 15  *  and reliability of the software and data, the NLM and the U.S.
 16  *  Government do not and cannot warrant the performance or results that
 17  *  may be obtained by using this software or data. The NLM and the U.S.
 18  *  Government disclaim all warranties, express or implied, including
 19  *  warranties of performance, merchantability or fitness for any particular
 20  *  purpose.
 21  *
 22  *  Please cite the author in any work or product based on this material.
 23  *
 24  * ===========================================================================
 25  *
 26  * Authors:  Anatoliy Kuznetsov
 27  *
 28  * File Description: ITransaction interface
 29  *
 30  */
 31 
 32 
 33 #include <ncbi_pch.hpp>
 34 #include <util/itransaction.hpp>
 35 
 36 BEGIN_NCBI_SCOPE
 37 
 38 ITransaction::~ITransaction()
 39 {}
 40 
 41 ITransactional::~ITransactional()
 42 {}
 43 
 44 ITransactionalRegistry::~ITransactionalRegistry()
 45 {}
 46 
 47 void CThreadLocalTransactional::SetTransaction(ITransaction* trans)
 48 {
 49     CThread::TID self_tid = CThread::GetSelf();
 50 
 51     CFastMutexGuard lock(m_ThreadMapLock);
 52     m_ThreadMap[self_tid] = trans;
 53 }
 54 
 55 ITransaction* CThreadLocalTransactional::GetTransaction()
 56 {
 57     CThread::TID self_tid = CThread::GetSelf();
 58 
 59     CFastMutexGuard lock(m_ThreadMapLock);
 60     TThreadCtxMap::const_iterator it = m_ThreadMap.find(self_tid);
 61     if (it == m_ThreadMap.end()) {
 62         return 0;
 63     }
 64     return it->second;
 65 }
 66 
 67 void CThreadLocalTransactional::RemoveTransaction(ITransaction* trans)
 68 {
 69     CThread::TID self_tid = CThread::GetSelf();
 70 
 71     CFastMutexGuard lock(m_ThreadMapLock);
 72     TThreadCtxMap::iterator it = m_ThreadMap.find(self_tid);
 73     if (it == m_ThreadMap.end()) {
 74         return;
 75     }
 76     if (it->second == trans) {
 77         it->second = 0;
 78     }
 79 }
 80 
 81 END_NCBI_SCOPE
 82 

source navigation ]   [ diff markup ]   [ identifier search ]   [ freetext search ]   [ file search ]  

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.