Format: application/x-python-code
⬇ Download File (2.8 KB)
   1  o
   2  
   3  �h��@sTdZddlZddlZddlmZddlmZddlZddlm	Z	Gdd�de�Z
   4  dS)z=The client and server for a basic ping-pong style heartbeat.
   5  �N)�Path)�Thread)�	localhostc@s:eZdZdZd
   6  dd�Zdd�Zdd�Zd	d
   7  �Zdd�ZdS)�	Heartbeatz9A simple ping-pong style heartbeat that runs in a thread.NcCs||dur
   8  dt�df}tj|dd�||_|\|_|_|_|j|_|jdkr)|��|j|jf|_	d|_
   9  d|_d|_d|_
  10  dS)z Initialize the heartbeat thread.N�tcprr)�nameT)rr�__init__�context�	transport�ip�port�
  11  original_port�	pick_port�addr�daemonZpydev_do_not_traceZis_pydev_daemon_threadr)�selfr	r�r�Ic:\Users\shubh\Videos\agent\nova\Lib\site-packages\ipykernel/heartbeat.pyrs
  12  
  13  zHeartbeat.__init__cCs�|jdkr&t��}|�|jdkrdn|jdf�|��d|_|��|jS|jdkrQd|_t|j�d|j�����rN|jd|_t|j�d|j�����s;|jSt	d|j��)	zPick a port for the heartbeat.r�*�r�Zipc�-zUnrecognized zmq transport: %s)
  14  r
  15  �socket�bindr�getsocknamer�closer�exists�
  16  ValueError)r�srrrr/s
  17  
  18  ���zHeartbeat.pick_portcCs:|jdkrdnd}|j�|j�d|j��|t|j��S)Nr�:rz://)r
  19  rrr�strr)r�crrr�_try_bind_socket?s(zHeartbeat._try_bind_socketcCs�ztj}Wntyd}Ynw|jrdnd}t|�D];}z|��WdStjyW}z$||dkr6�|jtjkrB|j|krB�|jdkrL|�	�n�WYd}~qd}~wwdS)Nr�dr)
  20  �errnoZ
  21  WSAEADDRINUSE�AttributeErrorr
  22  �ranger"�zmq�ZMQErrorZ
  23  EADDRINUSEr)rZ
  24  win_in_useZmax_attempts�attemptZzerrr�_bind_socketCs,
  25  �
  26  
  27  �
  28  
  29  ����zHeartbeat._bind_socketcCs�d|_|j�tj�|_d|j_z|��Wn
  30  ty"|j���w	z
  31  t�	tj
  32  |j|j�WdStjyw}z9|jtj
  33  krFWYd}~q#|jtjkrez|j��Wn
  34  tjy]YnwWYd}~dS|jtjkrrWYd}~dS�d}~ww)zRun the heartbeat thread.ri�TN)rr	rr'ZROUTERZlingerr*�	ExceptionrZdeviceZQUEUEr(r$ZEINTRZETERM�ENOTSOCK)r�errr�run]s8
  35  �����z
  36  Heartbeat.run)N)	�__name__�
  37  __module__�__qualname__�__doc__rrr"r*r.rrrrrs
  38  r)r2r$r�pathlibr�	threadingrr'Zjupyter_client.localinterfacesrrrrrr�<module>s