diff options
author | Sascha Silbe <sascha-pgp@silbe.org> | 2010-06-06 09:07:31 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha-pgp@silbe.org> | 2010-06-06 09:07:31 (GMT) |
commit | a7186d4ede605d9e4fe7158e1bb25d60f0c512cf (patch) | |
tree | 4ca446bf9780a1d738609cddee058de60e42087b | |
parent | 4c8c00702c4c52dd8a5161a60c226c92da004ab3 (diff) |
fix DBus timeouts (-1 is default, not infinite)
-rwxr-xr-x | datastore-fuse.py | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/datastore-fuse.py b/datastore-fuse.py index f1086d7..bd4bac8 100755 --- a/datastore-fuse.py +++ b/datastore-fuse.py @@ -47,6 +47,9 @@ DS_DBUS_PATH = "/org/laptop/sugar/DataStore" XATTR_CREATE = 1 XATTR_REPLACE = 2 +# DBus still has no way to indicate an infinite timeout :-/ +DBUS_TIMEOUT_MAX = 2**31 / 1000 + class DataStoreObjectStat(fuse.Stat): @@ -597,13 +600,13 @@ class DataStoreFS(fuse.Fuse): mess.update(options) properties = mess.pop('metadata', []) logging.debug('mess=%r, properties=%r', mess, properties) - return self._data_store.find(mess, properties, timeout=-1, - byte_arrays=True)[0] + return self._data_store.find(mess, properties, + timeout=DBUS_TIMEOUT_MAX, byte_arrays=True)[0] def get_metadata(self, object_id): try: - return self._data_store.get_properties(object_id, timeout=-1, - byte_arrays=True) + return self._data_store.get_properties(object_id, + timeout=DBUS_TIMEOUT_MAX, byte_arrays=True) except Exception, exception: raise IOError(errno.ENOENT, str(exception)) @@ -617,8 +620,8 @@ class DataStoreFS(fuse.Fuse): if tags: metadata['tags'] = ' '.join(tags) - object_id = self._data_store.create(metadata, path, False, timeout=-1, - byte_arrays=True) + object_id = self._data_store.create(metadata, path, False, + timeout=DBUS_TIMEOUT_MAX, byte_arrays=True) self._add_title_name(name, object_id) def remove_entry(self, object_id): @@ -632,8 +635,8 @@ class DataStoreFS(fuse.Fuse): def get_data(self, object_id): try: - return self._data_store.get_filename(object_id, timeout=-1, - byte_arrays=True) + return self._data_store.get_filename(object_id, + timeout=DBUS_TIMEOUT_MAX, byte_arrays=True) except Exception, exception: raise IOError(errno.ENOENT, str(exception)) @@ -655,13 +658,13 @@ class DataStoreFS(fuse.Fuse): def write_data(self, object_id, file_name): metadata = self.get_metadata(object_id) return self._data_store.update(object_id, metadata, file_name, False, - timeout=-1, byte_arrays=True) + timeout=DBUS_TIMEOUT_MAX, byte_arrays=True) def write_metadata(self, object_id, metadata): # Current data store doesn't support metadata-only updates file_name = self.get_data(object_id) return self._data_store.update(object_id, metadata, file_name, - True, timeout=-1, byte_arrays=True) + True, timeout=DBUS_TIMEOUT_MAX, byte_arrays=True) def resolve_title_name(self, name): if name not in self._title_name_to_object_id: |