Module: Wso2Toolbox::TokenManager::Adapters::LockFile
- Included in:
- LocalFileAdapter
- Defined in:
- lib/wso2_toolbox/token_manager/adapters/lock_file.rb
Constant Summary collapse
- FileLockedError =
Class.new(StandardError)
- ATTEMPTS =
5- TIME_INTERVAL =
1- FILE_PATH =
'tmp/localstorage.json'
Instance Method Summary collapse
Instance Method Details
#lock_file ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/wso2_toolbox/token_manager/adapters/lock_file.rb', line 25 def lock_file File.open(FILE_PATH, 'a+') do |file| lock_status = file.flock(File::LOCK_EX | File::LOCK_NB) if lock_status block_value = yield(file) file.flock(File::LOCK_UN) block_value end end end |
#with_free_localstorage ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/wso2_toolbox/token_manager/adapters/lock_file.rb', line 13 def with_free_localstorage ATTEMPTS.times do |i| locked_file = lock_file do |localstorage| yield(localstorage) end raise FileLockedError if !locked_file && i == (ATTEMPTS - 1) !locked_file ? sleep(TIME_INTERVAL) : break end end |