Class: Canals::Session

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/canals/session.rb

Instance Method Summary collapse

Constructor Details

#initializeSession

Returns a new instance of Session.



10
11
12
# File 'lib/canals/session.rb', line 10

def initialize
  @session = load_session(session_file)
end

Instance Method Details

#add(session, save = true) ⇒ Object



24
25
26
27
# File 'lib/canals/session.rb', line 24

def add(session, save=true)
  @session.push(session)
  save! if save
end

#alive?(session_id) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
46
# File 'lib/canals/session.rb', line 43

def alive?(session_id)
  sess = get(session_id)
  File.exist?(sess[:socket])
end

#del(name, save = true) ⇒ Object



29
30
31
32
# File 'lib/canals/session.rb', line 29

def del(name, save=true)
  @session.delete_if{ |s| s[:name] == name }
  save! if save
end

#each(&block) ⇒ Object



16
17
18
# File 'lib/canals/session.rb', line 16

def each(&block)
  @session.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/canals/session.rb', line 20

def empty?
  @session.empty?
end

#get(session_id) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/canals/session.rb', line 34

def get(session_id)
  case session_id
  when Numeric
    @session.find{ |s| s[:pid] == session_id }
  when String
    @session.find{ |s| s[:name] == session_id }
  end
end

#save!Object



48
49
50
51
52
53
# File 'lib/canals/session.rb', line 48

def save!
  FileUtils.mkdir_p(session_file.dirname)
  File.open(session_file, 'w') do |file|
    file.write(Psych.dump(@session))
  end
end