~percona-dev/percona-xtradb-cluster/galera-2.x

« back to all changes in this revision

Viewing changes to gcs/src/gcs_params.c

  • Committer: Teemu Ollakka
  • Date: 2011-03-12 11:51:33 UTC
  • Revision ID: teemu.ollakka@codership.com-20110312115133-q6dib7wbpm2wyfly
References lp:710554 importing up to [2089]: #422, #442, #440, #412

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 * Copyright (C) 2010 Codership Oy <info@codership.com>
3
3
 *
4
 
 * $Id: gcs_params.c 2009 2011-01-07 14:44:38Z teemu $
 
4
 * $Id: gcs_params.c 2085 2011-03-10 16:59:05Z alex $
5
5
 */
6
6
 
7
7
#include "gcs_params.h"
9
9
#include <inttypes.h>
10
10
#include <errno.h>
11
11
 
12
 
const char* const GCS_PARAMS_FC_FACTOR          = "gcs.fc_factor";
13
 
const char* const GCS_PARAMS_FC_LIMIT           = "gcs.fc_limit";
14
 
const char* const GCS_PARAMS_MAX_PKT_SIZE       = "gcs.max_packet_size";
 
12
const char* const GCS_PARAMS_FC_FACTOR         = "gcs.fc_factor";
 
13
const char* const GCS_PARAMS_FC_LIMIT          = "gcs.fc_limit";
 
14
const char* const GCS_PARAMS_FC_MASTER_SLAVE   = "gcs.fc_master_slave";
 
15
const char* const GCS_PARAMS_FC_DEBUG          = "gcs.fc_debug";
 
16
const char* const GCS_PARAMS_MAX_PKT_SIZE      = "gcs.max_packet_size";
15
17
const char* const GCS_PARAMS_RECV_Q_HARD_LIMIT = "gcs.recv_q_hard_limit";
16
18
const char* const GCS_PARAMS_RECV_Q_SOFT_LIMIT = "gcs.recv_q_soft_limit";
17
 
const char* const GCS_PARAMS_MAX_THROTTLE       = "gcs.max_throttle";
 
19
const char* const GCS_PARAMS_MAX_THROTTLE      = "gcs.max_throttle";
18
20
 
19
 
static double  const GCS_PARAMS_DEFAULT_FC_FACTOR          = 0.5;
20
 
static long    const GCS_PARAMS_DEFAULT_FC_LIMIT           = 16;
21
 
static long    const GCS_PARAMS_DEFAULT_MAX_PKT_SIZE       = 64500;
 
21
static double  const GCS_PARAMS_DEFAULT_FC_FACTOR         = 0.5;
 
22
static long    const GCS_PARAMS_DEFAULT_FC_LIMIT          = 16;
 
23
static bool    const GCS_PARAMS_DEFAULT_FC_MASTER_SLAVE   = false;
 
24
static long    const GCS_PARAMS_DEFAULT_FC_DEBUG          = 0;
 
25
static long    const GCS_PARAMS_DEFAULT_MAX_PKT_SIZE      = 64500;
22
26
static ssize_t const GCS_PARAMS_DEFAULT_RECV_Q_HARD_LIMIT = SSIZE_MAX;
23
27
static double  const GCS_PARAMS_DEFAULT_RECV_Q_SOFT_LIMIT = 0.25;
24
 
static double  const GCS_PARAMS_DEFAULT_MAX_THROTTLE       = 0.25;
 
28
static double  const GCS_PARAMS_DEFAULT_MAX_THROTTLE      = 0.25;
 
29
 
 
30
static long
 
31
params_init_bool (gu_config_t* conf, const char* const name,
 
32
                  bool const def_val, bool* const var)
 
33
{
 
34
    bool val;
 
35
 
 
36
    long rc = gu_config_get_bool(conf, name, &val);
 
37
 
 
38
    if (rc < 0) {
 
39
        /* Cannot parse parameter value */
 
40
        gu_error ("Bad %s value", name);
 
41
        return rc;
 
42
    }
 
43
    else if (rc > 0) {
 
44
        /* Parameter value not set, use default */
 
45
        val = def_val;
 
46
        gu_config_set_bool (conf, name, val);
 
47
    }
 
48
 
 
49
    *var = val;
 
50
 
 
51
    return 0;
 
52
}
25
53
 
26
54
static long
27
55
params_init_long (gu_config_t* conf, const char* const name,
35
63
    if (rc < 0) {
36
64
        /* Cannot parse parameter value */
37
65
        gu_error ("Bad %s value", name);
38
 
        return -EINVAL;
 
66
        return rc;
39
67
    }
40
68
    else if (rc > 0) {
41
69
        /* Parameter value not set, use default */
73
101
    if (rc < 0) {
74
102
        /* Cannot parse parameter value */
75
103
        gu_error ("Bad %s value", name);
76
 
        return -EINVAL;
 
104
        return rc;
77
105
    }
78
106
    else if (rc > 0) {
79
107
        /* Parameter value not set, use default */
106
134
    if (rc < 0) {
107
135
        /* Cannot parse parameter value */
108
136
        gu_error ("Bad %s value", name);
109
 
        return -EINVAL;
 
137
        return rc;
110
138
    }
111
139
    else if (rc > 0) {
112
140
        /* Parameter value not set, use default */
136
164
                                 GCS_PARAMS_DEFAULT_FC_LIMIT, 0, LONG_MAX,
137
165
                                 &params->fc_base_limit))) return ret;
138
166
 
 
167
    if ((ret = params_init_long (config, GCS_PARAMS_FC_DEBUG,
 
168
                                 GCS_PARAMS_DEFAULT_FC_DEBUG, 0, LONG_MAX,
 
169
                                 &params->fc_debug))) return ret;
 
170
 
139
171
    if ((ret = params_init_long (config, GCS_PARAMS_MAX_PKT_SIZE,
140
172
                                 GCS_PARAMS_DEFAULT_MAX_PKT_SIZE,0,LONG_MAX,
141
173
                                 &params->max_packet_size))) return ret;
160
192
                                  &tmp))) return ret;
161
193
    params->recv_q_hard_limit = tmp * 0.9; // allow for some meta overhead
162
194
 
 
195
    if ((ret = params_init_bool (config, GCS_PARAMS_FC_MASTER_SLAVE,
 
196
                                 GCS_PARAMS_DEFAULT_FC_MASTER_SLAVE,
 
197
                                 &params->fc_master_slave))) return ret;
163
198
    return 0;
164
199
}