Make datastore find & update operations async
This commit is contained in:
@@ -71,20 +71,22 @@ def get(object_id):
|
||||
def create():
|
||||
return DSObject(object_id=None, metadata={}, file_path=None)
|
||||
|
||||
def write(ds_object):
|
||||
def write(ds_object, reply_handler=None, error_handler=None):
|
||||
logging.debug('datastore.write')
|
||||
if ds_object.object_id:
|
||||
dbus_helpers.update(ds_object.object_id,
|
||||
ds_object.metadata,
|
||||
ds_object.file_path)
|
||||
ds_object.file_path,
|
||||
reply_handler=reply_handler,
|
||||
error_handler=error_handler)
|
||||
else:
|
||||
ds_object.object_id = dbus_helpers.create(ds_object.metadata,
|
||||
ds_object.file_path)
|
||||
# TODO: register the object for updates
|
||||
logging.debug('Written object %s to the datastore.' % ds_object.object_id)
|
||||
|
||||
def find(query):
|
||||
object_ids = dbus_helpers.find({})
|
||||
def find(query, reply_handler=None, error_handler=None):
|
||||
object_ids = dbus_helpers.find(query, reply_handler, error_handler)
|
||||
objects = []
|
||||
for object_id in object_ids:
|
||||
objects.append(get(object_id))
|
||||
|
||||
@@ -54,13 +54,18 @@ def create(properties, filename):
|
||||
logging.debug('dbus_helpers.create: ' + object_id)
|
||||
return object_id
|
||||
|
||||
def update(uid, properties, filename):
|
||||
def update(uid, properties, filename, reply_handler=None, error_handler=None):
|
||||
logging.debug('dbus_helpers.update: %s, %s, %s' % (uid, properties, filename))
|
||||
try:
|
||||
logging.debug(get_contents(filename))
|
||||
except UnicodeDecodeError:
|
||||
pass
|
||||
_data_store.update(uid, dbus.Dictionary(properties), filename)
|
||||
if reply_handler and error_handler:
|
||||
_data_store.update(uid, dbus.Dictionary(properties), filename,
|
||||
reply_handler=reply_handler,
|
||||
error_handler=error_handler)
|
||||
else:
|
||||
_data_store.update(uid, dbus.Dictionary(properties), filename)
|
||||
|
||||
def get_properties(uid):
|
||||
props = _data_store.get_properties(uid)
|
||||
@@ -76,8 +81,12 @@ def get_filename(uid):
|
||||
pass
|
||||
return filename
|
||||
|
||||
def find(query):
|
||||
return _data_store.find(query)
|
||||
def find(query, reply_handler, error_handler):
|
||||
if reply_handler and error_handler:
|
||||
return _data_store.find(query, reply_handler=reply_handler,
|
||||
error_handler=error_handler)
|
||||
else:
|
||||
return _data_store.find(query)
|
||||
"""
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user