Sha256: 12e7a5af2b4d58ae9a0faa980fac0be4c0c3733624ac91756b170d6b610a82f9

Contents?: true

Size: 1.44 KB

Versions: 4

Compression:

Stored size: 1.44 KB

Contents

require 'libsql/sqlite3/constants'
module ::Libsql::SQLite3

  # 
  # 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+.
  #
  class Stat
    attr_reader :name
    attr_reader :code

    def initialize( name )
      @name      = name
      @code      = ::Libsql::SQLite3::Constants::Status.value_from_name( name )
      @current   = nil
      @highwater = nil
    end

    def current
      update!
      return @current
    end

    def highwater
      update!
      return @highwater
    end

    #
    # reset the given stat's highwater mark.  This will also populate the
    # _@current_ and _@highwater_ instance variables
    #
    def reset!
      update!( true )
    end
  end

  #
  # Top level Status object holding all the Stat objects indicating the Status
  # of the SQLite3 C library.
  #
  class Status
    ::Libsql::SQLite3::Constants::Status.constants.each do |const_name|
      method_name = const_name.downcase
      module_eval( <<-code, __FILE__, __LINE__ )
        def #{method_name}
          @#{method_name} ||=  ::Libsql::SQLite3::Stat.new( '#{method_name}' )   
        end
      code
    end
  end

  # return the status object for the sqlite database
  def self.status
    @status ||= Status.new
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
libsql-0.1.0-x64-mingw-ucrt lib/libsql/sqlite3/status.rb
libsql-0.1.0-x64-mingw32 lib/libsql/sqlite3/status.rb
libsql-0.1.0-x86-mingw32 lib/libsql/sqlite3/status.rb
libsql-0.1.0 lib/libsql/sqlite3/status.rb