Class: MutexSocketList

Inherits:
Object show all
Defined in:
lib/dango/mutex_socket_list.rb

Overview

ソケット毎用のmutex

Instance Method Summary collapse

Constructor Details

#initializeMutexSocketList

Returns a new instance of MutexSocketList.



5
6
7
# File 'lib/dango/mutex_socket_list.rb', line 5

def initialize()
  @msl_hash = Hash.new
end

Instance Method Details

#add(key) ⇒ Object



17
18
19
# File 'lib/dango/mutex_socket_list.rb', line 17

def add(key)
  @msl_hash[key] = Mutex.new
end

#delete(key) ⇒ Object



13
14
15
# File 'lib/dango/mutex_socket_list.rb', line 13

def delete(key)
  @msl_hash.delete(key)
end

#keysObject



9
10
11
# File 'lib/dango/mutex_socket_list.rb', line 9

def keys()
  @msl_hash.keys
end

#synchronize(key) ⇒ Object

def [](key)

  raise("not exist key(#{key})") if ! @msl_hash.has_key?(key) 
  add(key) if @msl_hash.has_key?(key) 
  @msl_hash[key]
end


27
28
29
30
31
32
33
34
# File 'lib/dango/mutex_socket_list.rb', line 27

def synchronize(key)
  raise("not exist key(#{key})") if ! @msl_hash.has_key?(key) 
  ret = nil
  @msl_hash[key].synchronize do
    ret = yield
  end
  ret
end