statsrb 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/statsrb/statsrb.c +54 -7
- data/lib/statsrb.rb +0 -32
- metadata +1 -1
data/ext/statsrb/statsrb.c
CHANGED
@@ -4,7 +4,13 @@
|
|
4
4
|
#include <stdlib.h>
|
5
5
|
|
6
6
|
/**
|
7
|
-
*
|
7
|
+
* Locates data from a specified file and loads into @data.
|
8
|
+
* @param filepath [String]
|
9
|
+
* @param namespace [String]
|
10
|
+
* @param limit [Number]
|
11
|
+
* @param start_time [Number]
|
12
|
+
* @param end_time [Number]
|
13
|
+
* @return [Statsrb] A reference to the object.
|
8
14
|
*/
|
9
15
|
static VALUE statsrb_query(VALUE self, VALUE logfile, VALUE query_ns, VALUE query_limit, VALUE query_start, VALUE query_end) {
|
10
16
|
FILE * file;
|
@@ -120,7 +126,8 @@ void time_sort(int left, int right, VALUE ary, VALUE statsrb_key_ts) {
|
|
120
126
|
}
|
121
127
|
|
122
128
|
/**
|
123
|
-
*
|
129
|
+
* Sorts @data using a quicksort algorithm based on the hash element's timestamp.
|
130
|
+
* @return [Hash] The sorted data
|
124
131
|
*/
|
125
132
|
static VALUE statsrb_sort(VALUE self) {
|
126
133
|
VALUE statsrb_data = rb_iv_get(self, "@data");
|
@@ -133,7 +140,10 @@ static VALUE statsrb_sort(VALUE self) {
|
|
133
140
|
}
|
134
141
|
|
135
142
|
/**
|
136
|
-
*
|
143
|
+
* Writes the @data in memory to a specified file.
|
144
|
+
* @param filepath [String]
|
145
|
+
* @param filemode [String]
|
146
|
+
* @return [Statsrb] A reference to the object.
|
137
147
|
*/
|
138
148
|
static VALUE statsrb_write(VALUE self, VALUE logfile, VALUE mode) {
|
139
149
|
FILE * file;
|
@@ -173,8 +183,14 @@ static VALUE statsrb_write(VALUE self, VALUE logfile, VALUE mode) {
|
|
173
183
|
}
|
174
184
|
|
175
185
|
/**
|
176
|
-
*
|
177
|
-
|
186
|
+
* Locates data from a specified file and loads into @data.
|
187
|
+
* @param filepath [String]
|
188
|
+
* @param namespace [String]
|
189
|
+
* @param limit [Number]
|
190
|
+
* @param start_time [Number]
|
191
|
+
* @param end_time [Number]
|
192
|
+
* @return [Statsrb] A reference to the object.
|
193
|
+
*/
|
178
194
|
static VALUE statsrb_split_write(VALUE self, VALUE logdir, VALUE mode) {
|
179
195
|
VALUE statsrb_data = rb_iv_get(self, "@data");
|
180
196
|
int len = RARRAY_LEN(statsrb_data);
|
@@ -248,8 +264,9 @@ static VALUE statsrb_parse_qs(char *qs) {
|
|
248
264
|
}
|
249
265
|
|
250
266
|
/**
|
251
|
-
*
|
252
|
-
|
267
|
+
* Returns a rack-compatible response.
|
268
|
+
* @param env [Hash]
|
269
|
+
*/
|
253
270
|
static VALUE statsrb_rack_call(VALUE self, VALUE env) {
|
254
271
|
VALUE response = rb_ary_new();
|
255
272
|
VALUE headers = rb_hash_new();
|
@@ -410,6 +427,31 @@ static VALUE statsrb_rack_call(VALUE self, VALUE env) {
|
|
410
427
|
return response;
|
411
428
|
}
|
412
429
|
|
430
|
+
/**
|
431
|
+
* Pushes a stat onto the statsrb object.
|
432
|
+
* @param timestamp [Number]
|
433
|
+
* @param namespace [String]
|
434
|
+
* @param value [Number]
|
435
|
+
* @return [Statsrb] A reference to the object.
|
436
|
+
*/
|
437
|
+
static VALUE statsrb_push(VALUE self, VALUE timestamp, VALUE namespace, VALUE value) {
|
438
|
+
VALUE statsrb_data = rb_iv_get(self, "@data");
|
439
|
+
VALUE statsrb_event = rb_hash_new();
|
440
|
+
|
441
|
+
// @data hash key symbols.
|
442
|
+
VALUE statsrb_key_ts = rb_iv_get(self, "@key_ts");
|
443
|
+
VALUE statsrb_key_ns = rb_iv_get(self, "@key_ns");
|
444
|
+
VALUE statsrb_key_v = rb_iv_get(self, "@key_v");
|
445
|
+
|
446
|
+
rb_hash_aset(statsrb_event, statsrb_key_ts, timestamp);
|
447
|
+
rb_hash_aset(statsrb_event, statsrb_key_ns, namespace);
|
448
|
+
rb_hash_aset(statsrb_event, statsrb_key_v, value);
|
449
|
+
|
450
|
+
rb_ary_push(statsrb_data, statsrb_event);
|
451
|
+
|
452
|
+
return self;
|
453
|
+
}
|
454
|
+
|
413
455
|
/**
|
414
456
|
* Class constructor, sets up an instance variable.
|
415
457
|
*/
|
@@ -434,6 +476,7 @@ static VALUE statsrb_constructor(VALUE self) {
|
|
434
476
|
* Init the Statsrb class.
|
435
477
|
*/
|
436
478
|
void Init_statsrb(void) {
|
479
|
+
// @author Kevin Hankens
|
437
480
|
VALUE klass = rb_define_class("Statsrb", rb_cObject);
|
438
481
|
|
439
482
|
// Instance methods and properties.
|
@@ -442,9 +485,13 @@ void Init_statsrb(void) {
|
|
442
485
|
rb_define_method(klass, "sort", statsrb_sort, 0);
|
443
486
|
rb_define_method(klass, "write", statsrb_write, 2);
|
444
487
|
rb_define_method(klass, "split_write", statsrb_split_write, 2);
|
488
|
+
rb_define_method(klass, "push", statsrb_push, 3);
|
445
489
|
rb_define_method(klass, "call", statsrb_rack_call, 1);
|
446
490
|
// Define :attr_accessor (read/write instance var)
|
447
491
|
// Note that this must correspond with a call to rb_iv_self() and it's string name must be @data.
|
492
|
+
// An array of hashes keyed with :ts(timestamp), :ns(namespace) and :v(value)
|
493
|
+
// e.g. [!{:ts => Time.now.to_i, :ns => "test", :v => 33}]
|
448
494
|
rb_define_attr(klass, "data", 1, 1);
|
495
|
+
// The file directory to write when splitting namespaces. @see #split_write
|
449
496
|
rb_define_attr(klass, "split_file_dir", 1, 1);
|
450
497
|
}
|
data/lib/statsrb.rb
CHANGED
@@ -2,36 +2,4 @@ require 'statsrb/statsrb'
|
|
2
2
|
|
3
3
|
# @author Kevin Hankens
|
4
4
|
class Statsrb
|
5
|
-
# [!{:ts => Time.now.to_i, :ns => "test", :v => 33}]
|
6
|
-
attr_accessor :data
|
7
|
-
|
8
|
-
# Writes the @data in memory to a specified file.
|
9
|
-
# @param filepath [String]
|
10
|
-
# @param filemode [String]
|
11
|
-
# @return Statsrb
|
12
|
-
def write filepath, filemode
|
13
|
-
end
|
14
|
-
|
15
|
-
# Splits namespaces in @data in memory to a separate files.
|
16
|
-
# @param filepath [String]
|
17
|
-
# @param filemode [String]
|
18
|
-
# @return Statsrb
|
19
|
-
def split_write filepath, filemode
|
20
|
-
end
|
21
|
-
|
22
|
-
# Locates data from a specified file and loads into @data.
|
23
|
-
# @param filepath [String]
|
24
|
-
# @param namespace [String]
|
25
|
-
# @param limit [Number]
|
26
|
-
# @param start_time [Number]
|
27
|
-
# @param end_time [Number]
|
28
|
-
# @return Statsrb
|
29
|
-
def query filepath, namespace, limit, start_time, end_time
|
30
|
-
end
|
31
|
-
|
32
|
-
# Returns a rack-compatable response.
|
33
|
-
# @param env [Hash]
|
34
|
-
def sort env
|
35
|
-
end
|
36
|
-
|
37
5
|
end
|