Method: Ccp::Kvs::Tokyo::StateMachine#open

Defined in:
lib/ccp/kvs/tokyo/state_machine.rb

#open(mode, locker = nil) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/ccp/kvs/tokyo/state_machine.rb', line 37

def open(mode, locker = nil)
  Pathname(@source.to_s).parent.mkpath

  # open and mark filename for threading error
  if @db.open(@source.to_s, mode)
    locker ||= (caller rescue "???")
    STDERR.puts "LOCK: #{@source} by [#{LOCKED_BY[locker]}]" if @debug
    CONNECTIONS[@db.path.to_s] = locker
  elsif threading_error?
    raise Tokyo::Locked, "%s is locked by [%s]" % [@source, locker_info]
  else
    tokyo_error!("%s#open(%s,%s): " % [self.class, @source, mode])
  end
end