+from Source import Source
+from Components.Element import cached
+from enigma import eServiceReference
+
+class StreamService(Source):
+ def __init__(self, navcore):
+ Source.__init__(self)
+ self.ref = None
+ self.__service = None
+ self.navcore = navcore
+
+ def serviceEvent(self, event):
+ pass
+
+ @cached
+ def getService(self):
+ return self.__service
+
+ service = property(getService)
+
+ def handleCommand(self, cmd):
+ print "StreamService handle command", cmd
+ self.ref = eServiceReference(cmd)
+
+ def recordEvent(self, service, event):
+ if service is self.__service:
+ return
+ print "RECORD event for us:", service
+ self.changed((self.CHANGED_ALL, ))
+
+ def execBegin(self):
+ print "StreamService execBegin", self.ref.toString()
+ self.__service = self.navcore.recordService(self.ref)
+ self.navcore.record_event.append(self.recordEvent)
+ if self.__service is not None:
+ self.__service.prepareStreaming()
+ self.__service.start()
+
+ def execEnd(self):
+ print "StreamService execEnd", self.ref.toString()
+ self.navcore.record_event.remove(self.recordEvent)
+ if self.__service is not None:
+ self.navcore.stopRecordService(self.__service)
+ self.__service = None