U
    dR…fz  ã                   @   s4   d dl mZmZ G dd„ deƒZG dd„ deƒZdS )é    )ÚTMultiplexedProcessorÚTMessageTypec                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTMultiplexedProtocolz„Multiplex the protocol by prepend service name to api for every api call.
    Can be used together with all original protocols.
    c                 C   s   || _ || _d S ©N)Úservice_nameÚ_proto)ÚselfÚprotor   © r
   ú@/tmp/pip-unpacked-wheel-jqs7l_7o/thriftpy2/protocol/multiplex.pyÚ__init__   s    zTMultiplexedProtocol.__init__c                 C   s   t | j|ƒS r   )Úgetattrr   )r   Únamer
   r
   r   Ú__getattr__   s    z TMultiplexedProtocol.__getattr__c                 C   sB   |t jt jfkr.| j | jtj | ||¡ n| j |||¡ d S r   )r   ÚCALLZONEWAYr   Úwrite_message_beginr   r   Z	SEPARATOR)r   r   ÚttypeZseqidr
   r
   r   r      s     þz(TMultiplexedProtocol.write_message_beginN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r
   r
   r
   r   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTMultiplexedProtocolFactoryc                 C   s   || _ || _d S r   )Ú_proto_factoryr   )r   Zproto_factoryr   r
   r
   r   r      s    z$TMultiplexedProtocolFactory.__init__c                 C   s   | j  |¡}t|| jƒS r   )r   Úget_protocolr   r   )r   Ztransr	   r
   r
   r   r       s    z(TMultiplexedProtocolFactory.get_protocolN)r   r   r   r   r   r
   r
   r
   r   r      s   r   N)Zthriftpy2.thriftr   r   Úobjectr   r   r
   r
   r
   r   Ú<module>   s   