3
OÉ6b  ã               @   sX   d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 dd„ Z
G d	d
„ d
eƒZdS )z2Helpers for the 'hello' and legacy hello commands.é    N)Úimap)Úcommon)ÚHelloCompat)ÚSERVER_TYPEc             C   s´   | j dƒstjS | j dƒr tjS | j dƒr0tjS | j dƒr–| j dƒrJtjS | j tjƒr\tjS | j tj	ƒrntjS | j dƒr~tj
S | j dƒrŽtjS tjS n| j dƒd	krªtjS tjS d
S )z0Determine the server type from a hello response.ÚokÚ	serviceIdZisreplicasetÚsetNameÚhiddenZ	secondaryZarbiterOnlyÚmsgZisdbgridN)Úgetr   ÚUnknownÚLoadBalancerZRSGhostZRSOtherr   ZPRIMARYÚ	RSPrimaryZLEGACY_PRIMARYÚRSSecondaryZ	RSArbiterÚMongosÚ
Standalone)Údoc© r   úL/var/www/html/sandeepIITI/myenv/lib/python3.6/site-packages/pymongo/hello.pyÚ_get_server_type   s*    






r   c               @   sV  e Zd ZdZd?Zd@dd	„Zed
d„ ƒZedd„ ƒZedd„ ƒZ	edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZed d!„ ƒZed"d#„ ƒZed$d%„ ƒZed&d'„ ƒZed(d)„ ƒZed*d+„ ƒZed,d-„ ƒZed.d/„ ƒZed0d1„ ƒZed2d3„ ƒZed4d5„ ƒZed6d7„ ƒZed8d9„ ƒZed:d;„ ƒZed<d=„ ƒZ d>S )AÚHelloz'Parse a hello response from the server.Ú_docÚ_server_typeÚ_is_writableÚ_is_readableÚ
_awaitableFc             C   sJ   t |ƒ| _|| _| jtjtjtjtjfk| _| j	tj
kp<| j| _|| _d S )N)r   r   r   r   r   r   r   r   r   Úserver_typer   r   r   )Úselfr   Ú	awaitabler   r   r   Ú__init__:   s    
zHello.__init__c             C   s
   | j jƒ S )zUThe complete hello command response document.

        .. versionadded:: 3.4
        )r   Úcopy)r   r   r   r   ÚdocumentH   s    zHello.documentc             C   s   | j S )N)r   )r   r   r   r   r   P   s    zHello.server_typec          	   C   s8   t ttjtj| jjdg ƒ| jjdg ƒ| jjdg ƒƒƒƒS )z;List of hosts, passives, and arbiters known to this server.ÚhostsZpassivesZarbiters)Úsetr   r   Ú
clean_nodeÚ	itertoolsÚchainr   r   )r   r   r   r   Ú	all_hostsT   s    zHello.all_hostsc             C   s   | j jdi ƒS )z&Replica set member tags or empty dict.Útags)r   r   )r   r   r   r   r(   \   s    z
Hello.tagsc             C   s$   | j jdƒrtj| j d ƒS dS dS )z8This server's opinion about who the primary is, or None.ÚprimaryN)r   r   r   Zpartition_node)r   r   r   r   r)   a   s    zHello.primaryc             C   s   | j jdƒS )zReplica set name or None.r   )r   r   )r   r   r   r   Úreplica_set_namei   s    zHello.replica_set_namec             C   s   | j jdtjƒS )NZmaxBsonObjectSize)r   r   r   ZMAX_BSON_SIZE)r   r   r   r   Úmax_bson_sizen   s    zHello.max_bson_sizec             C   s   | j jdd| j ƒS )NZmaxMessageSizeBytesé   )r   r   r+   )r   r   r   r   Úmax_message_sizer   s    zHello.max_message_sizec             C   s   | j jdtjƒS )NZmaxWriteBatchSize)r   r   r   ZMAX_WRITE_BATCH_SIZE)r   r   r   r   Úmax_write_batch_sizev   s    zHello.max_write_batch_sizec             C   s   | j jdtjƒS )NZminWireVersion)r   r   r   ZMIN_WIRE_VERSION)r   r   r   r   Úmin_wire_versionz   s    zHello.min_wire_versionc             C   s   | j jdtjƒS )NZmaxWireVersion)r   r   r   ZMAX_WIRE_VERSION)r   r   r   r   Úmax_wire_version~   s    zHello.max_wire_versionc             C   s   | j jdƒS )NZ
setVersion)r   r   )r   r   r   r   Úset_version‚   s    zHello.set_versionc             C   s   | j jdƒS )NZ
electionId)r   r   )r   r   r   r   Úelection_id†   s    zHello.election_idc             C   s   | j jdƒS )Nz$clusterTime)r   r   )r   r   r   r   Úcluster_timeŠ   s    zHello.cluster_timec             C   s   | j jdƒS )NZlogicalSessionTimeoutMinutes)r   r   )r   r   r   r   Úlogical_session_timeout_minutesŽ   s    z%Hello.logical_session_timeout_minutesc             C   s   | j S )N)r   )r   r   r   r   Úis_writable’   s    zHello.is_writablec             C   s   | j S )N)r   )r   r   r   r   Úis_readable–   s    zHello.is_readablec             C   s   | j jdƒ}|rtj|ƒS d S )NÚme)r   r   r   r$   )r   r7   r   r   r   r7   š   s    zHello.mec             C   s   | j jdi ƒjdƒS )NZ	lastWriteZlastWriteDate)r   r   )r   r   r   r   Úlast_write_date    s    zHello.last_write_datec             C   s   | j jdƒS )NÚcompression)r   r   )r   r   r   r   Úcompressors¤   s    zHello.compressorsc             C   s   | j jdg ƒS )z³Supported authentication mechanisms for the current user.

        For example::

            >>> hello.sasl_supported_mechs
            ["SCRAM-SHA-1", "SCRAM-SHA-256"]

        ZsaslSupportedMechs)r   r   )r   r   r   r   Úsasl_supported_mechs¨   s    
zHello.sasl_supported_mechsc             C   s   | j jdƒS )z"The speculativeAuthenticate field.ZspeculativeAuthenticate)r   r   )r   r   r   r   Úspeculative_authenticate´   s    zHello.speculative_authenticatec             C   s   | j jdƒS )NZtopologyVersion)r   r   )r   r   r   r   Útopology_version¹   s    zHello.topology_versionc             C   s   | j S )N)r   )r   r   r   r   r   ½   s    zHello.awaitablec             C   s   | j jdƒS )Nr   )r   r   )r   r   r   r   Ú
service_idÁ   s    zHello.service_idc             C   s   | j jddƒS )NZhelloOkF)r   r   )r   r   r   r   Úhello_okÅ   s    zHello.hello_okN)r   r   r   r   r   )F)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   Úpropertyr!   r   r'   r(   r)   r*   r+   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r:   r;   r<   r=   r   r>   r?   r   r   r   r   r   5   s<    
r   )rC   r%   Zbson.py3compatr   Zpymongor   Zpymongo.hello_compatr   Zpymongo.server_typer   r   Úobjectr   r   r   r   r   Ú<module>   s   