Ńņ
¤Nc           @   s   d  d k  Z  d  d k Z d  d k Z d  d k Td  d k Z d d
 d     YZ d e e i f d     YZ d Z	 d e
 f d	     YZ d S(   i’’’’N(   t   *t   SocketAdapterc           B   s   e  Z d    Z RS(   c         C   s@   t  i    |  _ t  i    |  _ t  i    |  _ t  i    |  _ d  S(   N(   t   Eventt	   eventReadt
   eventWritet   eventConnectedt   eventDisconnected(   t   self(    (    s!   scripts/common/xmpp/Connection.pyt   __init__
   s    (   t   __name__t
   __module__R   (    (    (    s!   scripts/common/xmpp/Connection.pyR   	   s   t   AsyncoreSocketAdapterc           B   sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C   s*   t  i |   t i i |   d |  _ d  S(   Nt    (   R   R   t   asyncoret
   dispatchert   _AsyncoreSocketAdapter__buffer(   R   (    (    s!   scripts/common/xmpp/Connection.pyR      s    c         C   sI   y3 |  i  t i t i  t i i |  | | f  Wn t   t SXt	 S(   N(
   t   create_sockett   sockett   AF_INETt   SOCK_STREAMR   R   t   connectt   LOG_CURRENT_EXCEPTIONt   Falset   True(   R   t   hostt   port(    (    s!   scripts/common/xmpp/Connection.pyR      s    c         C   s   t  i i |   d  S(   N(   R   R   t   close(   R   (    (    s!   scripts/common/xmpp/Connection.pyR   %   s    c         C   s   |  i  | i d  7_  d  S(   Ns   utf-8(   R   t   encode(   R   t   stanza(    (    s!   scripts/common/xmpp/Connection.pyt   send(   s    c         C   s   t  i i |  |  S(   N(   R   R   t   recv(   R   t   size(    (    s!   scripts/common/xmpp/Connection.pyR   +   s    c         C   s   |  i    d  S(   N(   R   (   R   (    (    s!   scripts/common/xmpp/Connection.pyt   handle_close5   s    c         C   s   |  i    d  S(   N(   R   (   R   (    (    s!   scripts/common/xmpp/Connection.pyt   handle_connect9   s    c         C   s   |  i    d  S(   N(   R   (   R   (    (    s!   scripts/common/xmpp/Connection.pyt   handle_read=   s    c         C   s:   |  i  o, t i i |  |  i   } |  i  | |  _  n d  S(   N(   R   R   R   R   (   R   t   sent(    (    s!   scripts/common/xmpp/Connection.pyt   handle_writeA   s    
(   R	   R
   R   R   R   R   R   R    R!   R"   R$   (    (    (    s!   scripts/common/xmpp/Connection.pyR      s   		
			
			i   t
   Connectionc           B   s`   e  Z d  Z d e Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z RS(
   u   WOTu   ^%s_([0-9]+)_([0-9]+)$c         C   s^   d |  _ d |  _ d  |  _ d  |  _ d  |  _ t i   |  _ t i   |  _ t i   |  _	 d  S(   N(   NN(   NN(
   t   NoneR   t   credentialst   jidR   t   parserR   R   t   eventStanzat   eventServerDisconnected(   R   (    (    s!   scripts/common/xmpp/Connection.pyR   P   s    					c         C   s’   |  i  o t d  t S| |  _ | |  _ |  i d d |  i d i   d t i |  _ t	 i	   |  _
 |  i   |  _  |  i  i |  i 7_ |  i  i |  i 7_ |  i  i |  i 7_ |  i  i |  i d t |  i d   p t d  |  i   t St S(   NsC   XMPP: Connection: Unable to connect, an existing connection exists.i    u   @u   /i   s/   XMPP: Connection: Can't connect to xmpp server.(   R   t	   LOG_ERRORR   R   R'   t   lowerR%   t   RESOURCER(   t
   XMPPParserR)   t   createSocketAdapterR   t   _Connection__onSocketReadR   t   _Connection__onSocketConnectedR   t!   _Connection__onSocketDisconnectedR   t   intR+   R   (   R   R   R'   (    (    s!   scripts/common/xmpp/Connection.pyR   ^   s     

		0*

c         C   sĆ   |  i  p t d  t S|  i  i |  i 8_ |  i  i |  i 8_ |  i  i |  i 8_ |  i  i	   d  |  _  d |  _ d |  _ d  |  _ d  |  _  d  |  _ |  i o |  i i   n d  |  _ t S(   NsK   XMPP: Connection:disconnect: Unable to disconnect, not currently connected.(   NN(   NN(   R   R,   R   R   R1   R   R2   R   R3   R   R&   R   R'   R(   R)   t   finiR   (   R   (    (    s!   scripts/common/xmpp/Connection.pyt
   disconnectx   s"    

						
	c         C   s   |  i  i |  d  S(   N(   R   R   (   R   R   (    (    s!   scripts/common/xmpp/Connection.pyt
   sendStanza   s    c         C   s   |  i    d  S(   N(   R   (   R   (    (    s!   scripts/common/xmpp/Connection.pyt   __onSocketConnected   s    c         C   s   |  i    d  S(   N(   R+   (   R   (    (    s!   scripts/common/xmpp/Connection.pyt   __onSocketDisconnected   s    c         C   s£   |  i  p t d  d  S|  i i t  } | p |  i   d  S|  i  i |  |  i  i   } x< | o4 |  i |  y |  i  i   } Wqc d  } qc Xqc Wd  S(   Ns4   XMPP: Connection::onSocketRead: No parser available.(
   R)   R,   R   R   t   RECV_BUFFER_SIZER+   t   feedDatat   popR*   R&   (   R   t   dataR   (    (    s!   scripts/common/xmpp/Connection.pyt   __onSocketRead    s     


 c         C   s   t    S(   N(   R   (   R   (    (    s!   scripts/common/xmpp/Connection.pyR0   ¶   s    (   R	   R
   R.   t   STANZA_ID_TEMPLATER   R   R6   R7   R2   R3   R1   R0   (    (    (    s!   scripts/common/xmpp/Connection.pyR%   J   s   
							(    (   R   R   R   t   debug_utilst   ParserR/   R   R   R   R:   t   objectR%   (    (    (    s!   scripts/common/xmpp/Connection.pyt   <module>   s   
3