Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha 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)
commita7186d4ede605d9e4fe7158e1bb25d60f0c512cf (patch)
tree4ca446bf9780a1d738609cddee058de60e42087b
parent4c8c00702c4c52dd8a5161a60c226c92da004ab3 (diff)
fix DBus timeouts (-1 is default, not infinite)
-rwxr-xr-xdatastore-fuse.py23
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: