;ò Û"„Gc@s\dZdkZdkZdkZdkZdkZdkZdkZdkZdZ dZ dZ dZ dZ dZdZd klZlZlZlZlZdkZdkZd eifd „ƒYZd eifd „ƒYZdeifd„ƒYZdeifd„ƒYZdfd„ƒYZdfd„ƒYZhadfd„ƒYZ d„Z!ha"ha#ha$dd„Z%e%Z&d„Z'd„Z(d„Z)e*d„Z+e*d„Z,d„Z-d „Z.e.Z/d!„Z0d"„Z1d#d$„Z2d#d%„Z3d&fd'„ƒYZ4e4ƒa5t5i6Z6t5i7Z7da8d(„Z9d)„Z:d*„Z;d#d+„Z<d,„Z=dS(-s3$Id: coro.py,v 1.1 2000/04/11 00:50:22 hassan Exp $Nii iiii °i À(sEALREADYs EINPROGRESSs EWOULDBLOCKs ECONNRESETsENOTCONNsCoroutineSocketErrorcBstZRS(N(s__name__s __module__(((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysCoroutineSocketError5ssCoroutineCondErrorcBstZRS(N(s__name__s __module__(((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysCoroutineCondError8ssCoroutineThreadErrorcBstZRS(N(s__name__s __module__(((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysCoroutineThreadError;ss TimeoutErrorcBstZRS(N(s__name__s __module__(((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys TimeoutError>sscoroutine_socketcBsÂtZdZed„Zd„Zd„Zdd„ZeZed„Z ed„Z ed„Z d „Z d „Z d „Zd „Zd „Zd„Zd„ZdZd„Zd„Zd„ZRS(s?socket that automatically suspends/resumes instead of blocking.cCs;||_|o'|iidƒd|_|iƒndS(Nii(ssocksselfssockets setblockings connecteds set_fileno(sselfssock((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys__init__Is   cCs|iiƒ|_dS(N(sselfssocketsfilenos_fileno(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys set_filenoPscCs |iSdS(N(sselfs_fileno(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysfilenoSsicCs6ti|||ƒ|_|iidƒ|iƒdS(Ni(ssocketsfamilystypesprotosselfs setblockings set_fileno(sselfsfamilystypesproto((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys create_socketVscCs÷tƒ}|tj o#ti|tiƒ|tƒ}n|tjo t d‚n¡|t |i (sselfs_waitingsgetsidsNonesthrdsCoroutineCondErrorsschedule(sselfsidsthrd((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pyswakeæs   cGsTt|iƒo@ti|iiƒƒ}|i|}|i|=t||ƒndS(N( slensselfs_waitingswhrandomschoiceskeyssidsthrdsschedulesargs(sselfsargssthrdsid((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pyswake_oneîs   cGs4x$|iiƒD]}t||ƒqWh|_dS(N(sselfs_waitingsvaluessthrdsschedulesargs(sselfsargssthrd((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pyswake_allõs( s__name__s __module__s__init__s__len__sNoneswaitswakeswake_oneswake_all(((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pyscoroutine_condÓs     sThreadcBsËtZdZeeefhd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z ed „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NicCsÙtidjo dt_ntidt_|i|_|tjod|i|_n ||_||_||_ ||_ d|_ d|_d|_d|_d|_ti|idƒ|_d|_t|_dS(Niÿÿÿiis thread_%dis initialized(sThreads _thread_countsselfs _thread_idsnamesNones_namestargets_targetsargss_argsskwargss_kwargss _resume_counts _total_times_alives_profiles _daemonics coroutinesnews_runs_cos_statussPRINT_LOG_LEVELSs _log_level(sselfsgroupstargetsnamesargsskwargs((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys__init__s$             cGs¥|io |id|_tiƒ}nd}|ioti|i|ƒ}nti|ifƒ}|io|o$tiƒ}|i |||_ n|SdS(Nii( sselfs_profiles _resume_countstimes start_times_alives coroutinesresumes_cosargssresultsend_times _total_time(sselfsargssresults start_timesend_time((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysresumes   cCst|ƒdS(N(sschedulesself(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysstart/scCsËymd|_d|_|t|i<|itjot|i|i |i ƒ}nt|i|i |i ƒ}Wn;t i j on'tƒ|_|it|iƒnXt|i=d|_d|_dS(Nisaliveisdead(sselfs_alives_statuss_current_threadss_cos_targetsNonesapplysruns_argss_kwargssresults coroutinesunwindscompact_tracebacks_errorslogs LOG_ERROR(sselfsresult((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys_run2s       cCs|io|iƒndS(N(sselfs_aliveskill(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys__del__Fs cCs"|ioti|iƒndS(N(sselfs_alives coroutineskills_co(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pyskillJs cCs|iddƒdS(Nisunregistered run method(sselfslog(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysrunNscCs ||_dS(N(sstatussselfs_profile(sselfsstatus((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysprofileQscCs-|ttƒjo td‚n ||_dS(Nserror log level out of bounds(slevelsranges LOG_LEVELSsCoroutineThreadErrorsselfs _log_level(sselfslevel((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys log_level_Us cCs~|ttƒjo td‚n||ijoJdtitiƒƒdd!}t i i d||i t |ƒfƒndS(Nserror log level out of boundss[%02d/%02d %02d:%02d:%02d]iis%s thread %d: %s (slevelsranges LOG_LEVELSsCoroutineThreadErrorsselfs _log_levelstimes localtimestime_strssyssstderrswrites _thread_idsstrsmessage(sselfslevelsmessagestime_str((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pyslog[s   cCs“|tj o#ti|tiƒ|tƒ}nzti fƒ}Wd|oyti |ƒWqlqlXnX|o |tjo t ‚n|SdS(N( stimeoutsNonesthe_event_lists insert_eventsselfstimes TIMEOUT_VALUEstriples coroutinesmainsretvals remove_events TimeoutError(sselfstimeoutstriplesretval((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysyield_fs #  cCs |iSdS(N(sselfs _thread_id(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys thread_idzscCs |iSdS(N(sselfs_name(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysgetName}scCs ||_dS(N(snamesselfs_name(sselfsname((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pyssetName€scCs |iSdS(N(sselfs_alive(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysisAliveƒscCs |iSdS(N(sselfs _daemonic(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysisDaemon†scCs ||_dS(N(sdaemonicsselfs _daemonic(sselfsdaemonic((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys setDaemon‰scCsGdGHdG|iGHdG|iGH|iodG|iGHdG|iGHndS(NsThread status:s id: s alive: s resume count:s execute time:(sselfs _thread_ids_alives_profiles _resume_counts _total_time(sself((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysstatusŒs     c Csw|iod|i|if}nd}|io d}nd}dt|ii|i |i ||t |ƒfSdS(Ns" resume_count: %d execute_time: %sssrunnings suspendeds<%s.%s id:%d %s %s%s at %x>( sselfs_profiles _resume_counts _total_timesps_alivesas__name__s __class__s _thread_ids_statussid(sselfsasp((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys__repr__”s   (s__name__s __module__s _thread_countsNones__init__sresumesstarts_runs__del__skillsrunsprofiles log_level_slogsyield_s thread_idsgetNamessetNamesisAlivesisDaemons setDaemonsstatuss__repr__(((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysThreads(                cCsÓtiƒ\}}}g}xPnoH|i|iii |iii t |i ƒƒ|i }| oPqq%W~|d\}}}dtitd„|ƒdƒd}|||ft |ƒt |ƒ|fSdS(Niiÿÿÿÿs[cCsti|dƒS(Ns|(sstringsjoinsx(sx((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysÁss] [s](ssyssexc_infostsvstbstbinfosappendstb_framesf_codes co_filenamesco_namesstrs tb_linenostb_nextsfilesfunctionslinesstringsjoinsmapsinfo(stbinfosfunctionsfilesinfostsvslinestb((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pyscompact_traceback®s    cCs$tƒ}|i|||ƒ|SdS(N(scoroutine_socketsss create_socketsfamilystypesproto(sfamilystypesprotoss((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys_socketÕs cOstd|d|d|ƒSdS(Nstargetsargsskwargs(sThreadsfunctionsargsskwargs(sfunctionsargsskwargs((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysnewÜscGs'td|d|ƒ}|iƒ|SdS(Nstargetsargs(sThreadsfunctionsargsstsstart(sfunctionsargsst((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pysspawnâs cGs4td|d|ƒ}|idƒ|iƒ|SdS(Nstargetsargsi(sThreadsfunctionsargssts setDaemonsstart(sfunctionsargsst((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys spawnDaemonçs  cCs|t|tiƒ}tiƒx!|D]\}}|i|ƒq0WWqdk}|i ƒqXqWdS(srun all pending coroutinesN( slenspendingsitemssrunnablesclearscsvsresumes tracebacks print_exc(scsrunnables tracebacksv((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys run_pendings     f30.0cCstptoþh}x!tiƒD]}ti||sVERSION_STRINGsbisectsossselectssocketsstringssysstimeswhrandomsUSE_POLLs LOG_LEVELSsPRINT_LOG_LEVELSs LOG_ERRORs LOG_VERBOSEs TIMEOUT_VALUEs BADF_ERRORserrnosEALREADYs EINPROGRESSs EWOULDBLOCKs ECONNRESETsENOTCONNs coroutines exceptionss ExceptionsCoroutineSocketErrorsCoroutineCondErrorsCoroutineThreadErrors TimeoutErrorscoroutine_socketscoroutine_conds_current_threadssThreadscompact_tracebacksread_sets write_setspendings_sockets make_socketsnewsspawns spawnDaemonsNonesschedulesyield_s thread_listscurrent_threadscurrents insert_threads run_pendingspoll_with_pollspoll_with_selects event_liststhe_event_listssleep_absolutessleep_relativesgIsDonesreset_event_loops_continue_event_loopsstop_event_loops event_loopsfind_broken_socket(5sspawnscurrent_threads TIMEOUT_VALUEs LOG_VERBOSEsyield_scompact_tracebackscoroutine_condsCoroutineThreadErrors LOG_LEVELSs TimeoutErrors run_pendingscurrentsVERSION_STRINGs ECONNRESETs_sockets EINPROGRESSs EWOULDBLOCKssleep_relatives insert_threads LOG_ERRORsselectsfind_broken_socketsnews_continue_event_loopsENOTCONNs event_loopsstringsThreads coroutines thread_listsUSE_POLLsCoroutineCondErrorsschedulessyss spawnDaemons BADF_ERRORs make_socketsPRINT_LOG_LEVELSsCoroutineSocketErrorssocketsbisectsreset_event_loopssleep_absoluteswhrandoms event_listscoroutine_socketspoll_with_pollsstop_event_loopstimes exceptionssEALREADYsosspoll_with_select((s=/mnt/gmirror/ports/devel/py-coro/work/coro_2001_02_02/coro.pys?sl        %  Ž+® !            7