OXIESEC PANEL
- Current Dir:
/
/
usr
/
lib
/
python3
/
dist-packages
/
twisted
/
python
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
03/31/2022 06:22:38 AM
rwxr-xr-x
📄
__init__.py
674 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📁
__pycache__
-
03/31/2022 06:22:39 AM
rwxr-xr-x
📄
_appdirs.py
788 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📄
_inotify.py
3.37 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_oldstyle.py
2.53 KB
09/08/2017 10:38:35 AM
rw-r--r--
📁
_pydoctortemplates
-
03/31/2022 06:22:38 AM
rwxr-xr-x
📄
_release.py
18.03 KB
09/08/2017 10:38:35 AM
rw-r--r--
📄
_sendmsg.c
15.42 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_setup.py
12.6 KB
09/23/2017 05:51:46 AM
rw-r--r--
📄
_shellcomp.py
23.76 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_textattributes.py
8.87 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_tzhelper.py
3.12 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_url.py
253 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📄
compat.py
21.91 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
components.py
13.96 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
constants.py
544 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📄
context.py
3.93 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
deprecate.py
26.15 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
failure.py
23.38 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
fakepwd.py
5.99 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
filepath.py
57.51 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
formmethod.py
11.19 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
htmlizer.py
3.27 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
lockfile.py
7.54 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
log.py
21.95 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
logfile.py
9.85 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
modules.py
26.5 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
monkey.py
2.17 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
procutils.py
1.39 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
randbytes.py
3.87 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
rebuild.py
9.04 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
reflect.py
19.02 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
release.py
1.16 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
roots.py
7.23 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
runtime.py
6.13 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
sendmsg.py
3.34 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
shortcut.py
2.2 KB
09/08/2017 10:38:35 AM
rw-r--r--
📄
syslog.py
3.64 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
systemd.py
2.77 KB
09/08/2017 10:38:36 AM
rw-r--r--
📁
test
-
03/31/2022 06:22:38 AM
rwxr-xr-x
📄
text.py
5.35 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
threadable.py
3.22 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
threadpool.py
9.61 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
twisted-completion.zsh
1.33 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
url.py
244 bytes
09/08/2017 10:38:36 AM
rw-r--r--
📄
urlpath.py
8.87 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
usage.py
34.19 KB
03/22/2022 11:03:56 AM
rw-r--r--
📄
util.py
27.29 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
versions.py
322 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📄
win32.py
5.42 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
zippath.py
9.02 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
zipstream.py
9.53 KB
09/08/2017 10:38:36 AM
rw-r--r--
Editing: threadable.py
Close
# -*- test-case-name: twisted.python.test_threadable -*- # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ A module to provide some very basic threading primitives, such as synchronization. """ from __future__ import division, absolute_import from functools import wraps class DummyLock(object): """ Hack to allow locks to be unpickled on an unthreaded system. """ def __reduce__(self): return (unpickle_lock, ()) def unpickle_lock(): if threadingmodule is not None: return XLock() else: return DummyLock() unpickle_lock.__safe_for_unpickling__ = True def _synchPre(self): if '_threadable_lock' not in self.__dict__: _synchLockCreator.acquire() if '_threadable_lock' not in self.__dict__: self.__dict__['_threadable_lock'] = XLock() _synchLockCreator.release() self._threadable_lock.acquire() def _synchPost(self): self._threadable_lock.release() def _sync(klass, function): @wraps(function) def sync(self, *args, **kwargs): _synchPre(self) try: return function(self, *args, **kwargs) finally: _synchPost(self) return sync def synchronize(*klasses): """ Make all methods listed in each class' synchronized attribute synchronized. The synchronized attribute should be a list of strings, consisting of the names of methods that must be synchronized. If we are running in threaded mode these methods will be wrapped with a lock. """ if threadingmodule is not None: for klass in klasses: for methodName in klass.synchronized: sync = _sync(klass, klass.__dict__[methodName]) setattr(klass, methodName, sync) def init(with_threads=1): """Initialize threading. Don't bother calling this. If it needs to happen, it will happen. """ global threaded, _synchLockCreator, XLock if with_threads: if not threaded: if threadingmodule is not None: threaded = True class XLock(threadingmodule._RLock, object): def __reduce__(self): return (unpickle_lock, ()) _synchLockCreator = XLock() else: raise RuntimeError("Cannot initialize threading, platform lacks thread support") else: if threaded: raise RuntimeError("Cannot uninitialize threads") else: pass _dummyID = object() def getThreadID(): if threadingmodule is None: return _dummyID return threadingmodule.currentThread().ident def isInIOThread(): """Are we in the thread responsible for I/O requests (the event loop)? """ return ioThread == getThreadID() def registerAsIOThread(): """Mark the current thread as responsible for I/O requests. """ global ioThread ioThread = getThreadID() ioThread = None threaded = False # Define these globals which might be overwritten in init(). _synchLockCreator = None XLock = None try: import threading as threadingmodule except ImportError: threadingmodule = None else: init(True) __all__ = ['isInIOThread', 'registerAsIOThread', 'getThreadID', 'XLock']