aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Twisted/py2/twisted/internet/_baseprocess.py
diff options
context:
space:
mode:
authorshmel1k <shmel1k@ydb.tech>2023-11-26 18:16:14 +0300
committershmel1k <shmel1k@ydb.tech>2023-11-26 18:43:30 +0300
commitb8cf9e88f4c5c64d9406af533d8948deb050d695 (patch)
tree218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py2/twisted/internet/_baseprocess.py
parent523f645a83a0ec97a0332dbc3863bb354c92a328 (diff)
downloadydb-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.py66
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")