Module: RRD

Defined in:
ext/librrd/1.2/main.c,
ext/librrd/1.3/main.c,
ext/librrd/1.4/main.c

Class Method Summary collapse

Class Method Details

.create(args) ⇒ Object



88
89
90
91
# File 'ext/librrd/1.2/main.c', line 88

VALUE rb_rrd_create(VALUE self, VALUE args)
{
    return rrd_call(rrd_create, args);
}

.dump(args) ⇒ Object



93
94
95
96
# File 'ext/librrd/1.2/main.c', line 93

VALUE rb_rrd_dump(VALUE self, VALUE args)
{
    return rrd_call(rrd_dump, args);
}

.fetch(args) ⇒ Object

Other Calls



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'ext/librrd/1.2/main.c', line 98

VALUE rb_rrd_fetch(VALUE self, VALUE args)
{
    string_arr a;
    unsigned long i, j, k, step, ds_cnt;
    rrd_value_t *raw_data;
    char **raw_names;
    VALUE data, names, result;
    time_t start, end;

    a = string_arr_new(args);
    reset_rrd_state();
    rrd_fetch(a.len, a.strings, &start, &end, &step, &ds_cnt, &raw_names, &raw_data);
    string_arr_delete(a);

    RRD_CHECK_ERROR

    names = rb_ary_new();
    for (i = 0; i < ds_cnt; i++) {
        rb_ary_push(names, rb_str_new2(raw_names[i]));
        free(raw_names[i]);
    }
    free(raw_names);

    k = 0;
    data = rb_ary_new();
    for (i = start; i <= end; i += step) {
        VALUE line = rb_ary_new2(ds_cnt);
        for (j = 0; j < ds_cnt; j++) {
            rb_ary_store(line, j, rb_float_new(raw_data[k]));
            k++;
        }
        rb_ary_push(data, line);
    }
    free(raw_data);
   
    result = rb_ary_new2(4);
    rb_ary_store(result, 0, INT2NUM(start));
    rb_ary_store(result, 1, INT2NUM(end));
    rb_ary_store(result, 2, names);
    rb_ary_store(result, 3, data);
    return result;
}

.flushcached(args) ⇒ Object



147
148
149
150
151
152
# File 'ext/librrd/1.4/main.c', line 147

VALUE rb_rrd_flushcached(
    VALUE self,
    VALUE args)
{
    return rrd_call(rrd_flushcached, args);
}

.graph(args) ⇒ Object



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'ext/librrd/1.2/main.c', line 141

VALUE rb_rrd_graph(VALUE self, VALUE args)
{
    string_arr a;
    char **calcpr, **p;
    VALUE result, print_results;
    int xsize, ysize;
    double ymin, ymax;

    a = string_arr_new(args);
    reset_rrd_state();
    rrd_graph(a.len, a.strings, &calcpr, &xsize, &ysize, NULL, &ymin, &ymax);
    string_arr_delete(a);

    RRD_CHECK_ERROR

    result = rb_ary_new2(3);
    print_results = rb_ary_new();
    p = calcpr;
    for (p = calcpr; p && *p; p++) {
        rb_ary_push(print_results, rb_str_new2(*p));
        free(*p);
    }
    free(calcpr);
    rb_ary_store(result, 0, print_results);
    rb_ary_store(result, 1, INT2FIX(xsize));
    rb_ary_store(result, 2, INT2FIX(ysize));
    return result;
}

.graphv(args) ⇒ Object



202
203
204
205
206
207
# File 'ext/librrd/1.3/main.c', line 202

VALUE rb_rrd_graphv(
    VALUE self,
    VALUE args)
{
    return rb_rrd_infocall(rrd_graph_v, args);
}

.info(args) ⇒ Object



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'ext/librrd/1.2/main.c', line 170

