Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/recordtube.py
diff options
context:
space:
mode:
authorerikb <erikb@574bc980-5f2d-0410-acbc-c8f9f0eb14e0>2007-10-26 20:05:35 (GMT)
committer erikb <erikb@574bc980-5f2d-0410-acbc-c8f9f0eb14e0>2007-10-26 20:05:35 (GMT)
commiteee9456508b124863d26fb5922209019842dccc2 (patch)
tree84ad45097dbeb1a166a052c2f6e274325261c8a6 /recordtube.py
parent501d920cf2c23e05ea5417daba70a99d30f3054b (diff)
more in dev mesh code
git-svn-id: http://mediamods.com/public-svn/camera-activity/Record.activity@738 574bc980-5f2d-0410-acbc-c8f9f0eb14e0
Diffstat (limited to 'recordtube.py')
-rw-r--r--recordtube.py46
1 files changed, 42 insertions, 4 deletions
diff --git a/recordtube.py b/recordtube.py
index 3bdd306..237eaba 100644
--- a/recordtube.py
+++ b/recordtube.py
@@ -11,8 +11,10 @@ from dbus.gobject_service import ExportedGObject
class RecordTube(ExportedGObject):
__gsignals__ = {
+ 'recd-bits-arrived':
+ (gobject.SIGNAL_RUN_FIRST, None, [object,object,object,object,object]),
'recd-requested':
- (gobject.SIGNAL_RUN_FIRST, None, [object,object,object,object,object,object,object]),
+ (gobject.SIGNAL_RUN_FIRST, None, [object,object]),
'new-recd':
(gobject.SIGNAL_RUN_FIRST, None, [object,object])
}
@@ -25,8 +27,9 @@ class RecordTube(ExportedGObject):
self.myHashKey = myHashKey
self._logger = logger
- self.tube.add_signal_receiver(self._newRecdTubeCb, 'notifyBudsOfNewRecd', IFACE, path=PATH, sender_keyword='sender')
- self.tube.add_signal_receiver(self._reqRecdTubeCb, 'requestRecdBits', IFACE, path=PATH, sender_keyword='sender')
+ self.idNotify = self.tube.add_signal_receiver(self._newRecdTubeCb, 'notifyBudsOfNewRecd', IFACE, path=PATH, sender_keyword='sender')
+ self.idRequest = self.tube.add_signal_receiver(self._reqRecdTubeCb, 'requestRecdBits', IFACE, path=PATH, sender_keyword='sender')
+ self.idBroadcast = self.tube.add_signal_receiver(self._getRecdTubeCb, 'broadcastRecdBits', IFACE, path=PATH, sender_keyword='sender', byte_arrays=True)
@signal(dbus_interface=IFACE, signature='ss') #dual s for 2x strings
@@ -62,4 +65,39 @@ class RecordTube(ExportedGObject):
self._logger.debug('_reqRecdTubeCb: ive overhead someone wants a photo, but not from me')
return
- self.emit( "recd-requested", str(whoWantsIt), str(recdMd5sumOfIt) ) \ No newline at end of file
+ self.emit( "recd-requested", str(whoWantsIt), str(recdMd5sumOfIt) )
+
+
+ def broadcastRecd(self, md5, filepath, sendThisTo ):
+ size = os.path.getsize(filepath)
+ f = open(filename)
+ chunk_size = 1000
+ chunks = size / chunk_size
+ if (size%chunk_size != 0):
+ chunks += 1
+
+ for chunk in range(chunks):
+ bytes = f.read(chunk_size)
+ self._logger.debug("sending " + str(chunk+1) + " of " + str(chunks) + " to " + lender )
+ self.broadcastRecdBits(md5, os.path.basename(filename), chunk+1, chunks, bytes, sendTo, self.myHashKey)
+
+ f.close()
+ return True
+
+
+ @signal(dbus_interface=IFACE, signature='ssuuayss')
+ def broadcastRecdBits(self, filename, part, numparts, bytes, sendThisTo ):
+ pass
+
+
+ def _getRecdTubeCb(self, md5, part, numparts, bytes, sentTo, fromWho, sender=None):
+ if sender == self.tube.get_unique_name():
+ self._logger.debug("_reqRecdTubeCb: sender is my bus name, so ignore my own signal")
+ return
+ if (fromWho == self.myHashKey):
+ self._logger.debug('_getRecdTubeCb: i dont want bits from meself, thx anyway. schizophrenic?')
+ if (sentTo != self.myHashKey):
+ self._logger.debug('_getRecdTubeCb: ive overhead someone sending bits, but not to me!')
+ return
+
+ self.emit( "recd-bits-arrived", md5, part, numparts, bytes, fromWho ) \ No newline at end of file