class Amalgalite::SQLite3::Database::Stat
Ecapuslate a SQLite3 Database stat
A Stat represents a single Database 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
.
Attributes
code[R]
name[R]
Public Class Methods
new( api_db, name )
click to toggle source
# File lib/amalgalite/sqlite3/database/status.rb, line 15 def initialize( api_db, name ) @name = name @code = ::Amalgalite::SQLite3::Constants::DBStatus.value_from_name( name ) @current = nil @highwater = nil @api_db = api_db end
Public Instance Methods
current()
click to toggle source
# File lib/amalgalite/sqlite3/database/status.rb, line 23 def current update! return @current end
highwater()
click to toggle source
# File lib/amalgalite/sqlite3/database/status.rb, line 28 def highwater update! return @highwater end
reset!()
click to toggle source
reset the given stat's highwater mark. This will also populate the _@current_ and _@highwater_ instance variables
# File lib/amalgalite/sqlite3/database/status.rb, line 37 def reset! update!( true ) end
update!( reset = false ) → nil
click to toggle source
Populates the _@current_ and _@higwater_ instance variables of the given Database Stat object with the values from the sqlite3_db_status call. If reset it true then the highwater mark for the stat is reset
VALUE am_sqlite3_database_stat_update_bang( int argc, VALUE *argv, VALUE self ) { int current = -1; int highwater = -1; int reset_flag = 0; int status_op = FIX2INT( rb_iv_get( self, "@code" ) ); int rc; am_sqlite3 *am_db; VALUE reset = Qfalse; VALUE db = rb_iv_get( self, "@api_db" ); Data_Get_Struct(db, am_sqlite3, am_db); if ( argc > 0 ) { reset = argv[0]; reset_flag = ( Qtrue == reset ) ? 1 : 0 ; } rc = sqlite3_db_status( am_db->db, 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 database 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; }