Changeset 13767 for trunk


Ignore:
Timestamp:
05/17/12 20:21:30 (13 years ago)
Author:
tbretz
Message:
Implemented the possibility to reload the source data from the database.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/drivectrl.cc

    r13223 r13767  
    733733    };
    734734
     735    string fDatabase;
     736
    735737    typedef map<string,pair<double,double>> sources;
    736738    sources fSources;
     
    945947
    946948            T::Out() << name << "," << ra << "," << dec << endl;
     949        }
     950        return T::GetCurrentState();
     951    }
     952
     953    int ReloadSources()
     954    {
     955        try
     956        {
     957            ReadDatabase();
     958        }
     959        catch (const exception &e)
     960        {
     961            T::Error("Reading sources from databse failed: "+string(e.what()));
    947962        }
    948963        return T::GetCurrentState();
     
    11401155            ("Print source list.");
    11411156
     1157        T::AddEvent("RELOAD_SOURCES")
     1158            (bind(&StateMachineDrive::ReloadSources, this))
     1159            ("Reload sources from database.");
     1160
    11421161        fDrive.StartConnect();
    11431162    }
     
    11481167    }
    11491168
    1150     void ReadDatabase(const string &database)
     1169    void ReadDatabase(bool print=true)
    11511170    {
    11521171        //static const boost::regex expr("(([[:word:].-]+)(:(.+))?@)?([[:word:].-]+)(:([[:digit:]]+))?(/([[:word:].-]+))?");
     
    11591178
    11601179        boost::smatch what;
    1161         if (!boost::regex_match(database, what, expr, boost::match_extra))
    1162             throw runtime_error("Couldn't parse '"+database+"'.");
     1180        if (!boost::regex_match(fDatabase, what, expr, boost::match_extra))
     1181            throw runtime_error("Couldn't parse '"+fDatabase+"'.");
    11631182
    11641183        if (what.size()!=10)
    1165             throw runtime_error("Error parsing '"+database+"'.");
     1184            throw runtime_error("Error parsing '"+fDatabase+"'.");
    11661185
    11671186        const string user   = what[2];
     
    12001219        }*/
    12011220
     1221        fSources.clear();
    12021222        for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
    12031223        {
     
    12091229            fSources[name] = make_pair(ra, dec);
    12101230
    1211             ostringstream msg;
    1212             msg << " " << name << setprecision(8) << ":   Ra=" << ra << "h Dec=" << dec << "deg";
    1213             T::Message(msg);
     1231            if (print)
     1232            {
     1233                ostringstream msg;
     1234                msg << " " << name << setprecision(8) << ":   Ra=" << ra << "h Dec=" << dec << "deg";
     1235                T::Message(msg);
     1236            }
    12141237        }
    12151238    }
     
    12551278
    12561279        if (conf.Has("source-database"))
    1257             ReadDatabase(conf.Get<string>("source-database"));
     1280        {
     1281            fDatabase = conf.Get<string>("source-database");
     1282            ReadDatabase();
     1283        }
    12581284
    12591285        // The possibility to connect should be last, so that
Note: See TracChangeset for help on using the changeset viewer.