Update of /cvsroot/freevo/freevo/src/record
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29342

Modified Files:
        client.py 
Log Message:
add functions to handle record.list.update

Index: client.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/record/client.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** client.py   19 Dec 2004 18:40:53 -0000      1.2
--- client.py   20 Dec 2004 21:25:18 -0000      1.3
***************
*** 43,47 ****
  
  class Recording:
!     def __init__(self, id, channel, priority, start, stop, status):
          self.id = id
          self.channel = channel
--- 43,51 ----
  
  class Recording:
!     def __init__(self, *args):
!         self.update(*args)
! 
!         
!     def update(self, id, channel, priority, start, stop, status):
          self.id = id
          self.channel = channel
***************
*** 51,56 ****
          self.status = status
          self.description = {}
! 
! 
  class Recordings:
      def __init__(self):
--- 55,59 ----
          self.status = status
          self.description = {}
!         
  class Recordings:
      def __init__(self):
***************
*** 59,63 ****
          self.server = None
          mcomm.register_entity_notification(self.__entity_update)
! 
  
      def __entity_update(self, entity):
--- 62,67 ----
          self.server = None
          mcomm.register_entity_notification(self.__entity_update)
!         mcomm.register_event('record.list.update', self.__list_update)
!         
  
      def __entity_update(self, entity):
***************
*** 67,71 ****
              return
  
!         if entity.present and 
entity.matches(mcomm.get_address('recordserver')):
              log.info('recordserver found')
              self.server = entity
--- 71,76 ----
              return
  
!         if entity.present and \
!                entity.matches(mcomm.get_address('recordserver')):
              log.info('recordserver found')
              self.server = entity
***************
*** 89,95 ****
              self.__recordings['%s-%s-%s' % (l[1], l[3], l[4])] = Recording(*l)
          log.info('got recording list')
!         self.__update_description()
          
  
      def __describe_callback(self, result):
          try:
--- 94,114 ----
              self.__recordings['%s-%s-%s' % (l[1], l[3], l[4])] = Recording(*l)
          log.info('got recording list')
!         self.__request_description()
          
  
+     def __list_update(self, result):
+         log.info('got recording list update')
+         for l in result.payload[0].args:
+             key = '%s-%s-%s' % (l[1], l[3], l[4])
+             if key in self.__recordings:
+                 log.debug('update: %s: %s', l[0], l[5])
+                 self.__recordings[key].update(*l)
+             else:
+                 log.debug('new: %s', l[0])
+                 self.__recordings[key] = Recording(*l)
+         self.__request_description()
+         return True
+     
+         
      def __describe_callback(self, result):
          try:
***************
*** 105,119 ****
          description['start_padding'] = rec[7]
          description['stop_padding'] = rec[8]
!         self.__recordings['%s-%s-%s' % (rec[2], rec[4], rec[5])].description 
= description
!         self.__update_description()
  
  
!     def __update_description(self):
          if not self.server:
              return
          for key in self.__recordings:
              if not self.__recordings[key].description:
                  self.server.recording_describe(self.__recordings[key].id,
!                                                
callback=self.__describe_callback)
                  return
          log.info('got all recording descriptions')
--- 124,140 ----
          description['start_padding'] = rec[7]
          description['stop_padding'] = rec[8]
!         key = '%s-%s-%s' % (rec[2], rec[4], rec[5])
!         self.__recordings[key].description = description
!         self.__request_description()
  
  
!     def __request_description(self):
          if not self.server:
              return
          for key in self.__recordings:
              if not self.__recordings[key].description:
+                 cb = self.__describe_callback
                  self.server.recording_describe(self.__recordings[key].id,
!                                                callback=cb)
                  return
          log.info('got all recording descriptions')
***************
*** 188,192 ****
              return
  
!         if entity.present and 
entity.matches(mcomm.get_address('recordserver')):
              self.server = entity
              self.server.favorite_list(callback=self.__list_callback)
--- 209,214 ----
              return
  
!         if entity.present and \
!                entity.matches(mcomm.get_address('recordserver')):
              self.server = entity
              self.server.favorite_list(callback=self.__list_callback)



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to