lib/http/cookie_jar/abstract_store.rb in http-cookie-1.0.0.pre6 vs lib/http/cookie_jar/abstract_store.rb in http-cookie-1.0.0.pre7

- old
+ new

@@ -1,6 +1,10 @@ +require 'monitor' + class HTTP::CookieJar::AbstractStore + include MonitorMixin + class << self @@class_map = {} # Gets an implementation class by the name, optionally trying to # load "http/cookie_jar/*_store" if not found. If loading fails, @@ -29,10 +33,11 @@ {} end private :default_options def initialize(options = nil) + super() # MonitorMixin options ||= {} @logger = options[:logger] # Initializes each instance variable of the same name as option # keyword. default_options.each_pair { |key, default| @@ -48,21 +53,32 @@ def add(cookie) raise self end + def delete(cookie) + raise + self + end + # Iterates over all cookies that are not expired. # # An optional argument +uri+ specifies a URI object indicating the # destination of the cookies being selected. Every cookie yielded # should be good to send to the given URI, # i.e. cookie.valid_for_uri?(uri) evaluates to true. # # If (and only if) the +uri+ option is given, last access time of # each cookie is updated to the current time. def each(uri = nil, &block) - raise + if uri + raise + else + synchronize { + raise + } + end self end include Enumerable def empty? @@ -78,10 +94,10 @@ if session select { |cookie| cookie.session? || cookie.expired? } else select(&:expired?) end.each { |cookie| - add(cookie.expire) + delete(cookie) } # subclasses can optionally remove over-the-limit cookies. self end end