add locks to config and storage

This commit is contained in:
ThomasV 2013-09-29 18:33:54 +02:00
parent 44edb4e2bb
commit e82653f454
2 changed files with 19 additions and 18 deletions

View File

@ -1,12 +1,10 @@
import json, ast
import os, ast
import json
import ast
import threading
import os
from util import user_dir, print_error
from version import ELECTRUM_VERSION, SEED_VERSION
class SimpleConfig:
@ -17,6 +15,7 @@ user configurations from electrum.conf into separate dictionaries within
a SimpleConfig instance then reads the wallet file.
"""
def __init__(self, options={}):
self.lock = threading.Lock()
# system conf, readonly
self.system_config = {}
@ -65,8 +64,11 @@ a SimpleConfig instance then reads the wallet file.
print "Warning: not changing '%s' because it was set in the system configuration"%key
else:
self.user_config[key] = value
if save: self.save_user_config()
with self.lock:
self.user_config[key] = value
if save:
self.save_user_config()

View File

@ -68,6 +68,7 @@ from version import ELECTRUM_VERSION, SEED_VERSION
class WalletStorage:
def __init__(self, config):
self.lock = threading.Lock()
self.data = {}
self.file_exists = False
self.init_path(config)
@ -110,15 +111,13 @@ class WalletStorage:
def put(self, key, value, save = True):
if self.data.get(key) is not None:
self.data[key] = value
else:
# add key to wallet config
self.data[key] = value
if save:
self.write()
with self.lock:
if value is not None:
self.data[key] = value
else:
self.data.pop[key]
if save:
self.write()
def write(self):
s = repr(self.data)