# Copyright (C) 2003, 2004 Gregoire Lejeune <gregoire.lejeune@free.fr>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA

module Asp
  class Application
    require 'asp/common'
    require 'pstore'
    
    public
    def [](key)
      rcod = nil
      
      if @appDB.nil? == false
        @appDB.transaction { 
          begin
            rcod = @appDB[key]
          rescue PStore::Error
            rcod = nil
          end
        }
      end
    
      return rcod
    end
    
    def []=(key, val)
      rcod = nil
      
      if @appDB.nil? == false
        @appDB.transaction { 
          @appDB[key] = val
          @appDB.commit
          begin
            rcod = @appDB[key]
          rescue PStore::Error
            rcod = nil
          end
        }
      end
    
      return rcod
    end
    
    private 
    def initialize( r, oAspError, aspHandler )
      @appDB = nil
      @oAspHandler = aspHandler
      @oApacheRequest = r
      @oAspError = oAspError
      
      openAppDB( )
    end
  
    def openAppDB
      if @appDB.nil? == true 
        @appDBFile = Asp::Common::stateDir+"/"+Asp::Common::appID
#        secure = @appDBFile.taint
#        $SAFE=1
#        secure.untaint
        @appDB = PStore::new( @appDBFile.untaint )
      end
    end

  end
end
