
interface Parameter {
void setName(in string name);
void setDataType(in int type);
void setValue[Int](in int value);
void setValue[Long](in long value);
void setValue[Double](in double value);
void setValue[String](in string value);
void setTBName(in string tbName);
string getName();
int getDataType();
void getValue[Int](out int value);
void getValue[Long](out long value);
void getValue[Double](out double value);
void getValue[String](out string value);
string getTBName();
bool compareWith(in Parameter& another, in double tolerance, in int relation);
string getDBConditions(in int tbIndex, in double tolerance, in int relation);
}
interface ParameterSet {
void addAParameter(in Parameter aParam);
int getNumOfParameters();
Parameter getParameterAt(in int index);
Parameter getParameterAt(in string name);
string getTBName();
bool compareWith(in ParameterSet another, in map<string, double> tMap, in map<string, int> rMap);
string getDBConditions(in array<int> tbIndices, in map<string, double> tMap, in map<string, int> rMap)
}
interface Comparator extends gov.cca.Port {/* Comparison operations between parameter sets */
void setLHS(in ParameterSet lefthand);
void setRHS(in ParameterSet righthand);
ParameterSet getLHS();
ParameterSet getRHS();
int getDimension();
Parameter getLHSParameterAt(in string paraName);
Parameter getRHSParameterAt(in string paraName);
void setToleranceAt(in string name, in double epsilon);
double getToleranceAt(in string name);
void setRelationAt(in string name, in int aRelation);
int getRelationAt(in string name);
bool doCompare();
}
interface DB extends gov.cca.Port{
bool connect();
bool disconnect();
bool isClosed();
void setConnectionInfo(in string info);
string getConnectioninfo();
int bindParameters(in int param, in int argument);
int bindParameters(in int param, in long argument);
int bindParameters(in int param, in double argument);
int bindParameters(in int param, in string argument);
void bindCommand();
void resetQuery();
int executeQuery_bindParam(in string commd, out Outcome res);
int executeQuery(in string commd, out Outcome res);
int executeInsert(in string commd);
void storeParameter(in int trialID, in int iterNo, in Parameter aParam);
void storeParameterSet(in int trialID, in int iterNo, in ParameterSet aParamSet);
void getParameter(in int trialID, int iterNo, inout Parameter aParam); // get parameter value
void getParameterSet(in int trialID, int iterNo, inout ParameterSet aParamSet);// get parameter set value
int getMatchingTrialsBetween(in ParameterSet lower, in ParameterSet upper, out Outcome trialIDs);
int getMatchingTrials(in ParameterSet lower, in vector<doule> epsilons, out Outcome trialIDs);
}
interface Outcome {
int setElements(in opaque res); // res type is decided by the DBMS, e.g., PGresult in PostgreSQL)
int getNumberOfRows();
int getNumberOfColumns();
int getElement[Long](in int row, in int column, out long res);
int getElement[Double](in int row, in int column, out double res);
int getElement[String](in int row, in int column, out string res);
int getElement[Long](in int row, in string columnName, out long res);
int getElement[Double](in int row, in string columnName, out double res);
int getElement[String](in int row, in string columnName, out string res);
void clear();
}
/* instantiate parameter 1 */
ierr = ComputeQuantity(matrix,"icmk","splits",&res,&flg); CHKERRQ(ierr);
MatrixProperty param1("splits", "matrix_meta", res.i);
/* instantiate parameter 2 */
ierr = ComputeQuantity(matrix,"structure","nnzeros",&res,&flg); CHKERRQ(ierr);
MatrixProperty param2("nnzeros", "matrix_meta", res.i);
/**** Store matrix property set into database. ***/
int myRank;
ierr = MPI_Comm_rank(PETSC_COMM_WORLD, &myRank); CHKERRQ(ierr);
if (myRank == 0){
int localID;
int trialID;
string conninfo("dbname = perfdb");
/* Generate a runtime database manager. It connects to a PostgreSQL database through DB interfaces. */
RunTimeRecord *R = RunTimeRecord::instance();
R->Connect2DB(conninfo);
trialID = R->getTrialID();
localID = R->getCurEvtID(cflStr);
/* instantiate a parameter set */
PropertySet aSet;
/* add parameter 1 and 2 into the set */
aSet.addAParameter(¶m1);
aSet.addAParameter(¶m2);
/* store the parameter set into database, */
R->loadParameterSet(trialID, localID, aSet);
}
/**** End storing matrix properties into database. ***/
Created by: likli last modification: Thursday 06 of December, 2007 [00:17:55 UTC] by likli
The original document is available at http://www.cca-forum.org/wiki/tiki-index.php?page=CQoS%20Database%20Component%20Interfaces