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-24 20:30:27 (GMT)
committer erikb <erikb@574bc980-5f2d-0410-acbc-c8f9f0eb14e0>2007-10-24 20:30:27 (GMT)
commit85a00079f8b3e2aa1783a5121023523b5eb51919 (patch)
tree680417a4d94029d977b3f1d108e5bca62a779325 /recordtube.py
parentd0444d51eb02a7a8abce8432723bb5a049c1c726 (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.py94
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