proxy.core.work.fd package#

Submodules#

Module contents#

proxy.py#

⚡⚡⚡ Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on Network monitoring, controls & Application development, testing, debugging.

copyright
  1. 2013-present by Abhinav Singh and contributors.

license

BSD, see LICENSE for more details.

class proxy.core.work.fd.LocalFdExecutor(*args: Any, **kwargs: Any)[source]#

Bases: proxy.core.work.fd.fd.ThreadlessFdExecutor[proxy.common.backports.NonBlockingQueue]

A threadless executor implementation which uses a queue to receive new work.

_abc_impl = <_abc._abc_data object>#
initialize(work: Any) None[source]#
property loop: Optional[asyncio.events.AbstractEventLoop]#
receive_from_work_queue() bool[source]#

Work queue is ready to receive new work.

Receive it and call work_on_tcp_conn.

Return True to tear down the loop.

work_queue_fileno() Optional[int][source]#

If work queue must be selected before calling receive_from_work_queue then implementation must return work queue fd.

class proxy.core.work.fd.RemoteFdExecutor(*args: Any, **kwargs: Any)[source]#

Bases: proxy.core.work.fd.fd.ThreadlessFdExecutor[multiprocessing.connection.Connection]

A threadless executor implementation which receives work over a connection.

NOTE: RemoteExecutor uses recv_handle to accept file descriptors.

TODO: Refactor and abstract recv_handle part so that a threaded remote executor can also accept work over a connection. Currently, remote executors must be running in a process.

_abc_impl = <_abc._abc_data object>#
close_work_queue() None[source]#

Only called if work_queue_fileno returns an integer. If an fd is select-able for work queue, make sure to close the work queue fd now.

property loop: Optional[asyncio.events.AbstractEventLoop]#
receive_from_work_queue() bool[source]#

Work queue is ready to receive new work.

Receive it and call work_on_tcp_conn.

Return True to tear down the loop.

work_queue_fileno() Optional[int][source]#

If work queue must be selected before calling receive_from_work_queue then implementation must return work queue fd.

class proxy.core.work.fd.ThreadlessFdExecutor(iid: str, work_queue: proxy.core.work.threadless.T, flags: argparse.Namespace, event_queue: Optional[EventQueue] = None)[source]#

Bases: proxy.core.work.threadless.Threadless[proxy.core.work.fd.fd.T]

A threadless executor which handles file descriptors and works with read/write events over a socket.

_abc_impl = <_abc._abc_data object>#
abstract property loop: Optional[asyncio.events.AbstractEventLoop]#
abstract receive_from_work_queue() bool[source]#

Work queue is ready to receive new work.

Receive it and call work_on_tcp_conn.

Return True to tear down the loop.

work(*args: Any) None[source]#
abstract work_queue_fileno() Optional[int][source]#

If work queue must be selected before calling receive_from_work_queue then implementation must return work queue fd.