Sha256: 86c56107bf0c19dc154a089bec3273e7e394481aff3bee5791934da76b34ad0f

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 KB

Contents

# Copyright: Copyright (c) 2004  Nicolas Despres. All rights reserved.
# Author: Nicolas Despres  <polrop@lrde.epita.fr>.
# License: Gnu General Public License.

# $LastChangedBy: ertai $
# $Id: fetchable.rb 186 2005-04-03 00:07:45Z ertai $


module Session

  module Fetchable

    #
    # Sessions-oriented requests
    #
    protected
    def request_fetch(sid, profile, filename, mode='r', perm=0644, &block)
      f = nil
      ret = false
      exc = nil
      begin
        f = File.open(filename, mode, perm)
        f.flock(File::LOCK_EX)
        md5 = Digest::MD5.new
        case mode
        when 'a', 'w'
          while (str = block[])
            f.write(str)
            md5 << str
          end
          ret = (md5.to_s == block[].to_s)
        when 'r'
          until f.eof?
            str = f.read(1024)
            md5 << str
            block[str]
          end
          ret = (md5.to_s == block[nil].to_s)
        else
          raise(ArgumentError, "`#{mode}' - bad mode")
        end
      rescue Exception => exc
      ensure
        unless f.nil?
          f.flock(File::LOCK_UN)
          f.close
        end
        raise exc unless exc.nil?
        return ret
      end
    end

  end # module Fetchable

end # module Session


Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
ttk-0.1.576 ruby_ex/session/fetchable.rb
ttk-0.1.580 ruby_ex/session/fetchable.rb
ttk-0.1.579 ruby_ex/session/fetchable.rb
vcs-0.2.148 ruby_ex/session/fetchable.rb