diff options
author | erikb <erikb@574bc980-5f2d-0410-acbc-c8f9f0eb14e0> | 2007-10-24 20:30:27 (GMT) |
---|---|---|
committer | erikb <erikb@574bc980-5f2d-0410-acbc-c8f9f0eb14e0> | 2007-10-24 20:30:27 (GMT) |
commit | 85a00079f8b3e2aa1783a5121023523b5eb51919 (patch) | |
tree | 680417a4d94029d977b3f1d108e5bca62a779325 /recordtube.py | |
parent | d0444d51eb02a7a8abce8432723bb5a049c1c726 (diff) |
getting the tubecallback in place. exciting. not working. untested.
git-svn-id: http://mediamods.com/public-svn/camera-activity/Record.activity@720 574bc980-5f2d-0410-acbc-c8f9f0eb14e0
Diffstat (limited to 'recordtube.py')
-rw-r--r-- | recordtube.py | 94 |
1 files changed, 13 insertions, 81 deletions
diff --git a/recordtube.py b/recordtube.py index 8581369..f9cf76a 100644 --- a/recordtube.py +++ b/recordtube.py @@ -1,9 +1,8 @@ -import gobject -# will eventually be imported from sugar -from sugar.presence.tubeconn import TubeConnection +#todo: access these same vars from ra SERVICE = "org.laptop.RecordActivity" -IFACE = SERVICE +IFACE = RecordActivity.SERVICE PATH = "/org/laptop/RecordActivity" + from dbus import Interface from dbus.service import method, signal from dbus.gobject_service import ExportedGObject @@ -13,37 +12,29 @@ class RecordTube(ExportedGObject): __gsignals__ = { 'filepart': - (gobject.SIGNAL_RUN_FIRST, None, [object,object,object,object,object,object,object]) + (gobject.SIGNAL_RUN_FIRST, None, [object,object,object,object,object,object,object]), + 'new-recd': + (gobject.SIGNAL_RUN_FIRST, None, [object]) } - def __init__(self, tube, get_buddy, myHashKey, logger ): + def __init__(self, tube, get_buddy, myHashKey, logger): super(HelloTube, self).__init__(tube, PATH) - self._logger = logger self.tube = tube self._get_buddy = get_buddy # Converts handle to Buddy object self.myHashKey = myHashKey - if (self.thePdfPath != None): - self.tube.add_signal_receiver(self.hello_cb, 'Hello', IFACE, path=PATH, sender_keyword='sender') - else: - self.add_filepart_handler() - + self._logger = logger - def setThePdfPath( self, pdfPath ): - self.thePdfPath = pdfPath - if (self.thePdfPath != None): - self.tube.add_signal_receiver(self.hello_cb, 'Hello', IFACE, path=PATH, sender_keyword='sender') - else: - self._logger.debug("Damn! We didn't really get the pdf when we asked for it!") + self.tube.add_signal_receiver(self._newRecdCb, 'notifyBudsOfNewRecd', IFACE, path=PATH, sender_keyword='sender') @signal(dbus_interface=IFACE, signature='ss') #dual s for 2x strings - def Hello(self, borrower, lender): + def notifyBudsOfNewRecd(self, recorder, recdXml): """Say Hello to whoever else is in the tube.""" - self._logger.debug('I said Hello. Anyone got a pdf for me to read?') + self._logger.debug('Ive taken a new photo!') - def hello_cb(self, borrower, lender, sender=None): + def _newRecdCb(self, borrower, lender, sender=None): """Somebody Hello'd me. I should share with them my pdf. i hope they like to read bookz!""" self._logger.debug("hello_cb from " + borrower + " for " + sender ) if sender == self.tube.get_unique_name(): @@ -61,63 +52,4 @@ class RecordTube(ExportedGObject): #you should not be here if you don't have the pdf. self._logger.debug("ya, i have that pdf, thanks for asking! here it is!") - self.send_file( self.thePdfPath, borrower, lender ) - - - def add_filepart_handler(self): - """Hook up signal receiver for SendFilePart.""" - self.SENDFILE_ID = self.tube.add_signal_receiver( self.filepart_cb, 'SendFilePart', IFACE, path=PATH, sender_keyword='sender', byte_arrays=True) - - - def remove_filepart_handler(self): - if (self.SENDFILE_ID == None): - self._logger.debug("unable to remove signal because we were never listening for it!") - return - self.tube.remove_signal_receiver(self.SENDFILE_ID) - - - @signal(dbus_interface=IFACE, signature='suuayss') - def SendFilePart(self, filename, part, numparts, bytes, borrower, lender): - """Signal which sends part of a file. - - filename -- string, filename to send - part -- integer, number of this part. - numparts -- integer, total number of parts. - bytes -- the bytes making up this part of the file. - - example: self.SendFilePart(1, 1, '<html></html>') - """ - pass - - - def send_file(self, filename, borrower, lender ): - """Send a file over the D-Bus Tube""" - size = os.path.getsize(filename) - 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) + " from " + borrower + " to " + lender ) - self.SendFilePart(os.path.basename(filename), chunk+1, chunks, bytes, borrower, lender) - - f.close() - - - def filepart_cb(self, filename, part, numparts, bytes, borrower, lender, sender=None): - """Receive part of a file. - - filename -- filename sent - part -- integer, number of this part. - numparts -- expected number of parts. - bytes -- the bytes making up this part of the file. - """ - if sender == self.tube.get_unique_name(): - # sender is my bus name, so ignore my own signal - return - - self.emit( "filepart", part, numparts, filename, bytes, borrower, lender, sender)
\ No newline at end of file + self.send_file( self.thePdfPath, borrower, lender )
\ No newline at end of file |