238
238
def wait_no_more_events(self, last_event_interval, verbose=False):
239
""" Wait until no more events are fired by the syncdaemon. """
239
"""Wait until no more events are fired by the syncdaemon."""
240
240
self.log.debug('wait_no_more_events')
241
241
d = defer.Deferred()
242
243
def check_last_event():
243
""" Check if the daemon is connected and we didn't received event
244
in the last_event_interval
246
Check if the daemon is connected and didn't received event
247
in the last_event_interval.
246
249
current_time = time.time()
247
250
if self.last_event and \
261
264
sys.stdout.write("Listening events")
262
265
sys.stdout.flush()
263
267
def event_handler(event_dict):
264
""" update last_event and run checks """
268
"""Update last_event and run checks."""
265
269
self.last_event = time.time()
266
270
self.log.debug('wait_no_more_events - new event: %s - %s',
267
271
event_dict['event_name'], str(self.last_event))
272
276
self.delayed_call.reset(last_event_interval)
274
278
self.bus.add_signal_receiver(event_handler, signal_name='Event')
275
280
def cleanup(result):
276
""" remove the signal handler """
277
self.bus.remove_signal_receiver(event_handler,
281
"""Remove the signal handler."""
282
self.bus.remove_signal_receiver(event_handler, signal_name='Event')
280
284
d.addBoth(cleanup)
281
286
# in case the daemon already reached nirvana
282
287
self.delayed_call = reactor.callLater(last_event_interval,
283
288
check_last_event)
321
326
error_handler=d.errback)
329
@defer.inlineCallbacks
330
def subscribe_share(self, share_id):
331
"""Subscribe to a share given its id."""
332
self.log.debug('subscribe_share: %r', share_id)
333
shares_client = DBusClient(self.bus, '/shares', DBUS_IFACE_SHARES_NAME)
335
d = self.wait_for_signals('ShareSubscribed', 'ShareSubscribeError',
336
dbus_iface=DBUS_IFACE_SHARES_NAME)
338
call_done = defer.Deferred()
339
shares_client.call_method('subscribe', share_id,
340
reply_handler=call_done.callback,
341
error_handler=call_done.errback)
345
@defer.inlineCallbacks
346
def unsubscribe_share(self, share_id):
347
"""Unsubscribe from a share given its id."""
348
self.log.debug('unsubscribe_share: %r', share_id)
349
shares_client = DBusClient(self.bus, '/shares', DBUS_IFACE_SHARES_NAME)
351
d = self.wait_for_signals('ShareUnSubscribed', 'ShareUnSubscribeError',
352
dbus_iface=DBUS_IFACE_SHARES_NAME)
354
call_done = defer.Deferred()
355
shares_client.call_method('unsubscribe', share_id,
356
reply_handler=call_done.callback,
357
error_handler=d.errback)
324
361
def get_shares(self):
325
362
""" Get the list of shares (accepted or not) """
326
363
self.log.debug('get_shares')
807
844
out.write("Shares list:\n")
808
845
for share in shares:
809
out.write(' id=%s name=%s accepted=%s access_level=%s from=%s\n' % \
846
out.write(' id=%s name=%s accepted=%s subscribed=%s access_level=%s ' \
810
848
(share['volume_id'], share['name'], bool(share['accepted']),
811
share['access_level'], share['other_username']))
849
bool(share['subscribed']), share['access_level'],
850
share['other_username']))
814
853
def show_path_info(result, path, out):