# File lib/sqlite3/driver/native/driver.rb, line 18 def busy_handler( db, data=nil, &block ) if block cb = API::CallbackData.new cb.proc = block cb.data = data result = API.sqlite3_busy_handler( db, API::Sqlite3_ruby_busy_handler, cb ) # Reference the Callback object so that # it is not deleted by the GC @busy_handler[db] = cb else # Unreference the callback *after* having removed it # from sqlite result = API.sqlite3_busy_handler( db, nil, nil ) @busy_handler.delete(db) end result end