diff options
author | erikb <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) |
commit | eee9456508b124863d26fb5922209019842dccc2 (patch) | |
tree | 84ad45097dbeb1a166a052c2f6e274325261c8a6 /recordtube.py | |
parent | 501d920cf2c23e05ea5417daba70a99d30f3054b (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.py | 46 |
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 |