// -*- C++ -*- //# AppRC.cc: Implementation of the AppRC class //# Copyright (C) 1997,1998,1999,2000,2001,2002,2003 //# Associated Universities, Inc. Washington DC, USA. //# //# This library is free software; you can redistribute it and/or modify it //# under the terms of the GNU Library General Public License as published by //# the Free Software Foundation; either version 2 of the License, or (at your //# option) any later version. //# //# This library 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 Library General Public //# License for more details. //# //# You should have received a copy of the GNU Library General Public License //# along with this library; if not, write to the Free Software Foundation, //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA. //# //# Correspondence concerning AIPS++ should be addressed as follows: //# Internet email: aips2-request@nrao.edu. //# Postal address: AIPS++ Project Office //# National Radio Astronomy Observatory //# 520 Edgemont Road //# Charlottesville, VA 22903-2475 USA //# //# $Id$ #include <synthesis/Utilities/AppRC.h> #include <casacore/casa/OS/RegularFile.h> #include <casacore/casa/OS/HostInfo.h> #include <synthesis/TransformMachines/Utils.h> using namespace casacore; namespace casa{ // //-------------------------------------------------------------- // AppRC::~AppRC() { // if (deleteFile_p) // { // RegularFile ff(fileName_p); // cerr << id_p << " " << fileName_p << endl; // if (ff.exists()) // { // if (id_p != "") // cerr << id_p << " removing " << fileName_p << endl; // ff.remove(); // } // else // { // if (id_p != "") // cerr << id_p << " did not find " << fileName_p << endl; // } // } }; // //-------------------------------------------------------------- // void AppRC::init(const string& filename, const Bool addPID, const Bool deleteFile) { addPID_p=addPID; deleteFile_p=deleteFile; if (rc_p == NULL) { ostringstream tt; tt << filename; if (addPID_p) { setPID(); tt << "_" << myPID_p; } fileName_p=tt.str(); //cerr << fileName_p <<endl; if(fileName_p.size() >0){ Casarc::setDefaultPath(fileName_p); rc_p = &Casarc::instance(fileName_p); } else rc_p = &Casarc::instance(); //cerr << rc_p->path() << endl; } }; // //-------------------------------------------------------------- // string AppRC::get(const string& name) {return rc_p->get(name);} // //-------------------------------------------------------------- // string AppRC::get(const string& name, Int& val) { string strVal=rc_p->get(name); if (strVal != "") val=atoi(strVal.c_str()); return strVal; } // //-------------------------------------------------------------- // string AppRC::get(const string& name, Float& val) { string strVal=rc_p->get(name); if (strVal != "") val=(Float)atof(strVal.c_str()); return strVal; } // //-------------------------------------------------------------- // string AppRC::get(const string& name, Double& val) { string strVal=rc_p->get(name); if (strVal != "") val=(Double)atof(strVal.c_str()); return strVal; } // //-------------------------------------------------------------- // void AppRC::put(const string& name, const string& val) {rc_p->put(name,val);} // //-------------------------------------------------------------- // void AppRC::put(const string& name, const Int& val) { ostringstream tt; tt << val; put(name,tt.str()); } // //-------------------------------------------------------------- // void AppRC::put(const string& name, const Float& val) { ostringstream tt; tt << val; put(name,tt.str()); } // //-------------------------------------------------------------- // void AppRC::put(const string& name, const Double& val) { ostringstream tt; tt << val; put(name,tt.str()); } Double AppRC::getMemoryAvailable(string envVarName) { AppRC myRC; string def_rc_val=myRC.get("system.resources.memory"); Double memval=-1.0; if(def_rc_val.size() >0){ //This is in MB usually stringstream(def_rc_val) >> memval; memval*=1e6; } if(memval < 0.0){ //This is in KB memval=HostInfo::memoryTotal(true); memval*=1e3; } Double valfromenv=-1.0; //Assuming it is in MB valfromenv=SynthesisUtils::getenv(envVarName.c_str(), valfromenv); valfromenv *=1e6; if(valfromenv <0.0) return memval; return valfromenv; } };