| Index: third_party/twisted_8_1/twisted/flow/flow.py
|
| diff --git a/third_party/twisted_8_1/twisted/flow/flow.py b/third_party/twisted_8_1/twisted/flow/flow.py
|
| deleted file mode 100644
|
| index d7501099f6d03c70ff1f6472df10a32d0c938165..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/flow/flow.py
|
| +++ /dev/null
|
| @@ -1,102 +0,0 @@
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -#
|
| -# Author: Clark Evans (cce@clarkevans.com)
|
| -#
|
| -
|
| -"""
|
| -flow -- asynchronous data flows using generators
|
| -
|
| -This module provides a mechanism for using async data flows through the use of
|
| -generators. The basic idea of flow is that when ever you require data from a
|
| -producer, you yield the producer. If the producer is ready, then you can call
|
| -producer.next() to fetch the incoming data. Otherwise, the underlying
|
| -controller will suspend the operation to try again later.
|
| -
|
| -For example, here is a simple 'printer' which consumes items from its source by
|
| -printing them. Note that to get a new item, it first yields the data source
|
| -and then calls source.next()::
|
| -
|
| - from __future__ import generators
|
| - from twisted.flow import flow
|
| - from twisted.internet import reactor, defer
|
| -
|
| - def printer(source):
|
| - source = flow.wrap(source)
|
| - while True:
|
| - yield source
|
| - print source.next()
|
| -
|
| - someFlowSource = [\"one\", flow.Cooperate(1), \"two\"]
|
| -
|
| - d = flow.Deferred(printer(someFlowSource))
|
| - d.addCallback(lambda _: reactor.stop())
|
| - reactor.run()
|
| -
|
| -In the example above, there are three objects imported from the flow module::
|
| -
|
| - - flow.wrap converts many data sources such as lists, generators, and
|
| - deferreds, into a special instruction object, a Stage. In this case, a
|
| - simple list is wrapped.
|
| -
|
| - - flow.Deferred is a flow Controller which executes the stage passed to it,
|
| - aggregating all results into a list which is passed to the deferred's
|
| - callback. In this case, the result list is empty, but the callback is
|
| - used to stop the reactor after the printing has finished.
|
| -
|
| - - flow.Cooperate is a special instruction object which is used by the flow
|
| - Controller. In this case, the the flow pauses for one second between \"one\"
|
| - and \"two\".
|
| -
|
| -
|
| -Most classes in the flow module an Instruction, either a CallLater or a Stage.
|
| -A Stage instruction is used to wrap various sorts of producers, anything from a
|
| -simple string to Callback functions. Some stages can be constructed directly,
|
| -such as Zip, Concurrent, Merge, Callback, or Threaded. But in most cases, in
|
| -particular _String, _List, _Iterable, and _Deferred, state construction is
|
| -handled through the wrap function. Stages can yield other stages to build a
|
| -processing chain, results which are returned to the previous stage, or a
|
| -CallLater instruction which causes the whole operation to be suspended.
|
| -
|
| -
|
| -Typically, the CallLater instructions as passed up the call stack till the top
|
| -level, or Controller. The controller then typically returns control, but
|
| -registers itself to be called later. Once called again, the controller sets up
|
| -the call stack and resumes the top level generator. There is a special
|
| -CallLater, Cooperate, which simply resumes the chain of stages at a later time.
|
| -Some stages, Callback, _Deferred, and Threaded have their own special CallLater
|
| -which handles the process of resuming flow for their specific case.
|
| -
|
| -The inheritence hierarchy defined here looks like this::
|
| -
|
| - Instruction
|
| - CallLater
|
| - Cooperate
|
| - Stage
|
| - # private stages (use flow.wrap)
|
| - _String
|
| - _List
|
| - _Iterable
|
| - _Deferred
|
| - # public stages
|
| - Map
|
| - Zip
|
| - Concurrent
|
| - Merge
|
| - Block
|
| - Callback*
|
| - Threaded*
|
| - Controller
|
| - Deferred
|
| - Block
|
| - Protocol
|
| -
|
| -"""
|
| -
|
| -from twisted.flow.base import *
|
| -from twisted.flow.stage import *
|
| -from twisted.flow.pipe import *
|
| -from twisted.flow.wrap import wrap
|
| -from twisted.flow.controller import Deferred, Block
|
| -from twisted.flow.protocol import makeProtocol, Protocol
|
|
|