Ticket #1681: 0001-sugar.datastore.datastore-replace-naive-listeners-wi.patch

File 0001-sugar.datastore.datastore-replace-naive-listeners-wi.patch, 3.4 KB (added by sascha_silbe, 14 years ago)

sugar.datastore.datastore: replace naive listeners with sugar.dispatch.DbusSignal instances

  • src/sugar/datastore/datastore.py

    From 502b4a86d21dcf6dc2e3b02b0244e11bed504527 Mon Sep 17 00:00:00 2001
    From: Sascha Silbe <sascha@silbe.org>
    Date: Sun, 24 Jan 2010 19:36:04 +0000
    Subject: [PATCH] sugar.datastore.datastore: replace naive listeners with sugar.dispatch.DbusSignal instances
    
    ---
     src/sugar/datastore/datastore.py |   55 +++++++++++++++++++++++++++-----------
     1 files changed, 39 insertions(+), 16 deletions(-)
    
    diff --git a/src/sugar/datastore/datastore.py b/src/sugar/datastore/datastore.py
    index 66e29ed..0320cb6 100644
    a b DS_DBUS_INTERFACE = "org.laptop.sugar.DataStore" 
    4040DS_DBUS_PATH = "/org/laptop/sugar/DataStore"
    4141
    4242_data_store = None
    43 _data_store_listener = None
    4443
    4544
    4645def _get_data_store():
    def _get_data_store(): 
    5150        _data_store = dbus.Interface(_bus.get_object(DS_DBUS_SERVICE,
    5251                                                     DS_DBUS_PATH),
    5352                                     DS_DBUS_INTERFACE)
    54         _data_store.connect_to_signal('Created', __datastore_created_cb)
    55         _data_store.connect_to_signal('Deleted', __datastore_deleted_cb)
    56         _data_store.connect_to_signal('Updated', __datastore_updated_cb)
    5753
    5854    return _data_store
    5955
    6056
    61 def __datastore_created_cb(object_id):
    62     metadata = _get_data_store().get_properties(object_id, byte_arrays=True)
    63     updated.send(None, object_id=object_id, metadata=metadata)
     57class DataStoreSignal(dispatch.DbusSignal):
    6458
     59    def __init__(self, signal_name, signal_args):
     60        dispatch.DbusSignal.__init__(self, signal_name, signal_args,
     61            bus=dbus.SessionBus(), iface_name=DS_DBUS_INTERFACE,
     62            service_name=DS_DBUS_SERVICE, path=DS_DBUS_PATH)
     63
     64
     65class CreatedSignal(DataStoreSignal):
     66
     67    def __init__(self):
     68        DataStoreSignal.__init__(self, 'Created', ['metadata', 'object_id'])
     69
     70    def _relay(self, object_id):
     71        # pylint: disable-msg=W0221
     72        metadata = _get_data_store().get_properties(object_id,
     73            byte_arrays=True)
     74        self.send(None, metadata=metadata, object_id=object_id)
    6575
    66 def __datastore_updated_cb(object_id):
    67     metadata = _get_data_store().get_properties(object_id, byte_arrays=True)
    68     updated.send(None, object_id=object_id, metadata=metadata)
    6976
     77class UpdatedSignal(DataStoreSignal):
    7078
    71 def __datastore_deleted_cb(object_id):
    72     deleted.send(None, object_id=object_id)
     79    def __init__(self):
     80        DataStoreSignal.__init__(self, 'Updated', ['metadata', 'object_id'])
    7381
    74 created = dispatch.Signal()
    75 deleted = dispatch.Signal()
    76 updated = dispatch.Signal()
     82    def _relay(self, object_id):
     83        # pylint: disable-msg=W0221
     84        metadata = _get_data_store().get_properties(object_id,
     85            byte_arrays=True)
     86        self.send(None, metadata=metadata, object_id=object_id)
    7787
    78 _get_data_store()
     88
     89class DeletedSignal(DataStoreSignal):
     90
     91    def __init__(self):
     92        DataStoreSignal.__init__(self, 'Deleted', ['object_id'])
     93
     94    def _relay(self, object_id):
     95        # pylint: disable-msg=W0221
     96        self.send(None, object_id=object_id)
    7997
    8098
    8199class DSMetadata(gobject.GObject):
    def get_unique_values(key): 
    518536    """
    519537    return _get_data_store().get_uniquevaluesfor(
    520538                                key, dbus.Dictionary({}, signature='ss'))
     539
     540
     541created = CreatedSignal()
     542updated = UpdatedSignal()
     543deleted = DeletedSignal()