Sha256: 6d2da27386b61cbc2b722e09820543f964545f5c7daafc874937e6b7604bf6be

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

module Iowa

	class ApplicationStats

		def initialize(session_cache)
			@creation_time = Time.now
			@total_hits = 0
			@rolling_interval = 60
			@rolling_log = []
			@session_cache = session_cache
		end

		def creation_time
			@creation_time
		end

		def uptime
			Time.now.to_i - creation_time.to_i
		end

		def hits
			@total_hits
		end

		def hits_per_second
			@total_hits > 0 ? (hits.to_f / uptime.to_f) : nil
		end

		def sessions_maxsize
			@session_cache.maxsize
		end

		def sessions_size
			@session_cache.size
		end

		def sessions_queue
			@session_cache.queue
		end

		def session(k)
			!@session_cache[k].nil? ? @session_cache[k].dup : nil
		end

		def rolling_interval
			@rolling_interval
		end

		def rolling_interval=(i)
			@rolling_interval = i
		end

		def rolling_hits_total
			@rolling_log.length
		end

		def rolling_hits_per_second
			(rolling_hits_total.to_f / rolling_interval.to_f)
		end

		def hit
			@total_hits += 1
			n = Time.now.to_i
			@rolling_log.push n

			while (@rolling_log[0] < (n - @rolling_interval) and @rolling_log.length > 0)
				@rolling_log.shift
			end
		end

	end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
IOWA-1.0.3 src/iowa/ApplicationStats.rb
IOWA-1.0.2 src/iowa/ApplicationStats.rb
IOWA-1.0.0 src/iowa/ApplicationStats.rb