Class: Agoo::ErrorStream
- Inherits:
-
Object
- Object
- Agoo::ErrorStream
- Defined in:
- ext/agoo/error_stream.c,
ext/agoo/error_stream.c
Overview
Used in a reqquest as the rack.errors attribute. Writing to the stream and flushing will make an error log entry.
Instance Method Summary collapse
-
#close ⇒ Object
call-seq: close().
-
#flush ⇒ Object
call-seq: flush().
-
#puts(str) ⇒ Object
call-seq: puts(str).
-
#write(str) ⇒ Object
call-seq: write(str).
Instance Method Details
#close ⇒ Object
call-seq: close()
Closes the stream.
114 115 116 117 118 119 120 121 122 123 |
# File 'ext/agoo/error_stream.c', line 114
static VALUE
es_close(VALUE self) {
ErrorStream es = (ErrorStream)DATA_PTR(self);
es_flush(self);
DATA_PTR(self) = NULL;
es_free(es);
return self;
}
|
#flush ⇒ Object
call-seq: flush()
Flushs the accumulated text in the stream as an error log entry.
94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'ext/agoo/error_stream.c', line 94
static VALUE
es_flush(VALUE self) {
ErrorStream es = (ErrorStream)DATA_PTR(self);
if (NULL == es) {
rb_raise(rb_eIOError, "error stream has been closed.");
}
if (NULL != es->text) {
agoo_log_cat(&agoo_error_cat, "%s", es->text->text);
es->text->len = 0;
}
return self;
}
|
#puts(str) ⇒ Object
call-seq: puts(str)
Write the str to the stream along with a newline character, accumulating it until flush is called.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'ext/agoo/error_stream.c', line 45
static VALUE
es_puts(VALUE self, VALUE str) {
ErrorStream es = (ErrorStream)DATA_PTR(self);
if (NULL == es) {
rb_raise(rb_eIOError, "error stream has been closed.");
}
if (NULL == es->text &&
NULL == (es->text = agoo_text_allocate(1024))) {
rb_raise(rb_eNoMemError, "Failed to allocate memory for the error stream buffer.");
}
es->text = agoo_text_append(es->text, StringValuePtr(str), (int)RSTRING_LEN(str));
es->text = agoo_text_append(es->text, "\n", 1);
if (NULL == es->text) {
rb_raise(rb_eNoMemError, "Failed to allocate memory for the error stream puts.");
}
return Qnil;
}
|
#write(str) ⇒ Object
call-seq: write(str)
Write the str to the stream, accumulating it until flush is called.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'ext/agoo/error_stream.c', line 70
static VALUE
es_write(VALUE self, VALUE str) {
ErrorStream es = (ErrorStream)DATA_PTR(self);
int cnt = (int)RSTRING_LEN(str);
if (NULL == es) {
rb_raise(rb_eIOError, "error stream has been closed.");
}
if (NULL == es->text &&
NULL == (es->text = agoo_text_allocate(1024))) {
rb_raise(rb_eNoMemError, "Failed to allocate memory for the error stream buffer.");
}
if (NULL == (es->text = agoo_text_append(es->text, StringValuePtr(str), cnt))) {
rb_raise(rb_eNoMemError, "Failed to allocate memory for the error stream puts.");
}
return INT2NUM(cnt);
}
|