[Telepathy-commits] [telepathy-python/master] file-transfer.py: adapt to new draft API
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Thu Dec 4 06:00:19 PST 2008
---
examples/file-transfer.py | 28 ++++++++++++++--------------
1 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/examples/file-transfer.py b/examples/file-transfer.py
index a86d82e..a65ef2f 100644
--- a/examples/file-transfer.py
+++ b/examples/file-transfer.py
@@ -20,15 +20,13 @@ loop = None
CHANNEL_TYPE_FILE_TRANSFER = 'org.freedesktop.Telepathy.Channel.Type.FileTransfer.DRAFT'
FT_STATE_NONE = 0
-FT_STATE_NOT_OFFERED = 1
+FT_STATE_PENDING = 1
FT_STATE_ACCEPTED = 2
-FT_STATE_LOCAL_PENDING = 3
-FT_STATE_REMOTE_PENDING = 4
-FT_STATE_OPEN = 5
-FT_STATE_COMPLETED = 6
-FT_STATE_CANCELLED = 7
+FT_STATE_OPEN = 3
+FT_STATE_COMPLETED = 4
+FT_STATE_CANCELLED = 5
-ft_states = ['none', 'not offered', 'accepted', 'local pending', 'remote pending', 'open', 'completed', 'cancelled']
+ft_states = ['none','pending', 'accepted', 'open', 'completed', 'cancelled']
class FTClient:
def __init__(self, account_file):
@@ -93,6 +91,8 @@ class FTClient:
self.ft_state_changed_cb)
self.ft_channel[CHANNEL_TYPE_FILE_TRANSFER].connect_to_signal('TransferredBytesChanged',
self.ft_transferred_bytes_changed_cb)
+ self.ft_channel[CHANNEL_TYPE_FILE_TRANSFER].connect_to_signal('InitialOffsetDefined',
+ self.ft_initial_offset_defined_cb)
self.got_ft_channel()
self.file_name = props[CHANNEL_TYPE_FILE_TRANSFER + '.Filename']
@@ -105,6 +105,9 @@ class FTClient:
per_cent = (float(count) / self.file_size) * 100
print "%.u%s transferred" % (per_cent, '%')
+ def ft_initial_offset_defined_cb(self, offset):
+ self.initial_offset = offset
+
class FTReceiverClient(FTClient):
def connected_cb(self):
FTClient.connected_cb(self)
@@ -120,20 +123,18 @@ class FTReceiverClient(FTClient):
FTClient.ft_state_changed_cb(self, state, reason)
if state == FT_STATE_OPEN:
- # receive file
- offset = self.ft_channel[PROPERTIES_IFACE].Get(CHANNEL_TYPE_FILE_TRANSFER, 'InitialOffset')
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(self.sock_addr)
path = self.create_output_path()
- if offset == 0:
+ if self.initial_offset == 0:
out = file(path, 'w')
else:
out = file(path, 'a')
# FIXME: Should use GIOchannel or an async API to not block the
# client (idem for the reading side).
- read = offset
+ read = self.initial_offset
while read < self.file_size:
data = s.recv(self.file_size - read)
read += len(data)
@@ -181,7 +182,7 @@ class FTSenderClient(FTClient):
def got_ft_channel(self):
print "Offer %s to %s" % (self.file_to_offer, self.contact)
- self.sock_addr = self.ft_channel[CHANNEL_TYPE_FILE_TRANSFER].OfferFile(SOCKET_ADDRESS_TYPE_UNIX,
+ self.sock_addr = self.ft_channel[CHANNEL_TYPE_FILE_TRANSFER].ProvideFile(SOCKET_ADDRESS_TYPE_UNIX,
SOCKET_ACCESS_CONTROL_LOCALHOST, "")
def ft_state_changed_cb(self, state, reason):
@@ -189,11 +190,10 @@ class FTSenderClient(FTClient):
if state == FT_STATE_OPEN:
# receive file
- offset = self.ft_channel[PROPERTIES_IFACE].Get(CHANNEL_TYPE_FILE_TRANSFER, 'InitialOffset')
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(self.sock_addr)
- s.send(file(self.file_to_offer).read()[offset:])
+ s.send(file(self.file_to_offer).read()[self.initial_offset:])
def usage():
print "Usage:\n" \
--
1.5.6.5
More information about the Telepathy-commits
mailing list