ó
Š%Tc           @   sX   e  a d  d  Z d  d  Z d   Z d   Z d d  Z d   Z g  a d   Z	 d	 S(
   s	   127.0.0.1c         C   s   d d  l  } d |  | f GH| j  | j | j  } | j | j | j d  | j | |  f  d GH| j d  | a | r t	 d  n  t
 t d  } d  S(   Ni˙˙˙˙s-   in open_coot_listener_socket port: %s host %si   s   Coot listener socket ready!s   Coot listener socket ready!
(    (   t   sockett   AF_INETt   SOCK_STREAMt
   setsockoptt
   SOL_SOCKETt   SO_REUSEADDRt   connectt   sendt   coot_listener_sockett'   set_coot_listener_socket_state_internalt   run_python_threadt    coot_listener_idle_function_proc(   t   port_numbert   host_adressR    t   soct   status(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyt   open_coot_listener_socket$   s    c         C   s°   y d d  l  } Wn d GHd  SXd d  l } d |  | f GH| j | j | j  } y | j | |  f  Wn d | |  f GHd  SXd GH| j d  | a | j d t  d  S(   Ni˙˙˙˙s7   BL WARNING:: no gobject available, so no socket. Sorry!s-   in open_coot_listener_socket port: %s host %ss:   BL INFO:: cannot connect to socket on host %s with port %ss   Coot listener socket ready!s   Coot listener socket ready!
ič  (	   t   gobjectR    R   R   R   R   R   t   timeout_addt   coot_socket_timeout_func(   R   R   R   R    R   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyt&   open_coot_listener_socket_with_timeout@   s"    c          C   s   t  r x t t   }  |  s t d  y t  j d  Wn, y t  j d  Wqe d GHd GHqe Xn Xt  j   t a  d Gt  GHt St Sq	 n d Gt  GHt Sd  S(   Ni    i   i   s8   BL INFO:: problems shutting down the controling socket, s   maybe already downs"   server gone - listener thread endss#   coot_socket_timeout_func bad sock: (   R   t   listen_coot_listener_socketR	   t   shutdownt   closet   Falset   True(   t   continue_qm(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyR   ^   s(    

	
	c          C   sL   d }  x5 |  d k r= t  j d  } d G| GHt  j d  q	 Wt  j   d  S(   Nt   startt   exiti   s   Received Message: s   return value(   R   t   recvR   R   (   t   msgt   data(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyt&   coot_listener_idle_function_procbbbbbb}   s    	t    c         C   s   d |  | f GHd  S(   Ns=   coot_listener_error_handler handling error in %s with args %s(    (   t   keyt   args(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyt   coot_listener_error_handler   s    c          C   s˛   d d  l  }  t rĽ x t t  } | s t d  y t j d  Wn, y t j d  Wqq d GHd GHqq Xn Xt j   t a d Gt GHd  S|  j d  d  Sq n	 d	 Gt GHd  S(
   Ni˙˙˙˙i    i   i   s7   BL INFO:: problem shutting down the controling socket, s   maybe already downs"   server gone - listener thread endsg{ŽGáz?s'   coot_listener_idle_func_proc bad sock: (   t   timeR   R   R	   R   R   R   t   sleep(   R%   R   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyR      s*    

	
c            s\  d   d }    f d   } t  }  j d   f d   } yx× t r j d  } d d  l } | j d  | | k r t j | | j |    Pn  | d	 k sş t j |  n |   St	 t  d
 k rF t d t d } | | k r| | j
 |   t d <t j   PqqF qF Wd	 j t  a | s6t S| t  } g  a | SWn t SXd  S(   Ns   # closes   # endc            sÔ   d G|  GHxÄ |  j  d  D]ł } |   k r4 d GHe Sy e |  } WnZ e k
 r | d k rh d GHn  y | e   Ud  } WqĄ d e } qĄ Xn d } n Xd e |  } y  j |  Wq q Xq We	 S(   Ns   received in evaluates   
s   finish sockett   CRs)   INFO:: cannot eval or exec given string: s   Info:: input errors   return value: (
   t   splitR   t   evalt   SyntaxErrort   globalst   Nonet   stringt   strR   R   (   t   string_listt   linet   ret(   t   close_connection_stringR   (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyt   evaluate_character_listˇ   s.    	 

i    c              s%   y   j  d  Wn d GHt SXt S(   NR!   s<   BL INFO:: appear that serve is down, closing down connection(   t   sendallR   R   (    (   R   (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyt   check_alivenessÖ   s    i   i˙˙˙˙gš?R!   i   iţ˙˙˙(   R   t   setblockingR   R   R%   R&   t   total_socket_datat   appendt   rfindt   lent   findt   popt   join(   R   t   end_connection_stringR3   R   R5   R%   t	   last_pairR1   (    (   R2   R   sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyR   ą   s>    		
N(
   R   R   R   R   R   R    R$   R   R7   R   (    (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/remote_control.pyt   <module>   s   			