Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorDan Winship <dwinship@redhat.com>2007-08-15 13:19:40 (GMT)
committer Dan Winship <dwinship@redhat.com>2007-08-15 13:19:40 (GMT)
commit26c5ad6ad05d5d1eba9bfefb092ad2245caa5a94 (patch)
treedb6a6f6775fa6fdebab637c587609c0a7934ff0e /sugar
parentc54fb84b28cca54c7d0cb0355b7a21f3cbabfc4d (diff)
Rewrite dbus_helpers to not make a dbus connection on import. #2773
Diffstat (limited to 'sugar')
-rw-r--r--sugar/datastore/dbus_helpers.py38
1 files changed, 23 insertions, 15 deletions
diff --git a/sugar/datastore/dbus_helpers.py b/sugar/datastore/dbus_helpers.py
index f0cfa3b..442a35d 100644
--- a/sugar/datastore/dbus_helpers.py
+++ b/sugar/datastore/dbus_helpers.py
@@ -28,55 +28,63 @@ DS_DBUS_SERVICE = "org.laptop.sugar.DataStore"
DS_DBUS_INTERFACE = "org.laptop.sugar.DataStore"
DS_DBUS_PATH = "/org/laptop/sugar/DataStore"
-_bus = dbus.SessionBus()
-_data_store = dbus.Interface(_bus.get_object(DS_DBUS_SERVICE, DS_DBUS_PATH),
- DS_DBUS_INTERFACE)
+_data_store = None
+
+def _get_data_store():
+ global _data_store
+
+ if not _data_store:
+ _bus = dbus.SessionBus()
+ _data_store = dbus.Interface(_bus.get_object(DS_DBUS_SERVICE,
+ DS_DBUS_PATH),
+ DS_DBUS_INTERFACE)
+ return _data_store
def create(properties, filename):
- object_id = _data_store.create(dbus.Dictionary(properties), filename)
+ object_id = _get_data_store().create(dbus.Dictionary(properties), filename)
logging.debug('dbus_helpers.create: ' + object_id)
return object_id
def update(uid, properties, filename, reply_handler=None, error_handler=None, timeout=-1):
logging.debug('dbus_helpers.update: %s, %s, %s' % (uid, filename, properties))
if reply_handler and error_handler:
- _data_store.update(uid, dbus.Dictionary(properties), filename,
+ _get_data_store().update(uid, dbus.Dictionary(properties), filename,
reply_handler=reply_handler,
error_handler=error_handler,
timeout=timeout)
else:
- _data_store.update(uid, dbus.Dictionary(properties), filename)
+ _get_data_store().update(uid, dbus.Dictionary(properties), filename)
def delete(uid):
logging.debug('dbus_helpers.delete: %r' % uid)
- _data_store.delete(uid)
+ _get_data_store().delete(uid)
def get_properties(uid):
logging.debug('dbus_helpers.get_properties: %s' % uid)
- return _data_store.get_properties(uid)
+ return _get_data_store().get_properties(uid)
def get_filename(uid):
- filename = _data_store.get_filename(uid)
+ filename = _get_data_store().get_filename(uid)
logging.debug('dbus_helpers.get_filename: %s, %s' % (uid, filename))
return filename
def find(query, reply_handler, error_handler):
logging.debug('dbus_helpers.find: %r' % query)
if reply_handler and error_handler:
- return _data_store.find(query, reply_handler=reply_handler,
+ return _get_data_store().find(query, reply_handler=reply_handler,
error_handler=error_handler)
else:
- return _data_store.find(query)
+ return _get_data_store().find(query)
def mount(uri, options):
- return _data_store.mount(uri, options)
+ return _get_data_store().mount(uri, options)
def unmount(mount_point_id):
- _data_store.unmount(mount_point_id)
+ _get_data_store().unmount(mount_point_id)
def mounts():
- return _data_store.mounts()
+ return _get_data_store().mounts()
def get_unique_values(key):
- return _data_store.get_uniquevaluesfor(key, dbus.Dictionary({}, signature='ss'))
+ return _get_data_store().get_uniquevaluesfor(key, dbus.Dictionary({}, signature='ss'))