U iÛf j ã @ s d Z ddlZddlZddlZddlZddlZddlmZ ddlm Z ddddd d ddd g Z eedƒrte dddg¡ eedƒre ddddg¡ eedƒr¢ej ZnejZG dd„ dƒZG dd„ deƒZG dd„ deƒZeedƒrîG dd„ dƒZG dd„ deƒZG dd„ dƒZG d d „ d ƒZeedƒrJG d!d„ deeƒZG d"d„ deeƒZG d#d„ deeƒZG d$d „ d eeƒZeedƒr¾G d%d„ deƒZG d&d„ deƒZG d'd„ deeƒZG d(d„ deeƒZG d)d „ d ƒZ G d*d„ de ƒZ!G d+d,„ d,eƒZ"G d-d„ de ƒZ#dS ).z0.4é N)ÚBufferedIOBase)Ú monotonicÚ BaseServerÚ TCPServerÚ UDPServerÚThreadingUDPServerÚThreadingTCPServerÚBaseRequestHandlerÚStreamRequestHandlerÚDatagramRequestHandlerÚThreadingMixInÚforkÚForkingUDPServerÚForkingTCPServerÚForkingMixInÚAF_UNIXÚUnixStreamServerÚUnixDatagramServerÚThreadingUnixStreamServerÚThreadingUnixDatagramServerÚPollSelectorc @ sš e Zd ZdZdd„ Zdd„ Zd%dd„Zd d „ Zdd„ Zd d„ Z dd„ Z dd„ Zdd„ Zdd„ Z dd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ ZdS )&r Nc C s || _ || _t ¡ | _d| _d S ©NF)Úserver_addressÚRequestHandlerClassÚ threadingZEventÚ_BaseServer__is_shut_downÚ_BaseServer__shutdown_request)Úselfr r © r ú1/opt/alt/python38/lib64/python3.8/socketserver.pyÚ__init__È s zBaseServer.__init__c C s d S ©Nr ©r r r r Úserver_activateÏ s zBaseServer.server_activateç à?c C st | j ¡ zRtƒ B}| | tj¡ | jsP| |¡}| jr:qP|rF| ¡ | ¡ q"W 5 Q R X W 5 d| _| j ¡ X d S r )r Úclearr ÚsetÚ_ServerSelectorÚregisterÚ selectorsÚ EVENT_READÚselectÚ_handle_request_noblockÚservice_actions)r Z poll_intervalÚselectorÚreadyr r r Ú serve_forever× s zBaseServer.serve_foreverc C s d| _ | j ¡ d S ©NT)r r Úwaitr" r r r Úshutdownô s zBaseServer.shutdownc C s d S r! r r" r r r r- þ s zBaseServer.service_actionsc C s¸ | j ¡ }|d kr| j}n| jd k r0t|| jƒ}|d k rBtƒ | }tƒ f}| | tj¡ | |¡}|rz| ¡ W 5 Q R £ S |d k rX|tƒ }|dk rX| ¡ W 5 Q R £ S qXW 5 Q R X d S )Nr )ÚsocketZ gettimeoutÚtimeoutÚminÚtimer' r( r) r* r+ r, Úhandle_timeout)r r5 Zdeadliner. r/ r r r Úhandle_request s zBaseServer.handle_requestc C s– z| ¡ \}}W n tk r& Y d S X | ||¡rˆz| ||¡ W q’ tk rn | ||¡ | |¡ Y q’ | |¡ ‚ Y q’X n | |¡ d S r! )Úget_requestÚOSErrorÚverify_requestÚprocess_requestÚ ExceptionÚhandle_errorÚshutdown_request©r ÚrequestÚclient_addressr r r r, / s z"BaseServer._handle_request_noblockc C s d S r! r r" r r r r8 F s zBaseServer.handle_timeoutc C s dS r1 r rA r r r r<