CDF II
CDF KITS
source navigation ]
diff markup ]
identifier search ]
freetext search ]
file search ]
 
Architecture: i386 ]
Version: 4.10.4 ] [ 4.10.5 ] [ 4.8.4 ] [ 4.8.4l3s ] [ 4.8.5 ] [ 4.9.0 ] [ 4.9.1 ] [ 4.9.1.hpt3 ] [ 4.9.1hpt3 ] [ 4.9.1top1 ] [ 5.0.0 ] [ 5.1.0 ] [ 5.1.0beamonly ] [ 5.1.1 ] [ 5.2.0 ] [ 5.3.0 ] [ 5.3.1 ] [ 5.3.1dsp ] [ 5.3.3 ] [ 5.3.3_nt ] [ 5.3.4 ] [ 6.1.1 ] [ 6.1.1b ] [ 6.1.2 ] [ 6.1.3 ] [ 6.1.4 ] [ 6.1.4int3 ] [ 6.1.4mc ] [ 6.1.4mc_a ] [ 6.1.6 ] [ development ]

001 
002 // Author: Jim Kowalkowski
003 // Date: 1/99
004 //
005 // $Id: PackageManager.cc,v 1.1 2002/11/01 23:30:49 dbox Exp $
006 
007 #include <iostream>
008 
009 #include "DBManager/Result.hh"
010 #include "DBManager/Context.hh"
011 #include "DBManager/ConControl.hh"
012 #include "DBManager/Package.hh"
013 #include "DBManager/PackageManager.hh"
014 #include "DBManager/private/PackageMaster.hh"
015 #include "DBManager/private/Factory.hh"
016 #include "DBManager/private/Packages.hh"
017 #include "DBManager/TracerMacros.hh"
018 using namespace std;
019 
020 namespace {
021 
022   struct Defaults
023   {
024     static Defaults& instance();
025 
026     string default_id;
027     string default_iomap_file;
028   };
029 
030   Defaults& Defaults::instance() { static Defaults d; return d; }
031 }
032 
033 // namespace dbm {
034 
035 
036 void PackageManager::activityReport(std::ostream& ost) const
037 {
038   Packages::instance()->activityReport(ost);
039 }
040 
041 void PackageManager::setIomapFile(const std::string& db)
042 {
043   Defaults::instance().default_iomap_file=db;
044 }
045 
046 string PackageManager::defaultIomapFile()
047 {
048   Defaults& d = Defaults::instance();
049 
050   if (d.default_iomap_file.empty()==true) 
051     { 
052       d.default_iomap_file = "NONE" ;
053     }
054   return d.default_iomap_file;
055 }
056 
057 void PackageManager::setDefaultID(const std::string& db)
058 {
059   Defaults::instance().default_id=db;
060 }
061 
062 string PackageManager::defaultID()
063 {
064   Defaults& d = Defaults::instance();
065   //return(d.default_id.empty()==true)?"NONE":d.default_id;
066   if(d.default_id.empty())
067     {
068       const IoEntry *  e = ConControl::instance()->firstIOEntry();
069       if(e!=NULL) 
070         return e->Id();
071       else
072         return "NONE";
073     }else
074       return d.default_id;
075 }
076 
077 void PackageManager::makeAllPackages(const std::string& db)
078 {
079   DEBUG_MACRO("PackageManager::makeAllPackages:");
080   Package* pkg;
081   string fullid;
082   string curname;
083   const IoEntry* e = ConControl::instance()->find(db);
084   Packages* p = Packages::instance();
085   PackageFactory* fact = PackageFactory::instance();
086   PackageFactory::const_iterator fi = fact->begin();
087   string type = e->Type();
088 
089   while(fi!=fact->end())
090     {
091       const RegistryNode* n = (*fi).second;
092       curname=n->name();
093       fullid = e->Id() + curname;
094       if(p->find(fullid)==0)
095         {
096           // redundant with code in getPackage(), but without the
097           // manager option - this could be a problem depending on
098           // how manager options are going to be used.
099 
100           string::size_type sz = curname.size() - type.size();
101 
102           if(curname.rfind(type) == sz)
103             {
104               // generate calibname (tablename) by chopping off "type" from end
105               string dname(curname,0,sz);
106 
107               dbg_cerr << " dname= " << dname << " db=" << db << std::endl;
108 
109               // time to create a new package
110               Context* c = new Context(e->Location(),type,curname,db,dname);
111 
112               // round up db options from iomap entry
113               // IoEntry::ArgList& dbargs = e->Args();
114               // IoEntry::ArgList::const_iterator dbiter = dbargs.begin();
115               //while(dbiter!=dbargs.end())
116               //{
117               //        c->getTypeOptions().push_back(*dbiter);
118               //        ++dbiter;
119               //}
120 
121               const IoEntry::ArgMap& dbargs = e->Arguments();
122               pair <IoEntry::ArgMap::const_iterator,
123                 IoEntry::ArgMap::const_iterator> mp =
124                 dbargs.equal_range("type");
125 
126               for (IoEntry::ArgMap::const_iterator i = mp.first;
127                    i != mp.second; ++i)
128                 {
129                   c->getTypeOptions().push_back(i->second);
130                 }
131 
132               mp = dbargs.equal_range("driver");
133 
134               for (IoEntry::ArgMap::const_iterator i = mp.first;
135                    i != mp.second; ++i)
136                 c->getDriverOptions().push_back(i->second);
137 
138               mp = dbargs.equal_range("mgr");
139 
140               for (IoEntry::ArgMap::const_iterator i = mp.first;
141                    i != mp.second; ++i)
142                 c->getMgrOptions().push_back(i->second);
143 
144               mp = dbargs.equal_range("user");
145 
146               for (IoEntry::ArgMap::const_iterator i = mp.first;
147                    i != mp.second; ++i)
148                 c->getUserOptions().push_back(i->second);
149 
150               dbg_cerr << " calling PackageFactory::make("
151                        << n->name() << ",context)" << std::endl;
152               
153               if((pkg=PackageFactory::make(n->name(),c)))
154                 {
155                   p->add(fullid,pkg);
156                   p->addKeyed(pkg->notifyName(),pkg);
157                 }
158             }
159         }
160 
161       ++fi;
162     }
163 }
164 
165 PackageManager::PackageManager() { }
166 PackageManager::~PackageManager() { }
167 
168 void PackageManager::setCacheLength(int x)
169 {
170   Packages::instance()->setCacheLength(x);
171 }
172 
173 void PackageManager::setCacheLength(const std::string& k, int x)
174 {
175   Packages::instance()->setCacheLength(k, x);
176 }
177 
178 Result PackageManager::update(const std::string& k)
179 {
180   return Packages::instance()->update(k);
181 }
182 
183 Result PackageManager::update(const std::string& db, const std::string& k)
184 {
185   return Packages::instance()->update(db,k);
186 }
187 
188 void PackageManager::transfer(const std::string& from, const std::string& to)
189 {
190   // not necessarily the best implementation here...
191   Package* topkg;
192   Package* frompkg;
193   Packages* p = Packages::instance();
194   const IoEntry* efrom = ConControl::instance()->find(from);
195   const IoEntry* eto = ConControl::instance()->find(to);
196   string to_type = eto->Type();
197   string from_type = efrom->Type();
198   string toname;
199   string fromname;
200 
201   // std::cout << "transfer: to_type = " << to_type << std::endl;
202   // std::cout << "transfer: from_type = " << from_type << std::endl;
203   // std::cout << "transfer: to_id = " << eto->Id() << std::endl;
204   // std::cout << "transfer: from_id = " << efrom->Id() << std::endl;
205 
206   Packages::const_iterator i = p->begin();
207   while(i!=p->end())
208     {
209       frompkg=(*i).second;
210       const Context& con_from = frompkg->getContext();
211       fromname = from + con_from.getName();
212 
213       // std::cout << "-----" << std::endl;
214       // std::cout << "transfer: fromname = " << fromname << std::endl;
215       // std::cout << "transfer: first = " << (*i).first << std::endl;
216 
217       if(con_from.getID()==from && con_from.getType()==from_type)
218         {
219           toname = to + con_from.getCalibName() + to_type;
220           // std::cout << "transfer: toname = " << toname << std::endl;
221           if((topkg=p->find(toname)))
222             {
223               topkg->transfer(frompkg);
224               // std::cout << " *** found ****" << std::endl;
225             }
226         }
227 
228       ++i;
229     }
230 }
231 
232 void PackageManager::noDeferredIO(const std::string& db) { }
233 void PackageManager::noDeferredIO() { }
234 void PackageManager::setCachePutReplace() { }
235 void PackageManager::setCachePutInvalidate() { }
236 
237 // }
238 

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

This page was automatically generated by the LXR engine.
The LXR team
Valid HTML 4.01!

Send problems or questions to cdfcode@fnal.gov