ATLAS Offline Software
Loading...
Searching...
No Matches
DatabaseRegistry.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include <cstdio>
6#include "DatabaseRegistry.h"
7#include "DatabaseHandler.h"
8
11
12
15
16std::set< pool::DatabaseHandler* >::iterator
18{
19 std::set< pool::DatabaseHandler* >::iterator iDatabase = m_databases.find( dbHandler );
20 if ( iDatabase == m_databases.end() ) {
21 iDatabase = m_databases.insert( dbHandler ).first;
22 m_fidToDb.insert( std::make_pair( dbHandler->fid(), dbHandler ) );
23 m_pfnToDb.insert( std::make_pair( dbHandler->pfn(), dbHandler ) );
24 m_fidToLfns.insert( std::make_pair( dbHandler->fid(),
25 std::set< std::string >() ) );
26 }
27 return iDatabase;
28}
29
30void
35
36
37void
39 const std::string& lfn )
40{
41 std::set< pool::DatabaseHandler* >::iterator iDatabase = this->registerDbHandler( dbHandler );
42 const std::string& fid = (*iDatabase)->fid();
43 m_fidToLfns.find( fid )->second.insert( lfn );
44 m_lfnToDb.insert ( std::make_pair( lfn, *iDatabase ) );
45}
46
47
48void
50{
51 std::set< pool::DatabaseHandler* >::iterator idb = m_databases.find( dbHandler );
52 if ( idb != m_databases.end() ) {
53 m_fidToDb.erase( (*idb)->fid() );
54 m_pfnToDb.erase( (*idb)->pfn() );
55
56 std::map< std::string, std::set< std::string > >::iterator iLfnSet = m_fidToLfns.find( (*idb)->fid() );
57 if ( iLfnSet != m_fidToLfns.end() ) {
58 for ( std::set< std::string >::iterator iLfn = iLfnSet->second.begin();
59 iLfn != iLfnSet->second.end(); ++iLfn ) {
60 m_lfnToDb.erase( *iLfn );
61 }
62 m_fidToLfns.erase( iLfnSet );
63 }
64
65 m_databases.erase( idb );
66 }
67}
DatabaseHandler is a class taking care of the micro-connections and the micro transactions for a give...
const std::string & pfn() const
Returns the physical file name.
const std::string & fid() const
Returns the file identifier.
std::map< std::string, std::set< std::string > > m_fidToLfns
std::map< std::string, DatabaseHandler * > m_lfnToDb
std::set< DatabaseHandler * >::iterator iterator
std::map< std::string, DatabaseHandler * > m_fidToDb
void deregisterDatabaseHandler(DatabaseHandler *dbHandler)
Deregisters a database.
std::set< DatabaseHandler * > m_databases
void registerDatabaseHandler(DatabaseHandler *dbHandler)
Registers a database.
std::set< DatabaseHandler * >::iterator registerDbHandler(DatabaseHandler *dbHandler)
std::map< std::string, DatabaseHandler * > m_pfnToDb