Class: Amalgalite::SQLite3::Stat

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#codeObject (readonly)

Returns the value of attribute code.



13
14
15
# File 'lib/amalgalite/sqlite3/status.rb', line 13

def code
  @code
end

#nameObject (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

#currentObject



22
23
24
25
# File 'lib/amalgalite/sqlite3/status.rb', line 22

def current
  update!
  return @current
end

#highwaterObject



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

Returns:

  • (nil)


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, &current, &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;
}