Ñò
:è¥Oc           @   s}   d  d k  l Z d  d k Z d  d k Z d  d k l Z d d k l Z d
 Z d Z	 e
 Z d „  Z d e f d	 „  ƒ  YZ d S(   iÿÿÿÿ(   t   exportedN(   t   sleepi   (   t   zephyrt   SubscriptionManageri   c         C   s\   |  p |  d d j o d  S|  |  i d ƒ  i d ƒ } t | ƒ d j o t | ƒ Sd  S(   Ni    t   !t   #t   ,i   (   t   Nonet   findt   splitt   lent   tuple(   t   st   tripplet(    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyt	   parse_sub   s     c           B   s¿   e  Z d d f Z e i d „ Z d „  Z d „  Z e d „  ƒ Z	 e e
 d „ ƒ Z e e
 d „ ƒ Z e e
 d	 „ ƒ Z e e
 d
 „ ƒ Z e e
 d „ ƒ Z e e
 d „ ƒ Z e d „  ƒ Z RS(   s   %me%t   *t   messagec         C   sb   y t  i ƒ  |  _ Wn, t j
 o  t d ƒ t  i ƒ  |  _ n X| |  _ | |  _ |  i ƒ  d  S(   Ni   (   R   t   Subscriptionst   subscriptionst   IOErrorR   t   usernamet   zsubfilet   load_or_create_zsubs(   t   selfR   R   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyt   __init__   s    
		c         C   sP   t  |  i d d ƒ i i ƒ  } z' | ~ } | i d „  |  i Dƒ ƒ Wd  QXd  S(   Nt   wi€  c         s   s&   x |  ] } d  i  | ƒ d Vq Wd S(   R   s   
N(   t   join(   t   .0t   sub(    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pys	   <genexpr>'   s   	 (   t   openR   t   __exit__t	   __enter__t
   writelinesR   (   R   t   _[1]t   f(    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyt   save%   s    ,c      	   C   sž   t  i i |  i ƒ p |  i |  i ƒ St |  i ƒ i i ƒ  } zT | ~ } xD | i	 ƒ  D]6 } t
 | ƒ } | d  j	 o |  i | d t ƒqZ qZ WWd  QXd  S(   NR#   (   t   ost   patht   isfileR   t   sett   DEFAULT_SUBSR   R   R   t
   xreadlinesR   R   t   addt   False(   R   R!   R"   t   lineR   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyR   )   s    & c         C   s   t  |  i ƒ S(   s   Get a list of subscriptions.(   t   listR   (   R   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyt   get3   s    c         C   sg   |  i  ƒ  y |  i i | ƒ Wn- t j
 o! t d ƒ |  i i | ƒ n X| o |  i ƒ  n t S(   s   Set the subscriptions.i   (   t   clearR   t   updateR   R   R#   t   True(   R   R   R#   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyR'   8   s    

c         C   sc   y |  i  i ƒ  Wn* t j
 o t d ƒ |  i  i ƒ  n X| o t |  i d ƒ i ƒ  n t S(   s   Clear the subscriptions.i   R   (   R   R/   R   R   R   R   t   closeR1   (   R   R#   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyR/   J   s    
c         C   s—   t  | ƒ } y |  i i | ƒ Wn[ t j
 o t St j
 o< t d ƒ y |  i i | ƒ Wq~ t j
 o t SXn X| o |  i ƒ  n t S(   s   Remove the given subscription.i   (	   R   R   t   removet   KeyErrorR+   R   R   R#   R1   (   R   t   subscriptionR#   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyR3   X   s    
c      
   C   sÀ   t  | ƒ } | |  i j o t Sy |  i i | ƒ Wn- t j
 o! t d ƒ |  i i | ƒ n X| oP t |  i d d ƒ i i	 ƒ  } z' | ~ } | i
 d i | ƒ d ƒ Wd QXn d S(   s   Add the given subscription.i   t   ai€  R   s   
N(   R   R   R+   R*   R   R   R   R   R   R   t   writeR   (   R   R5   R#   R!   R"   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyR*   m   s    
,c         C   sˆ   |  i  d „  | Dƒ ƒ } | p d Sy |  i i | ƒ Wn- t j
 o! t d ƒ |  i i | ƒ n X| o |  i ƒ  n t | ƒ S(   s   Remove all given subscriptions.c         s   s   x |  ] } t  | ƒ Vq Wd  S(   N(   R   (   R   R   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pys	   <genexpr>‚   s   	 Ni   (   t   intersectionR   t   difference_updateR   R   R#   R
   (   R   R   R#   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyt	   removeAll   s    
c      
   C   sÈ   t  d „  | Dƒ ƒ |  i } | p d Sy |  i i | ƒ Wn- t j
 o! t d ƒ |  i i | ƒ n X| oJ t |  i d ƒ i i ƒ  } z$ | ~ } | i	 d „  | Dƒ ƒ Wd QXn t
 | ƒ S(   s   Add all given subscriptions.c         s   s   x |  ] } t  | ƒ Vq Wd  S(   N(   R   (   R   R   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pys	   <genexpr>”   s   	 i    i   R6   c         s   s&   x |  ] } d  i  | ƒ d Vq Wd S(   R   s   
N(   R   (   R   R   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pys	   <genexpr>¡   s   	 N(   R'   R   R0   R   R   R   R   R   R   R    R
   (   R   R   R#   R!   R"   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyt   addAll‘   s    
)!c         C   s   t  | ƒ |  i j S(   s<   Returns true if the user is subscribed to the given triplet.(   R   R   (   R   R5   (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyt   isSubscribed¤   s    (   s   %me%R   R   (   s   messageR   s   %me%(   t   __name__t
   __module__R(   t   settingst   ZSUBSR   R#   R   R    R.   t   SAVER'   R/   R3   R*   R:   R;   R<   (    (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyR      s&   			
(   s   SubscriptionManager(   t   serverR    R?   R$   t   timeR   t    R   t   __all__t   TIMEOUTR+   RA   R   t   objectR   (    (    (    sG   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/subscriptions.pyt   <module>   s   	