Class: Amalgalite::SQLite3::Stat
- Inherits:
-
Object
- Object
- Amalgalite::SQLite3::Stat
- Defined in:
- lib/amalgalite/sqlite3/status.rb,
ext/amalgalite/c/amalgalite.c
Overview
A Stat represents a single Status code and its current highwater mark.
Some stats may not have a current or a highwater value, in those cases the associated has_current? or has_highwater? method returns false and the current or highwater method also returns nil
.
Instance Attribute Summary collapse
-
#code ⇒ Object
readonly
Returns the value of attribute code.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #current ⇒ Object
- #highwater ⇒ Object
-
#initialize(name) ⇒ Stat
constructor
A new instance of Stat.
-
#reset! ⇒ Object
reset the given stat’s highwater mark.
-
#Amalgalite::SQLite3::Stat.update!(reset = false) ⇒ nil
Populates the _@current_ and _@higwater_ instance variables of self object with the values from the sqlite3_status call.
Constructor Details
#initialize(name) ⇒ Stat
Returns a new instance of Stat.
15 16 17 18 19 20 |
# File 'lib/amalgalite/sqlite3/status.rb', line 15 def initialize( name ) @name = name @code = ::Amalgalite::SQLite3::Constants::Status.value_from_name( name ) @current = nil @highwater = nil end |
Instance Attribute Details
#code ⇒ Object (readonly)
Returns the value of attribute code.
13 14 15 |
# File 'lib/amalgalite/sqlite3/status.rb', line 13 def code @code end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
12 13 14 |
# File 'lib/amalgalite/sqlite3/status.rb', line 12 def name @name end |
Instance Method Details
#current ⇒ Object
22 23 24 25 |
# File 'lib/amalgalite/sqlite3/status.rb', line 22 def current update! return @current end |
#highwater ⇒ Object
27 28 29 30 |
# File 'lib/amalgalite/sqlite3/status.rb', line 27 def highwater update! return @highwater end |
#reset! ⇒ Object
reset the given stat’s highwater mark. This will also populate the _@current_ and _@highwater_ instance variables
36 37 38 |
# File 'lib/amalgalite/sqlite3/status.rb', line 36 def reset! update!( true ) end |
#Amalgalite::SQLite3::Stat.update!(reset = false) ⇒ nil
Populates the _@current_ and _@higwater_ instance variables of self object with the values from the sqlite3_status call. If reset it true then the highwater mark for the stat is reset
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'ext/amalgalite/c/amalgalite.c', line 164
VALUE am_sqlite3_stat_update_bang( int argc, VALUE *argv, VALUE self )
{
int status_op = -1;
int current = -1;
int highwater = -1;
VALUE reset = Qfalse;
int reset_flag = 0;
int rc;
status_op = FIX2INT( rb_iv_get( self, "@code" ) );
if ( argc > 0 ) {
reset = argv[0];
reset_flag = ( Qtrue == reset ) ? 1 : 0 ;
}
rc = sqlite3_status( status_op, ¤t, &highwater, reset_flag );
if ( SQLITE_OK != rc ) {
VALUE n = rb_iv_get( self, "@name" ) ;
char* name = StringValuePtr( n );
rb_raise(eAS_Error, "Failure to retrieve status for %s : [SQLITE_ERROR %d] \n", name, rc);
}
rb_iv_set( self, "@current", INT2NUM( current ) );
rb_iv_set( self, "@highwater", INT2NUM( highwater) );
return Qnil;
}
|