Class: Gnista::Logreader
- Inherits:
-
Object
- Object
- Gnista::Logreader
- Includes:
- Enumerable
- Defined in:
- lib/gnista.rb,
ext/gnista/gnista.c
Instance Attribute Summary collapse
-
#logpath ⇒ Object
readonly
Returns the value of attribute logpath.
Instance Method Summary collapse
- #close ⇒ Object (also: #close!)
- #each ⇒ Object
- #initialize(filename) ⇒ Object constructor
- #inspect ⇒ Object
- #maxkeylen ⇒ Object
- #maxvaluelen ⇒ Object
- #open? ⇒ Boolean
Constructor Details
#initialize(filename) ⇒ Object
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'ext/gnista/gnista.c', line 199
static VALUE method_logreader_initialize(VALUE self, VALUE filename) {
sparkey_returncode returncode;
instance_logreader *i_logreader = get_logreader(self);
Check_Type(filename, T_STRING);
returncode = sparkey_logreader_open(&i_logreader->logreader, RSTRING_PTR(filename));
if (returncode != SPARKEY_SUCCESS) {
raise_sparkey(returncode);
} else {
i_logreader->open = true;
rb_iv_set(self, "@logpath", filename);
}
return self;
}
|
Instance Attribute Details
#logpath ⇒ Object (readonly)
Returns the value of attribute logpath.
25 26 27 |
# File 'lib/gnista.rb', line 25 def logpath @logpath end |
Instance Method Details
#close ⇒ Object Also known as: close!
216 217 218 219 220 221 222 223 |
# File 'ext/gnista/gnista.c', line 216
static VALUE method_logreader_close(VALUE self) {
instance_logreader *i_logreader = get_logreader(self);
check_open(i_logreader->open);
sparkey_logreader_close(&i_logreader->logreader);
i_logreader->open = false;
return Qnil;
}
|
#each ⇒ Object
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 |
# File 'ext/gnista/gnista.c', line 225
static VALUE method_logreader_each(VALUE self) {
sparkey_returncode returncode;
sparkey_logiter *logiter;
instance_logreader *i_logreader = get_logreader(self);
check_open(i_logreader->open);
if (!rb_block_given_p()) {
return rb_funcall(self, rb_intern("to_enum"), 0);
}
returncode = sparkey_logiter_create(&logiter, i_logreader->logreader);
if (returncode != SPARKEY_SUCCESS) {
raise_sparkey(returncode);
}
VALUE put_sym = ID2SYM(rb_intern("put"));
VALUE del_sym = ID2SYM(rb_intern("delete"));
uint8_t *keybuf = malloc(sparkey_logreader_maxkeylen(i_logreader->logreader));
uint8_t *valuebuf = malloc(sparkey_logreader_maxvaluelen(i_logreader->logreader));
while (i_logreader->open) {
returncode = sparkey_logiter_next(logiter, i_logreader->logreader);
if (sparkey_logiter_state(logiter) != SPARKEY_ITER_ACTIVE) {
break;
}
uint64_t wanted_keylen = sparkey_logiter_keylen(logiter);
uint64_t actual_keylen;
returncode = sparkey_logiter_fill_key(logiter, i_logreader->logreader, wanted_keylen, keybuf, &actual_keylen);
if (returncode != SPARKEY_SUCCESS) {
free(keybuf);
free(valuebuf);
raise_sparkey(returncode);
} else if (wanted_keylen != actual_keylen) {
free(keybuf);
free(valuebuf);
rb_raise(GnistaException, "Corrupted read in logreader.");
}
if (sparkey_logiter_type(logiter) == SPARKEY_ENTRY_PUT) {
uint64_t wanted_valuelen = sparkey_logiter_valuelen(logiter);
uint64_t actual_valuelen;
returncode = sparkey_logiter_fill_value(logiter, i_logreader->logreader, wanted_valuelen, valuebuf, &actual_valuelen);
if (returncode != SPARKEY_SUCCESS) {
free(keybuf);
free(valuebuf);
raise_sparkey(returncode);
} else if (wanted_valuelen != actual_valuelen) {
free(keybuf);
free(valuebuf);
rb_raise(GnistaException, "Corrupted read in logreader.");
}
rb_yield_values(3, rb_str_new((char *)keybuf, actual_keylen), rb_str_new((char *)valuebuf, actual_valuelen), put_sym);
} else {
rb_yield_values(3, rb_str_new((char *)keybuf, actual_keylen), Qnil, del_sym);
}
}
free(keybuf);
free(valuebuf);
sparkey_logiter_close(&logiter);
check_open(i_logreader->open);
return self;
}
|
#inspect ⇒ Object
27 28 29 |
# File 'lib/gnista.rb', line 27 def inspect %(#<#{self.class} #{@logpath.inspect}>) end |
#maxkeylen ⇒ Object
306 307 308 309 310 311 312 313 314 |
# File 'ext/gnista/gnista.c', line 306
static VALUE method_logreader_maxkeylen(VALUE self) {
instance_logreader *i_logreader = get_logreader(self);
uint64_t maxkeylen;
check_open(i_logreader->open);
maxkeylen = sparkey_logreader_maxkeylen(i_logreader->logreader);
return INT2NUM(maxkeylen);
}
|
#maxvaluelen ⇒ Object
316 317 318 319 320 321 322 323 324 |
# File 'ext/gnista/gnista.c', line 316
static VALUE method_logreader_maxvaluelen(VALUE self) {
instance_logreader *i_logreader = get_logreader(self);
uint64_t maxvaluelen;
check_open(i_logreader->open);
maxvaluelen = sparkey_logreader_maxvaluelen(i_logreader->logreader);
return INT2NUM(maxvaluelen);
}
|
#open? ⇒ Boolean
296 297 298 299 300 301 302 303 304 |
# File 'ext/gnista/gnista.c', line 296
static VALUE method_logreader_open(VALUE self) {
instance_logreader *i_logreader = get_logreader(self);
if (i_logreader->open) {
return Qtrue;
} else {
return Qfalse;
}
}
|