ó
¢C,Rc           @   s   d  d l  m Z m Z m Z d  d l m Z d d l m Z d d l Z d d l	 Z	 d d l
 Z
 d „  Z d „  Z d „  Z d S(	   i   (   t   Clientt   Meetingt   DiscussError(   t   NO_SUCH_MTGiÿÿÿÿ(   t   partialNc         C   s«   yu t  |  d ƒ } | j ƒ  } | j ƒ  t t j d d ƒ } t | | ƒ } t t j | ƒ } t	 d „  | ƒ } | SWn/ t
 k
 r¦ } | j t j k r g  S| ‚ n Xd S(   s)   Parses the given list of discuss servers.t   rs   #.*t    c         S   s   |  S(   N(    (   t   x(    (    sK   /afs/sipb.mit.edu/user/vasilvv/arch/amd64_ubuntu1204/bin/discuss/locator.pyt   <lambda>   s    N(   t   opent	   readlinest   closeR   t   ret   subt   mapt   strt   stript   filtert   IOErrort   errnot   ENOENT(   t   filenamet   sourcet   linest   remove_commentst   err(    (    sK   /afs/sipb.mit.edu/user/vasilvv/arch/amd64_ubuntu1204/bin/discuss/locator.pyt   _read_server_list   s    
c          C   sW   d }  t  j j d ƒ } t |  ƒ } t | ƒ } | g  | D] } | | k r: | ^ q: S(   Ns   /etc/discuss/serverss   ~/.dsc_servers(   t   ost   patht
   expanduserR   (   t   global_list_patht   user_list_patht   global_serverst   user_serverst   server(    (    sK   /afs/sipb.mit.edu/user/vasilvv/arch/amd64_ubuntu1204/bin/discuss/locator.pyt   get_servers)   s    c         C   s«   t  ƒ  } x› | D]“ } t | ƒ } xt d D]l } | |  } t | | ƒ } y | j ƒ  | SWq) t k
 r” } | j t k r q) q• | j ƒ  | ‚ q) Xq) W| j ƒ  q Wd S(   s   Attempts to locate the meeting by looking for it on known
    discuss servers. If found, returns the meeting object with a live
    connection.s   /var/spool/discuss/s   /usr/spool/discuss/(   s   /var/spool/discuss/s   /usr/spool/discuss/N(	   R#   R    R   t	   load_infoR   t   codeR   R   t   None(   t   namet   serversR"   t   clientt   prefixt   mtg_patht   mtgR   (    (    sK   /afs/sipb.mit.edu/user/vasilvv/arch/amd64_ubuntu1204/bin/discuss/locator.pyt   locate3   s     	


(   R)   R    R   R   t	   constantsR   t	   functoolsR   R   R   R   R   R#   R-   (    (    (    sK   /afs/sipb.mit.edu/user/vasilvv/arch/amd64_ubuntu1204/bin/discuss/locator.pyt   <module>   s   		
