iqddlZddlZddlZddlmZddlmZeedrddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZGdde jZdZGd d eZd Zd Zd ZdZdeiZedkruddlTeeZeddgZedejedeZ e ge_!ddl"m#Z#e#dZ$e$%dddde&ee$edSdS)N)isapicon)SimpleExtensionisapidllhandle)InternalReloadExceptionc eZdZdZdZdZdS)ReloadWatcherThreadcd|_t|_|jds|jdr|jdd|_t jt j|jdtj |_ tj |dS)NFco)change_detected__file__filenameendswith win32fileFindFirstChangeNotificationospathdirnamewin32conFILE_NOTIFY_CHANGE_LAST_WRITEhandle threadingThread__init__selfs @C:\PYTHON\_runtimes\venv\Lib\site-packages\isapi/samples/test.pyrzReloadWatcherThread.__init__s$  = ! !# & & /$-*@*@*E*E / M#2#.DM; GOODM * *   2   !!$'''''ctj|jtj} t j|jtj}tj |jn3#tj $r!}|j tj krYd}~dSd}~wwxYwtj|jtj}||krtdd|_|})Nz+Detected file change - flagging for reload.T)rstatrST_MTIME win32eventWaitForSingleObjectrINFINITErFindNextChangeNotificationerrorwinerrorERROR_INVALID_HANDLEprintr )r last_timercdetails this_times rrunzReloadWatcherThread.run)sGDM**4=9  & 3DKATUU4T[AAAA#   #x'DDD    ..t}=II%%CDDD'+$%  &s=A**B9BBc8tj|jdSN)rFindCloseChangeNotificationrrs rstopzReloadWatcherThread.stop:s-dk:::::rN)__name__ __module__ __qualname__rr0r4rrrrsA ( ( (&&&";;;;;rrcLtd|dS)NzTransmit complete!)r+close)ecbhFilecbIOerrCodes rTransmitFileCallbackr?>s" IIKKKKKrc$eZdZdZdZdZdZdS) ExtensionzPython test Extensionc^t|_|jdSr2)rreload_watcherstartrs rrzExtension.__init__Hs+133 !!#####rc  |jjrtdt|ddrt jt jz}tj tt j ddt j |d}tjtjztjz} |t&|t)|ddddd| n#|xYw|dddtd|td |d |td ||tjS) Nz Doing reload UNICODE_URLztest.pyrz200 OKzContent-Type: text/html z )filezThe root of this site is at/z)rCr r+rGetServerVariablerrFILE_FLAG_SEQUENTIAL_SCANFILE_FLAG_OVERLAPPEDr CreateFiler GENERIC_READ OPEN_EXISTINGr HSE_IO_ASYNCHSE_IO_DISCONNECT_AFTER_SENDHSE_IO_SEND_HEADERS TransmitFiler?intCloseSendResponseHeaders MapURLToPathr:HSE_STATUS_SUCCESS)rr; file_flagshfileflagss rHttpExtensionProczExtension.HttpExtensionProcLs   . * . ! ! !) )   / / 8 8 C C* 2X5RR (%&E%78./    (JJ        # #H.OQR S S S .s + + + + /1A1A#1F1FS Q Q Q Q " - - - - IIKKK**s >/C..Dc8|jdSr2)rCr4)rstatuss rTerminateExtensionzExtension.TerminateExtensions   """""rN)r5r6r7__doc__rr[r^r8rrrArAEsH$$$4+4+4+l#####rrActSr2)rAr8rr__ExtensionFactory__ras ;;rc0|jr|j|_dSdSr2) description Descriptionparamsoptionss rPreInstallDirectoryrhs*1$011rc^ttdtddS)NzThe sample has been installed.z"Point your browser to /PyISAPITestr+res r PostInstallrks/ GGG *+++ ./////rc$tddS)zQuery the status of somethingzEverything seems to be fine!Nrj)rglogargs rstatus_handlerros ()))))rr]__main__)*)rkrq)rAFlags PyISAPITestreplace)Namerd ScriptMapsScriptMapUpdate PreInstall) OptionParserz --descriptionstorez3custom description to use for the virtual directory)actionhelp) opt_parsercustom_arg_handlers)'rr"sysisapir isapi.simplerhasattrwin32traceutilrrr$rr)rrrr?rArarhrkrorr5 isapi.installISAPIParametersrfScriptMapParamssmVirtualDirParametersr_vd VirtualDirsoptparseryparser add_optionHandleCommandLiner8rrrsY  (((((( 73 !!)))))) ;;;;;)*;;;D>#>#>#>#>#>#>#>#D 111000***  0 z _ 5 5 5F /Cq 1 1 1 2B   %!&    BF%%%%%% \"  F   B 67J=r