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