class Canals::Session
Constants
- BASIC_FIELDS
Public Class Methods
new()
click to toggle source
# File lib/canals/session.rb, line 13 def initialize @session = load_session(session_file) end
Public Instance Methods
add(session, save=true)
click to toggle source
# File lib/canals/session.rb, line 31 def add(session, save=true) @session.push(session) save! if save end
alive?(session_id)
click to toggle source
# File lib/canals/session.rb, line 62 def alive?(session_id) sess = get(session_id) File.exist?(sess[:socket]) end
del(name, save=true)
click to toggle source
# File lib/canals/session.rb, line 36 def del(name, save=true) @session.delete_if{ |s| s[:name] == name } save! if save end
each(&block)
click to toggle source
# File lib/canals/session.rb, line 19 def each(&block) @session.each(&block) end
each_obj(&block)
click to toggle source
# File lib/canals/session.rb, line 23 def each_obj(&block) @session.map{|sess| CanalOptions.new(fill_from_repository(sess))}.each(&block) end
empty?()
click to toggle source
# File lib/canals/session.rb, line 27 def empty? @session.empty? end
get(session_id)
click to toggle source
# File lib/canals/session.rb, line 41 def get(session_id) sess = nil case session_id when Numeric sess = @session.find{ |s| s[:pid] == session_id } when String sess = @session.find{ |s| s[:name] == session_id } end fill_from_repository(sess) if sess end
get_obj(session_id)
click to toggle source
# File lib/canals/session.rb, line 52 def get_obj(session_id) sess = get(session_id) return nil if sess.nil? CanalOptions.new(sess) end
has?(session_id)
click to toggle source
# File lib/canals/session.rb, line 58 def has?(session_id) get(session_id) != nil end
save!()
click to toggle source
# File lib/canals/session.rb, line 67 def save! FileUtils.mkdir_p(session_file.dirname) Canals::Tools::YAML.dump_file(session_file, @session) end
Private Instance Methods
basic?(sess)
click to toggle source
# File lib/canals/session.rb, line 85 def basic?(sess) (sess.keys - BASIC_FIELDS).empty? end
fill_from_repository(sess)
click to toggle source
# File lib/canals/session.rb, line 89 def fill_from_repository(sess) if (basic?(sess) && Canals.repository.has?(sess[:name])) Canals.repository.get(sess[:name]).to_hash.merge(sess) else sess end end
load_session(_session_file)
click to toggle source
# File lib/canals/session.rb, line 79 def load_session(_session_file) valid_file = _session_file && _session_file.exist? && !_session_file.size.zero? return [] if !valid_file Canals::Tools::YAML.load_file(_session_file) end
session_file()
click to toggle source
# File lib/canals/session.rb, line 74 def session_file file = File.join(Dir.home, '.canals/session') Pathname.new(file) end