dba_config.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include "dba_internal.hpp"
  14. int DBA__NBP_Intervall = 10;
  15. int DBA__BulkReadCount = 1000;
  16. int DBA__StartTransactionTimout = 0;
  17. int DBA__NBP_Force = 1;
  18. struct DBA__Config {
  19.   int ParamId;
  20.   int * Param;
  21.   int min;
  22.   int max;
  23.   const char * Description;
  24. };
  25. static 
  26. DBA__Config Parameters[] = {
  27.   { 0, &DBA__NBP_Intervall, 4, INT_MAX, 
  28.     "Newton Batch Process Interval(ms)" },
  29.   { 1, &DBA__BulkReadCount, 1, 5000, 
  30.     "Operations per transaction during bulkread" },
  31.   { 2, &DBA__StartTransactionTimout, 0, INT_MAX,
  32.     "Start transaction timeout(ms)" },
  33.   { 3, &DBA__NBP_Force, 0, 2,
  34.     "Newton Batch Process Force send algorithm" } 
  35. };
  36. static const int Params = sizeof(Parameters)/sizeof(DBA__Config);
  37. static
  38. DBA__Config *
  39. getParam(int id){
  40.   for(int i = 0; i<Params; i++)
  41.     if(Parameters[i].ParamId == id)
  42.       return &Parameters[i];
  43.   return 0;
  44. }
  45. extern "C"
  46. DBA_Error_t
  47. DBA_SetParameter(int ParameterId, int Value){
  48.   if(Value == -1){
  49.     DBA__SetLatestError(DBA_APPLICATION_ERROR, 0, "Node id is not modifyable");
  50.     return DBA_APPLICATION_ERROR;
  51.   }
  52.   DBA__Config * p = getParam(ParameterId);
  53.   if(p == 0){
  54.     DBA__SetLatestError(DBA_APPLICATION_ERROR, 0, "Invalid parameter id: %d",
  55. ParameterId);
  56.     return DBA_APPLICATION_ERROR;
  57.   }
  58.   if(Value < p->min){
  59.     DBA__SetLatestError(DBA_APPLICATION_ERROR, 0, 
  60. "Value too small for parameter %d (min = %d)",
  61. Value, p->min);
  62.     return DBA_APPLICATION_ERROR;
  63.   }
  64.   if(Value > p->max){
  65.     DBA__SetLatestError(DBA_APPLICATION_ERROR, 0, 
  66. "Value too big for parameter %d (max = %d)",
  67. Value, p->max);
  68.     return DBA_APPLICATION_ERROR;
  69.   }
  70.   * p->Param = Value;
  71.   return DBA_NO_ERROR;
  72. }
  73.   
  74. extern "C"
  75. DBA_Error_t
  76. DBA_GetParameter(int ParameterId, int * Value){
  77.   if(ParameterId == -1){
  78.     if(DBA__TheNdb == 0){
  79.       DBA__SetLatestError(DBA_APPLICATION_ERROR, 0, "DBA_Open() is not called"
  80.   );
  81.       return DBA_APPLICATION_ERROR;
  82.     }
  83.     * Value = DBA__TheNdb->getNodeId();
  84.     return DBA_NO_ERROR;
  85.   }
  86.   DBA__Config * p = getParam(ParameterId);
  87.   if(p == 0){
  88.     DBA__SetLatestError(DBA_APPLICATION_ERROR, 0, "Invalid parameter id: %d",
  89. ParameterId);
  90.     return DBA_APPLICATION_ERROR;
  91.   }
  92.   
  93.   * Value = * p->Param;
  94.   return DBA_NO_ERROR;
  95. }