diff options
author | shmel1k <shmel1k@ydb.tech> | 2023-11-26 18:16:14 +0300 |
---|---|---|
committer | shmel1k <shmel1k@ydb.tech> | 2023-11-26 18:43:30 +0300 |
commit | b8cf9e88f4c5c64d9406af533d8948deb050d695 (patch) | |
tree | 218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py2/twisted/internet/_baseprocess.py | |
parent | 523f645a83a0ec97a0332dbc3863bb354c92a328 (diff) | |
download | ydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz |
add kikimr_configure
Diffstat (limited to 'contrib/python/Twisted/py2/twisted/internet/_baseprocess.py')
-rw-r--r-- | contrib/python/Twisted/py2/twisted/internet/_baseprocess.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/contrib/python/Twisted/py2/twisted/internet/_baseprocess.py b/contrib/python/Twisted/py2/twisted/internet/_baseprocess.py new file mode 100644 index 0000000000..f02eff7aba --- /dev/null +++ b/contrib/python/Twisted/py2/twisted/internet/_baseprocess.py @@ -0,0 +1,66 @@ +# -*- test-case-name: twisted.test.test_process -*- +# Copyright (c) Twisted Matrix Laboratories. +# See LICENSE for details. + +""" +Cross-platform process-related functionality used by different +L{IReactorProcess} implementations. +""" + +from twisted.python.reflect import qual +from twisted.python.deprecate import getWarningMethod +from twisted.python.failure import Failure +from twisted.python.log import err + +_missingProcessExited = ("Since Twisted 8.2, IProcessProtocol.processExited " + "is required. %s must implement it.") + + + +class BaseProcess(object): + pid = None + status = None + lostProcess = 0 + proto = None + + def __init__(self, protocol): + self.proto = protocol + + + def _callProcessExited(self, reason): + default = object() + processExited = getattr(self.proto, 'processExited', default) + if processExited is default: + getWarningMethod()( + _missingProcessExited % (qual(self.proto.__class__),), + DeprecationWarning, stacklevel=0) + else: + try: + processExited(Failure(reason)) + except: + err(None, "unexpected error in processExited") + + + def processEnded(self, status): + """ + This is called when the child terminates. + """ + self.status = status + self.lostProcess += 1 + self.pid = None + self._callProcessExited(self._getReason(status)) + self.maybeCallProcessEnded() + + + def maybeCallProcessEnded(self): + """ + Call processEnded on protocol after final cleanup. + """ + if self.proto is not None: + reason = self._getReason(self.status) + proto = self.proto + self.proto = None + try: + proto.processEnded(Failure(reason)) + except: + err(None, "unexpected error in processEnded") |