18
16
self.hash = hashlib.sha256(data).hexdigest()
19
17
# TODO: Decide on using sha256 or sha1 (or even sha512)^
21
19
class StorageDB(libs.events.Handler):
22
20
'''An database type object to store and sort blocks.'''
23
21
def __init__(self):
28
26
def add_usk(self, block):
29
27
self.usks[block.hash] = block
31
29
def add_uuk(self, block):
32
30
self.uuks[block.hash] = block
34
32
def search(self, query):
35
33
if query.type == 'UUK':
36
34
if query.id in self.uuks:
38
36
elif query.type == 'USK':
39
37
if query.id in self.usks:
40
38
return self.usks[query.id]
42
40
def save(self, path):
43
41
'''Save the database from a storage file.'''
45
43
for block in self.uuks.values():
46
44
out_json[block.hash] = block.data
48
46
db_file = open(path, 'w') # TODO: possibly make a backup?
49
47
db_file.write(json.dumps(out_json, indent = 2))
52
libs.events.broadcast('logthis', 'Saved the data store.')
54
50
def load(self, path):
55
51
'''Load the database to a storage file.'''
56
52
db_file = open(path, 'r')
57
53
db_json = json.loads(db_file.read())
60
56
for block in db_json:
61
57
self.uuks[block] = db_json[block]
64
60
def got_message(self, packet):
65
61
message = packet.message
66
62
self.add_uuk(Block(message))
64
for block in self.uuks.values():
65
out_json[block.hash] = block.data
66
print(json.dumps(out_json, indent = 2))
68
67
def got_request(self, query):
74
70
class Query(object):
75
71
def __init__(self, blocktype, id):
76
72
self.type = blocktype
81
77
'''Create the storage database.'''
82
78
database = StorageDB()
83
database.path = libs.config['vomundir'] + 'blocks.json'
84
79
libs.events.register_handler(database)