;ς τζ^Ac@sˆdZdklZdklZdkZdefd„ƒYZdeifd„ƒYZ de fd „ƒYZ d efd „ƒYZ dS( sΖThis module allows a caller to invoke methods on another process. It is really part of the proxy module, but separate because it imports some GTK functions which a slave must not do. EXPERIMENTAL. (s generators(sProxyNs MasterObjectcBs/tZdZdZd„Zd„Zd„ZRS(s¦Invoking a method on a MasterObject invokes the corresponding method on the slave object. The return value is a ResponseBlocker from which the response can be read.icCs ||_dS(N(smastersselfs_master(sselfsmaster((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys__init__scs‡‡d†}|SdS(NcsHˆid7_ˆiiˆiƒ}ˆiiˆiˆ|fƒ|SdS(Ni(sselfs_serials_masters _add_blockersrequests write_objectsnamesargs(sargssrequest(sselfsname(sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pysmethods(smethod(sselfsnamesmethod((sselfsnamesZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys __getattr__scCs|iiƒdS(s.Calls MasterProxy.finish() for our MasterProxyN(sselfs_mastersfinish(sself((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys finish_proxys(s__name__s __module__s__doc__s_serials__init__s __getattr__s finish_proxy(((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys MasterObject s   sRequestBlockercBsGtZdZd„ZeZeZeZeeƒZ d„Z d„Z RS(s-The blocker is triggered when the slave object sends a reply to our method call. You can then call get() to get the result, eg: blocker = master.method() yield blocker print blocker.result If the remote method raised an exception, accessing 'isresult' will raise it rather than returning it. cCs-|itj o |i‚ntdƒ‚dS(Ns(No result yet! Yield this blocker first.(sselfserrorsNones Exception(sself((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys_error-s cCs&tii|ƒ||_||_dS(N(staskssBlockers__init__sselfsmastersserial(sselfsmastersserial((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys__init__7s cCsY|i pt‚|ii|iƒt|tƒo ||_ n ||_ |i ƒdS(s)Store the result and trigger our blocker.N( sselfshappenedsAssertionErrorsmasters_remove_blockersserials isinstancesdatas Exceptionserrorsresultstrigger(sselfsdata((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pysadd<s  ( s__name__s __module__s__doc__s_errorsNonesmastersserialserrorspropertysresults__init__sadd(((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pysRequestBlocker!s    sLostConnectioncBstZRS(N(s__name__s __module__(((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pysLostConnectionFss MasterProxycBs;tZdZd„Zd„Zd„Zd„Zd„ZRS(siInvoking operations on MasterProxy.root will invoke the same operation on the SlaveProxy's slave_object.cCs/ti|||ƒt|ƒ|_h|_dS(N(sProxys__init__sselfsto_slaves from_slaves MasterObjectsroots_queue(sselfsto_slaves from_slave((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys__init__MscCs$|\}}|i|i|ƒdS(N(svaluesserialsdatasselfs_queuesadd(sselfsvaluesdatasserial((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys _dispatchRs cCs;||ijpt‚t||ƒ}||i|<|SdS(N(sserialsselfs_queuesAssertionErrorsRequestBlockersrequest(sselfsserialsrequest((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys _add_blockerVs cCs|i|=dS(N(sselfs_queuesserial(sselfsserial((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys_remove_blocker\scCsCx*|iiƒD]}|itdƒƒqW|i pt‚dS(NsLost connection to su proxy(sselfs_queuesvaluessxsaddsLostConnectionsAssertionError(sselfsx((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pyslost_connection_s(s__name__s __module__s__doc__s__init__s _dispatchs _add_blockers_remove_blockerslost_connection(((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys MasterProxyIs     ( s__doc__s __future__s generatorssproxysProxystaskssobjects MasterObjectsBlockersRequestBlockers ExceptionsLostConnections MasterProxy(staskssLostConnections MasterProxys generatorssRequestBlockers MasterObjectsProxy((sZ/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/master_proxy.pys?s   %