aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Twisted/py2/twisted/application/twist/_twist.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/application/twist/_twist.py
parent523f645a83a0ec97a0332dbc3863bb354c92a328 (diff)
downloadydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz
add kikimr_configure
Diffstat (limited to 'contrib/python/Twisted/py2/twisted/application/twist/_twist.py')
-rw-r--r--contrib/python/Twisted/py2/twisted/application/twist/_twist.py128
1 files changed, 128 insertions, 0 deletions
diff --git a/contrib/python/Twisted/py2/twisted/application/twist/_twist.py b/contrib/python/Twisted/py2/twisted/application/twist/_twist.py
new file mode 100644
index 0000000000..ec8bc34739
--- /dev/null
+++ b/contrib/python/Twisted/py2/twisted/application/twist/_twist.py
@@ -0,0 +1,128 @@
+# -*- test-case-name: twisted.application.twist.test.test_twist -*-
+# Copyright (c) Twisted Matrix Laboratories.
+# See LICENSE for details.
+
+"""
+Run a Twisted application.
+"""
+
+import sys
+
+from twisted.python.usage import UsageError
+from ..service import Application, IService
+from ..runner._exit import exit, ExitStatus
+from ..runner._runner import Runner
+from ._options import TwistOptions
+from twisted.application.app import _exitWithSignal
+from twisted.internet.interfaces import _ISupportsExitSignalCapturing
+
+
+
+class Twist(object):
+ """
+ Run a Twisted application.
+ """
+
+ @staticmethod
+ def options(argv):
+ """
+ Parse command line options.
+
+ @param argv: Command line arguments.
+ @type argv: L{list}
+
+ @return: The parsed options.
+ @rtype: L{TwistOptions}
+ """
+ options = TwistOptions()
+
+ try:
+ options.parseOptions(argv[1:])
+ except UsageError as e:
+ exit(ExitStatus.EX_USAGE, "Error: {}\n\n{}".format(e, options))
+
+ return options
+
+
+ @staticmethod
+ def service(plugin, options):
+ """
+ Create the application service.
+
+ @param plugin: The name of the plugin that implements the service
+ application to run.
+ @type plugin: L{str}
+
+ @param options: Options to pass to the application.
+ @type options: L{twisted.python.usage.Options}
+
+ @return: The created application service.
+ @rtype: L{IService}
+ """
+ service = plugin.makeService(options)
+ application = Application(plugin.tapname)
+ service.setServiceParent(application)
+
+ return IService(application)
+
+
+ @staticmethod
+ def startService(reactor, service):
+ """
+ Start the application service.
+
+ @param reactor: The reactor to run the service with.
+ @type reactor: L{twisted.internet.interfaces.IReactorCore}
+
+ @param service: The application service to run.
+ @type service: L{IService}
+ """
+ service.startService()
+
+ # Ask the reactor to stop the service before shutting down
+ reactor.addSystemEventTrigger(
+ "before", "shutdown", service.stopService
+ )
+
+
+ @staticmethod
+ def run(twistOptions):
+ """
+ Run the application service.
+
+ @param twistOptions: Command line options to convert to runner
+ arguments.
+ @type twistOptions: L{TwistOptions}
+ """
+ runner = Runner(
+ reactor=twistOptions["reactor"],
+ defaultLogLevel=twistOptions["logLevel"],
+ logFile=twistOptions["logFile"],
+ fileLogObserverFactory=twistOptions["fileLogObserverFactory"],
+ )
+ runner.run()
+ reactor = twistOptions["reactor"]
+ if _ISupportsExitSignalCapturing.providedBy(reactor):
+ if reactor._exitSignal is not None:
+ _exitWithSignal(reactor._exitSignal)
+
+
+ @classmethod
+ def main(cls, argv=sys.argv):
+ """
+ Executable entry point for L{Twist}.
+ Processes options and run a twisted reactor with a service.
+
+ @param argv: Command line arguments.
+ @type argv: L{list}
+ """
+ options = cls.options(argv)
+
+ reactor = options["reactor"]
+ service = cls.service(
+ plugin=options.plugins[options.subCommand],
+ options=options.subOptions,
+ )
+
+ cls.startService(reactor, service)
+ cls.run(options)