U
    •Ê¹j©  ã                   @   s^   d dl Z d dlZd dlZd dlmZ G dd„ dƒZG dd„ dejjƒZG dd„ dejj	ƒZ	dS )	é    N)ÚForkingPicklerc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚConnectionWrapperz^Proxy class for _multiprocessing.Connection which uses ForkingPickler to
    serialize objectsc                 C   s
   || _ d S ©N)Úconn)Úselfr   © r   úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/multiprocessing/queue.pyÚ__init__   s    zConnectionWrapper.__init__c                 C   s,   t  ¡ }t|tjƒ |¡ |  | ¡ ¡ d S r   )ÚioÚBytesIOr   ÚpickleÚHIGHEST_PROTOCOLÚdumpZ
send_bytesÚgetvalue)r   ÚobjÚbufr   r   r   Úsend   s    zConnectionWrapper.sendc                 C   s   |   ¡ }t |¡S r   )Z
recv_bytesr   Úloads)r   r   r   r   r   Úrecv   s    zConnectionWrapper.recvc                 C   s0   d| j krt| j|ƒS tdt| ƒj› d�ƒ‚d S )Nr   ú'z ' object has no attribute 'conn')Ú__dict__Úgetattrr   ÚAttributeErrorÚtypeÚ__name__)r   Únamer   r   r   Ú__getattr__   s    
zConnectionWrapper.__getattr__N)r   Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   r   r   r   r   r      s
   r   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚQueuec                    s>   t ƒ j||Ž t| jƒ| _t| jƒ| _| jj| _| jj| _d S r   )	Úsuperr	   r   Ú_readerÚ_writerr   Z_sendr   Z_recv)r   ÚargsÚkwargs©Ú	__class__r   r   r	      s
    
zQueue.__init__)r   r   r   r	   Ú__classcell__r   r   r&   r   r       s   r    c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚSimpleQueuec                    s2   t | jtƒs$t| jƒ| _t| jƒ| _tƒ  ¡  d S r   )Ú
isinstancer"   r   r#   r!   Ú_make_methods)r   r&   r   r   r+   '   s    zSimpleQueue._make_methods)r   r   r   r+   r(   r   r   r&   r   r)   &   s   r)   )
r
   Zmultiprocessing.queuesÚmultiprocessingr   Zmultiprocessing.reductionr   r   Zqueuesr    r)   r   r   r   r   Ú<module>   s   	