|
NCBI Home IEB Home C++ Toolkit docs C Toolkit source browser C Toolkit source browser (2) |
NCBI C++ Toolkit Cross ReferenceC++/src/util/itransaction.cpp |
source navigation diff markup identifier search freetext search file search |
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 |
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more information. |