VALUE rb_rrd_info(VALUE self, VALUE args)
{
    string_arr a;
    info_t *p, *data;
    VALUE result;

    a = string_arr_new(args);
    data = rrd_info(a.len, a.strings);
    string_arr_delete(a);

    RRD_CHECK_ERROR

    result = rb_hash_new();
    while (data) {
        VALUE key = rb_str_new2(data->key);
        switch (data->type) {
        case RD_I_VAL:
            if (isnan(data->value.u_val)) {
                rb_hash_aset(result, key, Qnil);
            }
            else {
                rb_hash_aset(result, key, rb_float_new(data->value.u_val));
            }
            break;
        case RD_I_CNT:
            rb_hash_aset(result, key, INT2FIX(data->value.u_cnt));
            break;
        case RD_I_STR:
            rb_hash_aset(result, key, rb_str_new2(data->value.u_str));
            free(data->value.u_str);
            break;
        }
        p = data;
        data = data->next;
        free(p);
    }
    return result;
}

.last(args) ⇒ Object



209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'ext/librrd/1.2/main.c', line 209

VALUE rb_rrd_last(VALUE self, VALUE args)
{
    string_arr a;
    time_t last;

    a = string_arr_new(args);
    reset_rrd_state();
    last = rrd_last(a.len, a.strings);
    string_arr_delete(a);

    RRD_CHECK_ERROR

    return rb_funcall(rb_cTime, rb_intern("at"), 1, INT2FIX(last));
}

.resize(args) ⇒ Object



224
225
226
227
# File 'ext/librrd/1.2/main.c', line 224

VALUE rb_rrd_resize(VALUE self, VALUE args)
{
    return rrd_call(rrd_resize, args);
}

.restore(args) ⇒ Object



229
230
231
232
# File 'ext/librrd/1.2/main.c', line 229

VALUE rb_rrd_restore(VALUE self, VALUE args)
{
    return rrd_call(rrd_restore, args);
}

.tune(args) ⇒ Object



234
235
236
237
# File 'ext/librrd/1.2/main.c', line 234

VALUE rb_rrd_tune(VALUE self, VALUE args)
{
    return rrd_call(rrd_tune, args);
}

.update(args) ⇒ Object



239
240
241
242
# File 'ext/librrd/1.2/main.c', line 239

VALUE rb_rrd_update(VALUE self, VALUE args)
{
    return rrd_call(rrd_update, args);
}

.updatev(args) ⇒ Object



195
196
197
198
199
200
# File 'ext/librrd/1.3/main.c', line 195

VALUE rb_rrd_updatev(
    VALUE self,
    VALUE args)
{
    return rb_rrd_infocall(rrd_update_v, args);
}

.xport(args) ⇒ Object



323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
# File 'ext/librrd/1.4/main.c', line 323

VALUE rb_rrd_xport(
    VALUE self,
    VALUE args)
{
    string_arr a;
    unsigned long i, j, k, step, col_cnt;
    int xxsize;
    rrd_value_t *data;
    char **legend_v;
    VALUE legend, result, rdata;
    time_t start, end;

    a = string_arr_new(args);
    reset_rrd_state();
    rrd_xport(a.len, a.strings, &xxsize, &start, &end, &step, &col_cnt, &legend_v, &data);
    string_arr_delete(a);

    RRD_CHECK_ERROR;
            
    legend = rb_ary_new();
    for (i = 0; i < col_cnt; i++) {
        rb_ary_push(legend, rb_str_new2(legend_v[i]));
        free(legend_v[i]);
    }
    free(legend_v);

    k = 0;
    rdata = rb_ary_new();
    for (i = start; i <= end; i += step) {
        VALUE line = rb_ary_new2(col_cnt);
        for (j = 0; j < col_cnt; j++) {
            rb_ary_store(line, j, rb_float_new(data[k]));
            k++;
        }
        rb_ary_push(rdata, line);
    }
    free(data);

    result = rb_ary_new2(6);
    rb_ary_store(result, 0, INT2FIX(start));
    rb_ary_store(result, 1, INT2FIX(end));
    rb_ary_store(result, 2, INT2FIX(step));
    rb_ary_store(result, 3, INT2FIX(col_cnt));
    rb_ary_store(result, 4, legend);
    rb_ary_store(result, 5, rdata);
    return result;
}