Merge branch 'doc/machi-high-level-design-port' (unfinished/partial merge)
This commit is contained in:
commit
e1a6c3678e
12 changed files with 5761 additions and 331 deletions
|
@ -6,7 +6,27 @@ Erlang documentation, please use this link:
|
||||||
|
|
||||||
## Documents in this directory
|
## Documents in this directory
|
||||||
|
|
||||||
* __chain-self-management-sketch.org__ is an introduction to the
|
### chain-self-management-sketch.org
|
||||||
|
|
||||||
|
__chain-self-management-sketch.org__ is an introduction to the
|
||||||
self-management algorithm proposed for Machi. This algorithm is
|
self-management algorithm proposed for Machi. This algorithm is
|
||||||
(hoped to be) sufficient for managing the Chain Replication state of a
|
(hoped to be) sufficient for managing the Chain Replication state of a
|
||||||
Machi cluster.
|
Machi cluster.
|
||||||
|
|
||||||
|
### high-level-machi.pdf
|
||||||
|
|
||||||
|
__high-level-machi.pdf__ is an overview of the high level design for
|
||||||
|
Machi. Its abstract:
|
||||||
|
|
||||||
|
> Our goal is a robust & reliable, distributed, highly available large
|
||||||
|
> file store based upon write-once registers, append-only files, Chain
|
||||||
|
> Replication, and client-server style architecture. All members of
|
||||||
|
> the cluster store all of the files. Distributed load
|
||||||
|
> balancing/sharding of files is outside of the scope of this system.
|
||||||
|
> However, it is a high priority that this system be able to integrate
|
||||||
|
> easily into systems that do provide distributed load balancing,
|
||||||
|
> e.g., Riak Core. Although strong consistency is a major feature of
|
||||||
|
> Chain Replication, this document will focus mainly on eventual
|
||||||
|
> consistency features --- strong consistency design will be discussed
|
||||||
|
> in a separate document.
|
||||||
|
|
||||||
|
|
|
@ -5,20 +5,10 @@
|
||||||
#+SEQ_TODO: TODO WORKING WAITING DONE
|
#+SEQ_TODO: TODO WORKING WAITING DONE
|
||||||
|
|
||||||
* 1. Abstract
|
* 1. Abstract
|
||||||
Yo, this is the first draft of a document that attempts to describe a
|
The high level design of the Machi "chain manager" has moved to the
|
||||||
proposed self-management algorithm for Machi's chain replication.
|
[[high-level-chain-manager.pdf][Machi chain manager high level design]] document.
|
||||||
Welcome! Sit back and enjoy the disjointed prose.
|
|
||||||
|
|
||||||
We attempt to describe first the self-management and self-reliance
|
We try to discuss the network partition simulator that the
|
||||||
goals of the algorithm. Then we make a side trip to talk about
|
|
||||||
write-once registers and how they're used by Machi, but we don't
|
|
||||||
really fully explain exactly why write-once is so critical (why not
|
|
||||||
general purpose registers?) ... but they are indeed critical. Then we
|
|
||||||
sketch the algorithm by providing detailed annotation of a flowchart,
|
|
||||||
then let the flowchart speak for itself, because writing good prose is
|
|
||||||
prose is damn hard, but flowcharts are very specific and concise.
|
|
||||||
|
|
||||||
Finally, we try to discuss the network partition simulator that the
|
|
||||||
algorithm runs in and how the algorithm behaves in both symmetric and
|
algorithm runs in and how the algorithm behaves in both symmetric and
|
||||||
asymmetric network partition scenarios. The symmetric partition cases
|
asymmetric network partition scenarios. The symmetric partition cases
|
||||||
are all working well (surprising in a good way), and the asymmetric
|
are all working well (surprising in a good way), and the asymmetric
|
||||||
|
@ -46,325 +36,13 @@ the simulator.
|
||||||
%% under the License.
|
%% under the License.
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* 3. Naming: possible ideas (TODO)
|
|
||||||
** Humming consensus?
|
|
||||||
|
|
||||||
See [[https://tools.ietf.org/html/rfc7282][On Consensus and Humming in the IETF]], RFC 7282.
|
* 3. Document restructuring
|
||||||
|
|
||||||
See also: [[http://www.snookles.com/slf-blog/2015/03/01/on-humming-consensus-an-allegory/][On “Humming Consensus”, an allegory]].
|
Much of the text previously appearing in this document has moved to the
|
||||||
|
[[high-level-chain-manager.pdf][Machi chain manager high level design]] document.
|
||||||
|
|
||||||
** Foggy consensus?
|
* 4. Diagram of the self-management algorithm
|
||||||
|
|
||||||
CORFU-like consensus between mist-shrouded islands of network
|
|
||||||
partitions
|
|
||||||
|
|
||||||
** Rough consensus
|
|
||||||
|
|
||||||
This is my favorite, but it might be too close to handwavy/vagueness
|
|
||||||
of English language, even with a precise definition and proof
|
|
||||||
sketching?
|
|
||||||
|
|
||||||
** Let the bikeshed continue!
|
|
||||||
|
|
||||||
I agree with Chris: there may already be a definition that's close
|
|
||||||
enough to "rough consensus" to continue using that existing tag than
|
|
||||||
to invent a new one. TODO: more research required
|
|
||||||
|
|
||||||
* 4. What does "self-management" mean in this context?
|
|
||||||
|
|
||||||
For the purposes of this document, chain replication self-management
|
|
||||||
is the ability for the N nodes in an N-length chain replication chain
|
|
||||||
to manage the state of the chain without requiring an external party
|
|
||||||
to participate. Chain state includes:
|
|
||||||
|
|
||||||
1. Preserve data integrity of all data stored within the chain. Data
|
|
||||||
loss is not an option.
|
|
||||||
2. Stably preserve knowledge of chain membership (i.e. all nodes in
|
|
||||||
the chain, regardless of operational status). A systems
|
|
||||||
administrators is expected to make "permanent" decisions about
|
|
||||||
chain membership.
|
|
||||||
3. Use passive and/or active techniques to track operational
|
|
||||||
state/status, e.g., up, down, restarting, full data sync, partial
|
|
||||||
data sync, etc.
|
|
||||||
4. Choose the run-time replica ordering/state of the chain, based on
|
|
||||||
current member status and past operational history. All chain
|
|
||||||
state transitions must be done safely and without data loss or
|
|
||||||
corruption.
|
|
||||||
5. As a new node is added to the chain administratively or old node is
|
|
||||||
restarted, add the node to the chain safely and perform any data
|
|
||||||
synchronization/"repair" required to bring the node's data into
|
|
||||||
full synchronization with the other nodes.
|
|
||||||
|
|
||||||
* 5. Goals
|
|
||||||
** Better than state-of-the-art: Chain Replication self-management
|
|
||||||
|
|
||||||
We hope/believe that this new self-management algorithem can improve
|
|
||||||
the current state-of-the-art by eliminating all external management
|
|
||||||
entities. Current state-of-the-art for management of chain
|
|
||||||
replication chains is discussed below, to provide historical context.
|
|
||||||
|
|
||||||
*** "Leveraging Sharding in the Design of Scalable Replication Protocols" by Abu-Libdeh, van Renesse, and Vigfusson.
|
|
||||||
|
|
||||||
Multiple chains are arranged in a ring (called a "band" in the paper).
|
|
||||||
The responsibility for managing the chain at position N is delegated
|
|
||||||
to chain N-1. As long as at least one chain is running, that is
|
|
||||||
sufficient to start/bootstrap the next chain, and so on until all
|
|
||||||
chains are running. (The paper then estimates mean-time-to-failure
|
|
||||||
(MTTF) and suggests a "band of bands" topology to handle very large
|
|
||||||
clusters while maintaining an MTTF that is as good or better than
|
|
||||||
other management techniques.)
|
|
||||||
|
|
||||||
If the chain self-management method proposed for Machi does not
|
|
||||||
succeed, this paper's technique is our best fallback recommendation.
|
|
||||||
|
|
||||||
*** An external management oracle, implemented by ZooKeeper
|
|
||||||
|
|
||||||
This is not a recommendation for Machi: we wish to avoid using ZooKeeper.
|
|
||||||
However, many other open and closed source software products use
|
|
||||||
ZooKeeper for exactly this kind of data replica management problem.
|
|
||||||
|
|
||||||
*** An external management oracle, implemented by Riak Ensemble
|
|
||||||
|
|
||||||
This is a much more palatable choice than option #2 above. We also
|
|
||||||
wish to avoid an external dependency on something as big as Riak
|
|
||||||
Ensemble. However, if it comes between choosing Riak Ensemble or
|
|
||||||
choosing ZooKeeper, the choice feels quite clear: Riak Ensemble will
|
|
||||||
win, unless there is some critical feature missing from Riak
|
|
||||||
Ensemble. If such an unforseen missing feature is discovered, it
|
|
||||||
would probably be preferable to add the feature to Riak Ensemble
|
|
||||||
rather than to use ZooKeeper (and document it and provide product
|
|
||||||
support for it and so on...).
|
|
||||||
|
|
||||||
** Support both eventually consistent & strongly consistent modes of operation
|
|
||||||
|
|
||||||
Machi's first use case is for Riak CS, as an eventually consistent
|
|
||||||
store for CS's "block" storage. Today, Riak KV is used for "block"
|
|
||||||
storage. Riak KV is an AP-style key-value store; using Machi in an
|
|
||||||
AP-style mode would match CS's current behavior from points of view of
|
|
||||||
both code/execution and human administrator exectations.
|
|
||||||
|
|
||||||
Later, we wish the option of using CP support to replace other data
|
|
||||||
store services that Riak KV provides today. (Scope and timing of such
|
|
||||||
replacement TBD.)
|
|
||||||
|
|
||||||
We believe this algorithm allows a Machi cluster to fragment into
|
|
||||||
arbitrary islands of network partition, all the way down to 100% of
|
|
||||||
members running in complete network isolation from each other.
|
|
||||||
Furthermore, it provides enough agreement to allow
|
|
||||||
formerly-partitioned members to coordinate the reintegration &
|
|
||||||
reconciliation of their data when partitions are healed.
|
|
||||||
|
|
||||||
** Preserve data integrity of Chain Replicated data
|
|
||||||
|
|
||||||
While listed last in this section, preservation of data integrity is
|
|
||||||
paramount to any chain state management technique for Machi.
|
|
||||||
|
|
||||||
** Anti-goal: minimize churn
|
|
||||||
|
|
||||||
This algorithm's focus is data safety and not availability. If
|
|
||||||
participants have differing notions of time, e.g., running on
|
|
||||||
extremely fast or extremely slow hardware, then this algorithm will
|
|
||||||
"churn" in different states where the chain's data would be
|
|
||||||
effectively unavailable.
|
|
||||||
|
|
||||||
In practice, however, any series of network partition changes that
|
|
||||||
case this algorithm to churn will cause other management techniques
|
|
||||||
(such as an external "oracle") similar problems. [Proof by handwaving
|
|
||||||
assertion.] See also: "time model" assumptions (below).
|
|
||||||
|
|
||||||
* 6. Assumptions
|
|
||||||
** Introduction to assumptions, why they differ from other consensus algorithms
|
|
||||||
|
|
||||||
Given a long history of consensus algorithms (viewstamped replication,
|
|
||||||
Paxos, Raft, et al.), why bother with a slightly different set of
|
|
||||||
assumptions and a slightly different protocol?
|
|
||||||
|
|
||||||
The answer lies in one of our explicit goals: to have an option of
|
|
||||||
running in an "eventually consistent" manner. We wish to be able to
|
|
||||||
make progress, i.e., remain available in the CAP sense, even if we are
|
|
||||||
partitioned down to a single isolated node. VR, Paxos, and Raft
|
|
||||||
alone are not sufficient to coordinate service availability at such
|
|
||||||
small scale.
|
|
||||||
|
|
||||||
** The CORFU protocol is correct
|
|
||||||
|
|
||||||
This work relies tremendously on the correctness of the CORFU
|
|
||||||
protocol, a cousin of the Paxos protocol. If the implementation of
|
|
||||||
this self-management protocol breaks an assumption or prerequisite of
|
|
||||||
CORFU, then we expect that the implementation will be flawed.
|
|
||||||
|
|
||||||
** Communication model: Asyncronous message passing
|
|
||||||
*** Unreliable network: messages may be arbitrarily dropped and/or reordered
|
|
||||||
**** Network partitions may occur at any time
|
|
||||||
**** Network partitions may be asymmetric: msg A->B is ok but B->A fails
|
|
||||||
*** Messages may be corrupted in-transit
|
|
||||||
**** Assume that message MAC/checksums are sufficient to detect corruption
|
|
||||||
**** Receiver informs sender of message corruption
|
|
||||||
**** Sender may resend, if/when desired
|
|
||||||
*** System particpants may be buggy but not actively malicious/Byzantine
|
|
||||||
** Time model: per-node clocks, loosely synchronized (e.g. NTP)
|
|
||||||
|
|
||||||
The protocol & algorithm presented here do not specify or require any
|
|
||||||
timestamps, physical or logical. Any mention of time inside of data
|
|
||||||
structures are for human/historic/diagnostic purposes only.
|
|
||||||
|
|
||||||
Having said that, some notion of physical time is suggested for
|
|
||||||
purposes of efficiency. It's recommended that there be some "sleep
|
|
||||||
time" between iterations of the algorithm: there is no need to "busy
|
|
||||||
wait" by executing the algorithm as quickly as possible. See below,
|
|
||||||
"sleep intervals between executions".
|
|
||||||
|
|
||||||
** Failure detector model: weak, fallible, boolean
|
|
||||||
|
|
||||||
We assume that the failure detector that the algorithm uses is weak,
|
|
||||||
it's fallible, and it informs the algorithm in boolean status
|
|
||||||
updates/toggles as a node becomes available or not.
|
|
||||||
|
|
||||||
If the failure detector is fallible and tells us a mistaken status
|
|
||||||
change, then the algorithm will "churn" the operational state of the
|
|
||||||
chain, e.g. by removing the failed node from the chain or adding a
|
|
||||||
(re)started node (that may not be alive) to the end of the chain.
|
|
||||||
Such extra churn is regrettable and will cause periods of delay as the
|
|
||||||
"rough consensus" (decribed below) decision is made. However, the
|
|
||||||
churn cannot (we assert/believe) cause data loss.
|
|
||||||
|
|
||||||
** The "wedge state", as described by the Machi RFC & CORFU
|
|
||||||
|
|
||||||
A chain member enters "wedge state" when it receives information that
|
|
||||||
a newer projection (i.e., run-time chain state reconfiguration) is
|
|
||||||
available. The new projection may be created by a system
|
|
||||||
administrator or calculated by the self-management algorithm.
|
|
||||||
Notification may arrive via the projection store API or via the file
|
|
||||||
I/O API.
|
|
||||||
|
|
||||||
When in wedge state, the server/FLU will refuse all file write I/O API
|
|
||||||
requests until the self-management algorithm has determined that
|
|
||||||
"rough consensus" has been decided (see next bullet item). The server
|
|
||||||
may also refuse file read I/O API requests, depending on its CP/AP
|
|
||||||
operation mode.
|
|
||||||
|
|
||||||
See the Machi RFC for more detail of the wedge state and also the
|
|
||||||
CORFU papers.
|
|
||||||
|
|
||||||
** "Rough consensus": consensus built upon data that is *visible now*
|
|
||||||
|
|
||||||
CS literature uses the word "consensus" in the context of the problem
|
|
||||||
description at
|
|
||||||
[[http://en.wikipedia.org/wiki/Consensus_(computer_science)#Problem_description]].
|
|
||||||
This traditional definition differs from what is described in this
|
|
||||||
document.
|
|
||||||
|
|
||||||
The phrase "rough consensus" will be used to describe
|
|
||||||
consensus derived only from data that is visible/known at the current
|
|
||||||
time. This implies that a network partition may be in effect and that
|
|
||||||
not all chain members are reachable. The algorithm will calculate
|
|
||||||
"rough consensus" despite not having input from all/majority/minority
|
|
||||||
of chain members. "Rough consensus" may proceed to make a
|
|
||||||
decision based on data from only a single participant, i.e., the local
|
|
||||||
node alone.
|
|
||||||
|
|
||||||
When operating in AP mode, i.e., in eventual consistency mode, "rough
|
|
||||||
consensus" could mean that an chain of length N could split into N
|
|
||||||
independent chains of length 1. When a network partition heals, the
|
|
||||||
rough consensus is sufficient to manage the chain so that each
|
|
||||||
replica's data can be repaired/merged/reconciled safely.
|
|
||||||
(Other features of the Machi system are designed to assist such
|
|
||||||
repair safely.)
|
|
||||||
|
|
||||||
When operating in CP mode, i.e., in strong consistency mode, "rough
|
|
||||||
consensus" would require additional supplements. For example, any
|
|
||||||
chain that didn't have a minimum length of the quorum majority size of
|
|
||||||
all members would be invalid and therefore would not move itself out
|
|
||||||
of wedged state. In very general terms, this requirement for a quorum
|
|
||||||
majority of surviving participants is also a requirement for Paxos,
|
|
||||||
Raft, and ZAB.
|
|
||||||
|
|
||||||
(Aside: The Machi RFC also proposes using "witness" chain members to
|
|
||||||
make service more available, e.g. quorum majority of "real" plus
|
|
||||||
"witness" nodes *and* at least one member must be a "real" node. See
|
|
||||||
the Machi RFC for more details.)
|
|
||||||
|
|
||||||
** Heavy reliance on a key-value store that maps write-once registers
|
|
||||||
|
|
||||||
The projection store is implemented using "write-once registers"
|
|
||||||
inside a key-value store: for every key in the store, the value must
|
|
||||||
be either of:
|
|
||||||
|
|
||||||
- The special 'unwritten' value
|
|
||||||
- An application-specific binary blob that is immutable thereafter
|
|
||||||
|
|
||||||
* 7. The projection store, built with write-once registers
|
|
||||||
|
|
||||||
- NOTE to the reader: The notion of "public" vs. "private" projection
|
|
||||||
stores does not appear in the Machi RFC.
|
|
||||||
|
|
||||||
Each participating chain node has its own "projection store", which is
|
|
||||||
a specialized key-value store. As a whole, a node's projection store
|
|
||||||
is implemented using two different key-value stores:
|
|
||||||
|
|
||||||
- A publicly-writable KV store of write-once registers
|
|
||||||
- A privately-writable KV store of write-once registers
|
|
||||||
|
|
||||||
Both stores may be read by any cluster member.
|
|
||||||
|
|
||||||
The store's key is a positive integer; the integer represents the
|
|
||||||
epoch number of the projection. The store's value is an opaque
|
|
||||||
binary blob whose meaning is meaningful only to the store's clients.
|
|
||||||
|
|
||||||
See the Machi RFC for more detail on projections and epoch numbers.
|
|
||||||
|
|
||||||
** The publicly-writable half of the projection store
|
|
||||||
|
|
||||||
The publicly-writable projection store is used to share information
|
|
||||||
during the first half of the self-management algorithm. Any chain
|
|
||||||
member may write a projection to this store.
|
|
||||||
|
|
||||||
** The privately-writable half of the projection store
|
|
||||||
|
|
||||||
The privately-writable projection store is used to store the "rough
|
|
||||||
consensus" result that has been calculated by the local node. Only
|
|
||||||
the local server/FLU may write values into this store.
|
|
||||||
|
|
||||||
The private projection store serves multiple purposes, including:
|
|
||||||
|
|
||||||
- remove/clear the local server from "wedge state"
|
|
||||||
- act as the store of record for chain state transitions
|
|
||||||
- communicate to remote nodes the past states and current operational
|
|
||||||
state of the local node
|
|
||||||
|
|
||||||
* 8. Modification of CORFU-style epoch numbering and "wedge state" triggers
|
|
||||||
|
|
||||||
According to the CORFU research papers, if a server node N or client
|
|
||||||
node C believes that epoch E is the latest epoch, then any information
|
|
||||||
that N or C receives from any source that an epoch E+delta (where
|
|
||||||
delta > 0) exists will push N into the "wedge" state and C into a mode
|
|
||||||
of searching for the projection definition for the newest epoch.
|
|
||||||
|
|
||||||
In the algorithm sketch below, it should become clear that it's
|
|
||||||
possible to have a race where two nodes may attempt to make proposals
|
|
||||||
for a single epoch number. In the simplest case, assume a chain of
|
|
||||||
nodes A & B. Assume that a symmetric network partition between A & B
|
|
||||||
happens, and assume we're operating in AP/eventually consistent mode.
|
|
||||||
|
|
||||||
On A's network partitioned island, A can choose a UPI list of `[A]'.
|
|
||||||
Similarly B can choose a UPI list of `[B]'. Both might choose the
|
|
||||||
epoch for their proposal to be #42. Because each are separated by
|
|
||||||
network partition, neither can realize the conflict. However, when
|
|
||||||
the network partition heals, it can become obvious that there are
|
|
||||||
conflicting values for epoch #42 ... but if we use CORFU's protocol
|
|
||||||
design, which identifies the epoch identifier as an integer only, then
|
|
||||||
the integer 42 alone is not sufficient to discern the differences
|
|
||||||
between the two projections.
|
|
||||||
|
|
||||||
The proposal modifies all use of CORFU's projection identifier
|
|
||||||
to use the identifier below instead. (A later section of this
|
|
||||||
document presents a detailed example.)
|
|
||||||
|
|
||||||
#+BEGIN_SRC
|
|
||||||
{epoch #, hash of the entire projection (minus hash field itself)}
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* 9. Diagram of the self-management algorithm
|
|
||||||
** Introduction
|
** Introduction
|
||||||
Refer to the diagram
|
Refer to the diagram
|
||||||
[[https://github.com/basho/machi/blob/master/doc/chain-self-management-sketch.Diagram1.pdf][chain-self-management-sketch.Diagram1.pdf]],
|
[[https://github.com/basho/machi/blob/master/doc/chain-self-management-sketch.Diagram1.pdf][chain-self-management-sketch.Diagram1.pdf]],
|
||||||
|
@ -579,7 +257,7 @@ use of quorum majority for UPI members is out of scope of this
|
||||||
document. Also out of scope is the use of "witness servers" to
|
document. Also out of scope is the use of "witness servers" to
|
||||||
augment the quorum majority UPI scheme.)
|
augment the quorum majority UPI scheme.)
|
||||||
|
|
||||||
* 10. The Network Partition Simulator
|
* 5. The Network Partition Simulator
|
||||||
** Overview
|
** Overview
|
||||||
The function machi_chain_manager1_test:convergence_demo_test()
|
The function machi_chain_manager1_test:convergence_demo_test()
|
||||||
executes the following in a simulated network environment within a
|
executes the following in a simulated network environment within a
|
||||||
|
|
BIN
doc/high-level-machi.pdf
Normal file
BIN
doc/high-level-machi.pdf
Normal file
Binary file not shown.
4
doc/src.high-level/.gitignore
vendored
Normal file
4
doc/src.high-level/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
*.aux
|
||||||
|
*.dvi
|
||||||
|
*.log
|
||||||
|
*.pdf
|
8
doc/src.high-level/Makefile
Normal file
8
doc/src.high-level/Makefile
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
all:
|
||||||
|
latex high-level-machi.tex
|
||||||
|
dvipdfm high-level-machi.dvi
|
||||||
|
latex high-level-chain-mgr.tex
|
||||||
|
dvipdfm high-level-chain-mgr.dvi
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.aux *.dvi *.log
|
268
doc/src.high-level/append-flow.eps
Normal file
268
doc/src.high-level/append-flow.eps
Normal file
|
@ -0,0 +1,268 @@
|
||||||
|
%!PS-Adobe-3.0 EPSF-2.0
|
||||||
|
%%BoundingBox: 0 0 416.500000 280.000000
|
||||||
|
%%Creator: mscgen 0.18
|
||||||
|
%%EndComments
|
||||||
|
0.700000 0.700000 scale
|
||||||
|
0 0 moveto
|
||||||
|
0 400 lineto
|
||||||
|
595 400 lineto
|
||||||
|
595 0 lineto
|
||||||
|
closepath
|
||||||
|
clip
|
||||||
|
%PageTrailer
|
||||||
|
%Page: 1 1
|
||||||
|
/Helvetica findfont
|
||||||
|
10 scalefont
|
||||||
|
setfont
|
||||||
|
/Helvetica findfont
|
||||||
|
12 scalefont
|
||||||
|
setfont
|
||||||
|
0 400 translate
|
||||||
|
/mtrx matrix def
|
||||||
|
/ellipse
|
||||||
|
{ /endangle exch def
|
||||||
|
/startangle exch def
|
||||||
|
/ydia exch def
|
||||||
|
/xdia exch def
|
||||||
|
/y exch def
|
||||||
|
/x exch def
|
||||||
|
/savematrix mtrx currentmatrix def
|
||||||
|
x y translate
|
||||||
|
xdia 2 div ydia 2 div scale
|
||||||
|
1 -1 scale
|
||||||
|
0 0 1 startangle endangle arc
|
||||||
|
savematrix setmatrix
|
||||||
|
} def
|
||||||
|
(client) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 42 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
42 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(Projection) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 127 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
127 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(ProjStore_A) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 212 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
212 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(Sequencer_A) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 297 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
297 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(FLU_A) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 382 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
382 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(FLU_B) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 467 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
467 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(FLU_C) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 552 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
552 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
newpath 42 -22 moveto 42 -49 lineto stroke
|
||||||
|
newpath 127 -22 moveto 127 -49 lineto stroke
|
||||||
|
newpath 212 -22 moveto 212 -49 lineto stroke
|
||||||
|
newpath 297 -22 moveto 297 -49 lineto stroke
|
||||||
|
newpath 382 -22 moveto 382 -49 lineto stroke
|
||||||
|
newpath 467 -22 moveto 467 -49 lineto stroke
|
||||||
|
newpath 552 -22 moveto 552 -49 lineto stroke
|
||||||
|
newpath 42 -35 moveto 127 -35 lineto stroke
|
||||||
|
newpath 127 -35 moveto 117 -41 lineto stroke
|
||||||
|
(get current) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 57 -33 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
57 -33 moveto show
|
||||||
|
newpath 42 -49 moveto 42 -76 lineto stroke
|
||||||
|
newpath 127 -49 moveto 127 -76 lineto stroke
|
||||||
|
newpath 212 -49 moveto 212 -76 lineto stroke
|
||||||
|
newpath 297 -49 moveto 297 -76 lineto stroke
|
||||||
|
newpath 382 -49 moveto 382 -76 lineto stroke
|
||||||
|
newpath 467 -49 moveto 467 -76 lineto stroke
|
||||||
|
newpath 552 -49 moveto 552 -76 lineto stroke
|
||||||
|
newpath 127 -62 moveto 42 -62 lineto stroke
|
||||||
|
newpath 42 -62 moveto 52 -68 lineto stroke
|
||||||
|
(ok, #12...) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 61 -60 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
61 -60 moveto show
|
||||||
|
newpath 42 -76 moveto 42 -103 lineto stroke
|
||||||
|
newpath 127 -76 moveto 127 -103 lineto stroke
|
||||||
|
newpath 212 -76 moveto 212 -103 lineto stroke
|
||||||
|
newpath 297 -76 moveto 297 -103 lineto stroke
|
||||||
|
newpath 382 -76 moveto 382 -103 lineto stroke
|
||||||
|
newpath 467 -76 moveto 467 -103 lineto stroke
|
||||||
|
newpath 552 -76 moveto 552 -103 lineto stroke
|
||||||
|
newpath 42 -89 moveto 297 -89 lineto stroke
|
||||||
|
newpath 297 -89 moveto 287 -95 lineto stroke
|
||||||
|
(Req. 123 bytes, prefix="foo", epoch=12) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 66 -87 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
66 -87 moveto show
|
||||||
|
newpath 42 -103 moveto 42 -130 lineto stroke
|
||||||
|
newpath 127 -103 moveto 127 -130 lineto stroke
|
||||||
|
newpath 212 -103 moveto 212 -130 lineto stroke
|
||||||
|
newpath 297 -103 moveto 297 -130 lineto stroke
|
||||||
|
newpath 382 -103 moveto 382 -130 lineto stroke
|
||||||
|
newpath 467 -103 moveto 467 -130 lineto stroke
|
||||||
|
newpath 552 -103 moveto 552 -130 lineto stroke
|
||||||
|
newpath 297 -116 moveto 42 -116 lineto stroke
|
||||||
|
newpath 42 -116 moveto 52 -122 lineto stroke
|
||||||
|
1.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
(bad_epoch, 13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 131 -114 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
1.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
131 -114 moveto show
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
newpath 42 -130 moveto 42 -157 lineto stroke
|
||||||
|
newpath 127 -130 moveto 127 -157 lineto stroke
|
||||||
|
newpath 212 -130 moveto 212 -157 lineto stroke
|
||||||
|
newpath 297 -130 moveto 297 -157 lineto stroke
|
||||||
|
newpath 382 -130 moveto 382 -157 lineto stroke
|
||||||
|
newpath 467 -130 moveto 467 -157 lineto stroke
|
||||||
|
newpath 552 -130 moveto 552 -157 lineto stroke
|
||||||
|
newpath 42 -143 moveto 212 -143 lineto stroke
|
||||||
|
newpath 212 -143 moveto 202 -149 lineto stroke
|
||||||
|
(get epoch #13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 89 -141 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
89 -141 moveto show
|
||||||
|
newpath 42 -157 moveto 42 -184 lineto stroke
|
||||||
|
newpath 127 -157 moveto 127 -184 lineto stroke
|
||||||
|
newpath 212 -157 moveto 212 -184 lineto stroke
|
||||||
|
newpath 297 -157 moveto 297 -184 lineto stroke
|
||||||
|
newpath 382 -157 moveto 382 -184 lineto stroke
|
||||||
|
newpath 467 -157 moveto 467 -184 lineto stroke
|
||||||
|
newpath 552 -157 moveto 552 -184 lineto stroke
|
||||||
|
newpath 212 -170 moveto 42 -170 lineto stroke
|
||||||
|
newpath 42 -170 moveto 52 -176 lineto stroke
|
||||||
|
(ok, #13...) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 103 -168 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
103 -168 moveto show
|
||||||
|
newpath 42 -184 moveto 42 -211 lineto stroke
|
||||||
|
newpath 127 -184 moveto 127 -211 lineto stroke
|
||||||
|
newpath 212 -184 moveto 212 -211 lineto stroke
|
||||||
|
newpath 297 -184 moveto 297 -211 lineto stroke
|
||||||
|
newpath 382 -184 moveto 382 -211 lineto stroke
|
||||||
|
newpath 467 -184 moveto 467 -211 lineto stroke
|
||||||
|
newpath 552 -184 moveto 552 -211 lineto stroke
|
||||||
|
newpath 42 -197 moveto 297 -197 lineto stroke
|
||||||
|
newpath 297 -197 moveto 287 -203 lineto stroke
|
||||||
|
(Req. 123 bytes, prefix="foo", epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 66 -195 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
66 -195 moveto show
|
||||||
|
newpath 42 -211 moveto 42 -238 lineto stroke
|
||||||
|
newpath 127 -211 moveto 127 -238 lineto stroke
|
||||||
|
newpath 212 -211 moveto 212 -238 lineto stroke
|
||||||
|
newpath 297 -211 moveto 297 -238 lineto stroke
|
||||||
|
newpath 382 -211 moveto 382 -238 lineto stroke
|
||||||
|
newpath 467 -211 moveto 467 -238 lineto stroke
|
||||||
|
newpath 552 -211 moveto 552 -238 lineto stroke
|
||||||
|
newpath 297 -224 moveto 42 -224 lineto stroke
|
||||||
|
newpath 42 -224 moveto 52 -230 lineto stroke
|
||||||
|
(ok, "foo.seq_a.009" offset=447) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 89 -222 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
89 -222 moveto show
|
||||||
|
newpath 42 -238 moveto 42 -265 lineto stroke
|
||||||
|
newpath 127 -238 moveto 127 -265 lineto stroke
|
||||||
|
newpath 212 -238 moveto 212 -265 lineto stroke
|
||||||
|
newpath 297 -238 moveto 297 -265 lineto stroke
|
||||||
|
newpath 382 -238 moveto 382 -265 lineto stroke
|
||||||
|
newpath 467 -238 moveto 467 -265 lineto stroke
|
||||||
|
newpath 552 -238 moveto 552 -265 lineto stroke
|
||||||
|
newpath 42 -251 moveto 382 -251 lineto stroke
|
||||||
|
newpath 382 -251 moveto 372 -257 lineto stroke
|
||||||
|
(write "foo.seq_a.009" offset=447 <<123 bytes...>> epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 51 -249 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
51 -249 moveto show
|
||||||
|
newpath 42 -265 moveto 42 -292 lineto stroke
|
||||||
|
newpath 127 -265 moveto 127 -292 lineto stroke
|
||||||
|
newpath 212 -265 moveto 212 -292 lineto stroke
|
||||||
|
newpath 297 -265 moveto 297 -292 lineto stroke
|
||||||
|
newpath 382 -265 moveto 382 -292 lineto stroke
|
||||||
|
newpath 467 -265 moveto 467 -292 lineto stroke
|
||||||
|
newpath 552 -265 moveto 552 -292 lineto stroke
|
||||||
|
newpath 382 -278 moveto 42 -278 lineto stroke
|
||||||
|
newpath 42 -278 moveto 52 -284 lineto stroke
|
||||||
|
(ok) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 206 -276 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
206 -276 moveto show
|
||||||
|
newpath 42 -292 moveto 42 -319 lineto stroke
|
||||||
|
newpath 127 -292 moveto 127 -319 lineto stroke
|
||||||
|
newpath 212 -292 moveto 212 -319 lineto stroke
|
||||||
|
newpath 297 -292 moveto 297 -319 lineto stroke
|
||||||
|
newpath 382 -292 moveto 382 -319 lineto stroke
|
||||||
|
newpath 467 -292 moveto 467 -319 lineto stroke
|
||||||
|
newpath 552 -292 moveto 552 -319 lineto stroke
|
||||||
|
newpath 42 -305 moveto 467 -305 lineto stroke
|
||||||
|
newpath 467 -305 moveto 457 -311 lineto stroke
|
||||||
|
(write "foo.seq_a.009" offset=447 <<123 bytes...>> epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 94 -303 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
94 -303 moveto show
|
||||||
|
newpath 42 -319 moveto 42 -346 lineto stroke
|
||||||
|
newpath 127 -319 moveto 127 -346 lineto stroke
|
||||||
|
newpath 212 -319 moveto 212 -346 lineto stroke
|
||||||
|
newpath 297 -319 moveto 297 -346 lineto stroke
|
||||||
|
newpath 382 -319 moveto 382 -346 lineto stroke
|
||||||
|
newpath 467 -319 moveto 467 -346 lineto stroke
|
||||||
|
newpath 552 -319 moveto 552 -346 lineto stroke
|
||||||
|
newpath 467 -332 moveto 42 -332 lineto stroke
|
||||||
|
newpath 42 -332 moveto 52 -338 lineto stroke
|
||||||
|
(ok) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 249 -330 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
249 -330 moveto show
|
||||||
|
newpath 42 -346 moveto 42 -373 lineto stroke
|
||||||
|
newpath 127 -346 moveto 127 -373 lineto stroke
|
||||||
|
newpath 212 -346 moveto 212 -373 lineto stroke
|
||||||
|
newpath 297 -346 moveto 297 -373 lineto stroke
|
||||||
|
newpath 382 -346 moveto 382 -373 lineto stroke
|
||||||
|
newpath 467 -346 moveto 467 -373 lineto stroke
|
||||||
|
newpath 552 -346 moveto 552 -373 lineto stroke
|
||||||
|
newpath 42 -359 moveto 552 -359 lineto stroke
|
||||||
|
newpath 552 -359 moveto 542 -365 lineto stroke
|
||||||
|
(write "foo.seq_a.009" offset=447 <<123 bytes...>> epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 136 -357 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
136 -357 moveto show
|
||||||
|
newpath 42 -373 moveto 42 -400 lineto stroke
|
||||||
|
newpath 127 -373 moveto 127 -400 lineto stroke
|
||||||
|
newpath 212 -373 moveto 212 -400 lineto stroke
|
||||||
|
newpath 297 -373 moveto 297 -400 lineto stroke
|
||||||
|
newpath 382 -373 moveto 382 -400 lineto stroke
|
||||||
|
newpath 467 -373 moveto 467 -400 lineto stroke
|
||||||
|
newpath 552 -373 moveto 552 -400 lineto stroke
|
||||||
|
newpath 552 -386 moveto 42 -386 lineto stroke
|
||||||
|
newpath 42 -386 moveto 52 -392 lineto stroke
|
||||||
|
(ok) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 291 -384 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
291 -384 moveto show
|
345
doc/src.high-level/append-flow2.eps
Normal file
345
doc/src.high-level/append-flow2.eps
Normal file
|
@ -0,0 +1,345 @@
|
||||||
|
%!PS-Adobe-3.0 EPSF-2.0
|
||||||
|
%%BoundingBox: 0 0 416.500000 355.600006
|
||||||
|
%%Creator: mscgen 0.18
|
||||||
|
%%EndComments
|
||||||
|
0.700000 0.700000 scale
|
||||||
|
0 0 moveto
|
||||||
|
0 508 lineto
|
||||||
|
595 508 lineto
|
||||||
|
595 0 lineto
|
||||||
|
closepath
|
||||||
|
clip
|
||||||
|
%PageTrailer
|
||||||
|
%Page: 1 1
|
||||||
|
/Helvetica findfont
|
||||||
|
10 scalefont
|
||||||
|
setfont
|
||||||
|
/Helvetica findfont
|
||||||
|
12 scalefont
|
||||||
|
setfont
|
||||||
|
0 508 translate
|
||||||
|
/mtrx matrix def
|
||||||
|
/ellipse
|
||||||
|
{ /endangle exch def
|
||||||
|
/startangle exch def
|
||||||
|
/ydia exch def
|
||||||
|
/xdia exch def
|
||||||
|
/y exch def
|
||||||
|
/x exch def
|
||||||
|
/savematrix mtrx currentmatrix def
|
||||||
|
x y translate
|
||||||
|
xdia 2 div ydia 2 div scale
|
||||||
|
1 -1 scale
|
||||||
|
0 0 1 startangle endangle arc
|
||||||
|
savematrix setmatrix
|
||||||
|
} def
|
||||||
|
(client) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 42 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
42 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(Projection) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 127 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
127 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(ProjStore_A) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 212 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
212 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(Sequencer_A) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 297 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
297 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(FLU_A) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 382 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
382 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(FLU_B) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 467 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
467 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(FLU_C) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 552 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
552 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
newpath 42 -22 moveto 42 -49 lineto stroke
|
||||||
|
newpath 127 -22 moveto 127 -49 lineto stroke
|
||||||
|
newpath 212 -22 moveto 212 -49 lineto stroke
|
||||||
|
newpath 297 -22 moveto 297 -49 lineto stroke
|
||||||
|
newpath 382 -22 moveto 382 -49 lineto stroke
|
||||||
|
newpath 467 -22 moveto 467 -49 lineto stroke
|
||||||
|
newpath 552 -22 moveto 552 -49 lineto stroke
|
||||||
|
newpath 42 -35 moveto 127 -35 lineto stroke
|
||||||
|
newpath 127 -35 moveto 117 -41 lineto stroke
|
||||||
|
(get current) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 57 -33 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
57 -33 moveto show
|
||||||
|
newpath 42 -49 moveto 42 -76 lineto stroke
|
||||||
|
newpath 127 -49 moveto 127 -76 lineto stroke
|
||||||
|
newpath 212 -49 moveto 212 -76 lineto stroke
|
||||||
|
newpath 297 -49 moveto 297 -76 lineto stroke
|
||||||
|
newpath 382 -49 moveto 382 -76 lineto stroke
|
||||||
|
newpath 467 -49 moveto 467 -76 lineto stroke
|
||||||
|
newpath 552 -49 moveto 552 -76 lineto stroke
|
||||||
|
newpath 127 -62 moveto 42 -62 lineto stroke
|
||||||
|
newpath 42 -62 moveto 52 -68 lineto stroke
|
||||||
|
(ok, #12...) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 61 -60 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
61 -60 moveto show
|
||||||
|
newpath 42 -76 moveto 42 -103 lineto stroke
|
||||||
|
newpath 127 -76 moveto 127 -103 lineto stroke
|
||||||
|
newpath 212 -76 moveto 212 -103 lineto stroke
|
||||||
|
newpath 297 -76 moveto 297 -103 lineto stroke
|
||||||
|
newpath 382 -76 moveto 382 -103 lineto stroke
|
||||||
|
newpath 467 -76 moveto 467 -103 lineto stroke
|
||||||
|
newpath 552 -76 moveto 552 -103 lineto stroke
|
||||||
|
newpath 42 -89 moveto 382 -89 lineto stroke
|
||||||
|
newpath 382 -89 moveto 372 -95 lineto stroke
|
||||||
|
(append prefix="foo" <<123 bytes...>> epoch=12) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 85 -87 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
85 -87 moveto show
|
||||||
|
newpath 42 -103 moveto 42 -130 lineto stroke
|
||||||
|
newpath 127 -103 moveto 127 -130 lineto stroke
|
||||||
|
newpath 212 -103 moveto 212 -130 lineto stroke
|
||||||
|
newpath 297 -103 moveto 297 -130 lineto stroke
|
||||||
|
newpath 382 -103 moveto 382 -130 lineto stroke
|
||||||
|
newpath 467 -103 moveto 467 -130 lineto stroke
|
||||||
|
newpath 552 -103 moveto 552 -130 lineto stroke
|
||||||
|
newpath 382 -116 moveto 42 -116 lineto stroke
|
||||||
|
newpath 42 -116 moveto 52 -122 lineto stroke
|
||||||
|
1.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
(bad_epoch, 13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 173 -114 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
1.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
173 -114 moveto show
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
newpath 42 -130 moveto 42 -157 lineto stroke
|
||||||
|
newpath 127 -130 moveto 127 -157 lineto stroke
|
||||||
|
newpath 212 -130 moveto 212 -157 lineto stroke
|
||||||
|
newpath 297 -130 moveto 297 -157 lineto stroke
|
||||||
|
newpath 382 -130 moveto 382 -157 lineto stroke
|
||||||
|
newpath 467 -130 moveto 467 -157 lineto stroke
|
||||||
|
newpath 552 -130 moveto 552 -157 lineto stroke
|
||||||
|
newpath 42 -143 moveto 212 -143 lineto stroke
|
||||||
|
newpath 212 -143 moveto 202 -149 lineto stroke
|
||||||
|
(get epoch #13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 89 -141 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
89 -141 moveto show
|
||||||
|
newpath 42 -157 moveto 42 -184 lineto stroke
|
||||||
|
newpath 127 -157 moveto 127 -184 lineto stroke
|
||||||
|
newpath 212 -157 moveto 212 -184 lineto stroke
|
||||||
|
newpath 297 -157 moveto 297 -184 lineto stroke
|
||||||
|
newpath 382 -157 moveto 382 -184 lineto stroke
|
||||||
|
newpath 467 -157 moveto 467 -184 lineto stroke
|
||||||
|
newpath 552 -157 moveto 552 -184 lineto stroke
|
||||||
|
newpath 212 -170 moveto 42 -170 lineto stroke
|
||||||
|
newpath 42 -170 moveto 52 -176 lineto stroke
|
||||||
|
(ok, #13...) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 103 -168 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
103 -168 moveto show
|
||||||
|
newpath 42 -184 moveto 42 -211 lineto stroke
|
||||||
|
newpath 127 -184 moveto 127 -211 lineto stroke
|
||||||
|
newpath 212 -184 moveto 212 -211 lineto stroke
|
||||||
|
newpath 297 -184 moveto 297 -211 lineto stroke
|
||||||
|
newpath 382 -184 moveto 382 -211 lineto stroke
|
||||||
|
newpath 467 -184 moveto 467 -211 lineto stroke
|
||||||
|
newpath 552 -184 moveto 552 -211 lineto stroke
|
||||||
|
newpath 42 -197 moveto 382 -197 lineto stroke
|
||||||
|
newpath 382 -197 moveto 372 -203 lineto stroke
|
||||||
|
(append prefix="foo" <<123 bytes...>> epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 85 -195 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
85 -195 moveto show
|
||||||
|
newpath 42 -211 moveto 42 -238 lineto stroke
|
||||||
|
newpath 127 -211 moveto 127 -238 lineto stroke
|
||||||
|
newpath 212 -211 moveto 212 -238 lineto stroke
|
||||||
|
newpath 297 -211 moveto 297 -238 lineto stroke
|
||||||
|
newpath 382 -211 moveto 382 -238 lineto stroke
|
||||||
|
newpath 467 -211 moveto 467 -238 lineto stroke
|
||||||
|
newpath 552 -211 moveto 552 -238 lineto stroke
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
newpath 263 -211 moveto 417 -211 lineto 417 -236 lineto 263 -236 lineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
newpath 269 -211 moveto 411 -211 lineto stroke
|
||||||
|
newpath 269 -236 moveto 411 -236 lineto stroke
|
||||||
|
newpath 269 -211 moveto 263 -223 lineto stroke
|
||||||
|
newpath 263 -223 moveto 269 -236 lineto stroke
|
||||||
|
newpath 411 -211 moveto 417 -223 lineto stroke
|
||||||
|
newpath 417 -223 moveto 411 -236 lineto stroke
|
||||||
|
(Co-located on same box) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 275 -227 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
275 -227 moveto show
|
||||||
|
newpath 42 -238 moveto 42 -265 lineto stroke
|
||||||
|
newpath 127 -238 moveto 127 -265 lineto stroke
|
||||||
|
newpath 212 -238 moveto 212 -265 lineto stroke
|
||||||
|
newpath 297 -238 moveto 297 -265 lineto stroke
|
||||||
|
newpath 382 -238 moveto 382 -265 lineto stroke
|
||||||
|
newpath 467 -238 moveto 467 -265 lineto stroke
|
||||||
|
newpath 552 -238 moveto 552 -265 lineto stroke
|
||||||
|
newpath 382 -251 moveto 297 -251 lineto stroke
|
||||||
|
newpath 297 -251 moveto 307 -257 lineto stroke
|
||||||
|
(Req. 123 bytes, prefix="foo", epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 236 -249 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
236 -249 moveto show
|
||||||
|
newpath 42 -265 moveto 42 -292 lineto stroke
|
||||||
|
newpath 127 -265 moveto 127 -292 lineto stroke
|
||||||
|
newpath 212 -265 moveto 212 -292 lineto stroke
|
||||||
|
newpath 297 -265 moveto 297 -292 lineto stroke
|
||||||
|
newpath 382 -265 moveto 382 -292 lineto stroke
|
||||||
|
newpath 467 -265 moveto 467 -292 lineto stroke
|
||||||
|
newpath 552 -265 moveto 552 -292 lineto stroke
|
||||||
|
newpath 297 -278 moveto 382 -278 lineto stroke
|
||||||
|
newpath 382 -278 moveto 372 -284 lineto stroke
|
||||||
|
(ok, "foo.seq_a.009" offset=447) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 259 -276 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
259 -276 moveto show
|
||||||
|
newpath 42 -292 moveto 42 -319 lineto stroke
|
||||||
|
newpath 127 -292 moveto 127 -319 lineto stroke
|
||||||
|
newpath 212 -292 moveto 212 -319 lineto stroke
|
||||||
|
newpath 297 -292 moveto 297 -319 lineto stroke
|
||||||
|
newpath 382 -292 moveto 382 -319 lineto stroke
|
||||||
|
newpath 467 -292 moveto 467 -319 lineto stroke
|
||||||
|
newpath 552 -292 moveto 552 -319 lineto stroke
|
||||||
|
newpath 382 -305 85 13 270 90 ellipse stroke
|
||||||
|
newpath 382 -311 moveto 392 -317 lineto stroke
|
||||||
|
(write "foo.seq_a.009" offset=447 <<123 bytes...>> epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 58 -303 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
58 -303 moveto show
|
||||||
|
newpath 42 -319 moveto 42 -346 lineto stroke
|
||||||
|
newpath 127 -319 moveto 127 -346 lineto stroke
|
||||||
|
newpath 212 -319 moveto 212 -346 lineto stroke
|
||||||
|
newpath 297 -319 moveto 297 -346 lineto stroke
|
||||||
|
newpath 382 -319 moveto 382 -346 lineto stroke
|
||||||
|
newpath 467 -319 moveto 467 -346 lineto stroke
|
||||||
|
newpath 552 -319 moveto 552 -346 lineto stroke
|
||||||
|
newpath 382 -332 moveto 467 -332 lineto stroke
|
||||||
|
newpath 467 -332 moveto 457 -338 lineto stroke
|
||||||
|
(write "foo.seq_a.009" offset=447 <<123 bytes...>> epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 264 -330 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
264 -330 moveto show
|
||||||
|
newpath 42 -346 moveto 42 -373 lineto stroke
|
||||||
|
newpath 127 -346 moveto 127 -373 lineto stroke
|
||||||
|
newpath 212 -346 moveto 212 -373 lineto stroke
|
||||||
|
newpath 297 -346 moveto 297 -373 lineto stroke
|
||||||
|
newpath 382 -346 moveto 382 -373 lineto stroke
|
||||||
|
newpath 467 -346 moveto 467 -373 lineto stroke
|
||||||
|
newpath 552 -346 moveto 552 -373 lineto stroke
|
||||||
|
newpath 467 -359 moveto 552 -359 lineto stroke
|
||||||
|
newpath 552 -359 moveto 542 -365 lineto stroke
|
||||||
|
(write "foo.seq_a.009" offset=447 <<123 bytes...>> epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 273 -357 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
273 -357 moveto show
|
||||||
|
newpath 42 -373 moveto 42 -400 lineto stroke
|
||||||
|
newpath 127 -373 moveto 127 -400 lineto stroke
|
||||||
|
newpath 212 -373 moveto 212 -400 lineto stroke
|
||||||
|
newpath 297 -373 moveto 297 -400 lineto stroke
|
||||||
|
newpath 382 -373 moveto 382 -400 lineto stroke
|
||||||
|
newpath 467 -373 moveto 467 -400 lineto stroke
|
||||||
|
newpath 552 -373 moveto 552 -400 lineto stroke
|
||||||
|
newpath 552 -386 moveto 42 -386 lineto stroke
|
||||||
|
newpath 42 -386 moveto 52 -392 lineto stroke
|
||||||
|
(ok, "foo.seq_a.009" offset=447) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 216 -384 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
216 -384 moveto show
|
||||||
|
newpath 42 -400 moveto 42 -427 lineto stroke
|
||||||
|
newpath 127 -400 moveto 127 -427 lineto stroke
|
||||||
|
newpath 212 -400 moveto 212 -427 lineto stroke
|
||||||
|
newpath 297 -400 moveto 297 -427 lineto stroke
|
||||||
|
newpath 382 -400 moveto 382 -427 lineto stroke
|
||||||
|
newpath 467 -400 moveto 467 -427 lineto stroke
|
||||||
|
newpath 552 -400 moveto 552 -427 lineto stroke
|
||||||
|
(The above is "fast path" for FLU->FLU forwarding.) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 164 -416 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
164 -416 moveto show
|
||||||
|
[2] 0 setdash
|
||||||
|
newpath 21 -413 moveto 162 -413 lineto stroke
|
||||||
|
[] 0 setdash
|
||||||
|
[2] 0 setdash
|
||||||
|
newpath 432 -413 moveto 574 -413 lineto stroke
|
||||||
|
[] 0 setdash
|
||||||
|
newpath 42 -427 moveto 42 -454 lineto stroke
|
||||||
|
newpath 127 -427 moveto 127 -454 lineto stroke
|
||||||
|
newpath 212 -427 moveto 212 -454 lineto stroke
|
||||||
|
newpath 297 -427 moveto 297 -454 lineto stroke
|
||||||
|
newpath 382 -427 moveto 382 -454 lineto stroke
|
||||||
|
newpath 467 -427 moveto 467 -454 lineto stroke
|
||||||
|
newpath 552 -427 moveto 552 -454 lineto stroke
|
||||||
|
(If, in an alternate scenario, FLU_C has an error...) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 167 -443 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
167 -443 moveto show
|
||||||
|
[2] 0 setdash
|
||||||
|
newpath 21 -440 moveto 165 -440 lineto stroke
|
||||||
|
[] 0 setdash
|
||||||
|
[2] 0 setdash
|
||||||
|
newpath 429 -440 moveto 574 -440 lineto stroke
|
||||||
|
[] 0 setdash
|
||||||
|
newpath 42 -454 moveto 42 -481 lineto stroke
|
||||||
|
newpath 127 -454 moveto 127 -481 lineto stroke
|
||||||
|
newpath 212 -454 moveto 212 -481 lineto stroke
|
||||||
|
newpath 297 -454 moveto 297 -481 lineto stroke
|
||||||
|
newpath 382 -454 moveto 382 -481 lineto stroke
|
||||||
|
newpath 467 -454 moveto 467 -481 lineto stroke
|
||||||
|
newpath 552 -454 moveto 552 -481 lineto stroke
|
||||||
|
newpath 552 -467 moveto 42 -467 lineto stroke
|
||||||
|
newpath 42 -467 moveto 52 -473 lineto stroke
|
||||||
|
1.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
(bad_epoch, 15) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 258 -465 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
1.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
258 -465 moveto show
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
newpath 42 -481 moveto 42 -508 lineto stroke
|
||||||
|
newpath 127 -481 moveto 127 -508 lineto stroke
|
||||||
|
newpath 212 -481 moveto 212 -508 lineto stroke
|
||||||
|
newpath 297 -481 moveto 297 -508 lineto stroke
|
||||||
|
newpath 382 -481 moveto 382 -508 lineto stroke
|
||||||
|
newpath 467 -481 moveto 467 -508 lineto stroke
|
||||||
|
newpath 552 -481 moveto 552 -508 lineto stroke
|
||||||
|
(... then repair becomes the client's responsibility \("slow path"\).) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 133 -497 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
133 -497 moveto show
|
||||||
|
[2] 0 setdash
|
||||||
|
newpath 21 -494 moveto 131 -494 lineto stroke
|
||||||
|
[] 0 setdash
|
||||||
|
[2] 0 setdash
|
||||||
|
newpath 464 -494 moveto 574 -494 lineto stroke
|
||||||
|
[] 0 setdash
|
557
doc/src.high-level/figure6.eps
Normal file
557
doc/src.high-level/figure6.eps
Normal file
|
@ -0,0 +1,557 @@
|
||||||
|
%!PS-Adobe-3.0 EPSF-3.0
|
||||||
|
%%Title: figure6.fig
|
||||||
|
%%Creator: fig2dev Version 3.2 Patchlevel 5d
|
||||||
|
%%CreationDate: Mon Oct 20 21:56:33 2014
|
||||||
|
%%For: fritchie@sbb3.local (Scott Lystig Fritchie)
|
||||||
|
%%BoundingBox: 0 0 633 332
|
||||||
|
%Magnification: 1.0000
|
||||||
|
%%EndComments
|
||||||
|
%%BeginProlog
|
||||||
|
/$F2psDict 200 dict def
|
||||||
|
$F2psDict begin
|
||||||
|
$F2psDict /mtrx matrix put
|
||||||
|
/col-1 {0 setgray} bind def
|
||||||
|
/col0 {0.000 0.000 0.000 srgb} bind def
|
||||||
|
/col1 {0.000 0.000 1.000 srgb} bind def
|
||||||
|
/col2 {0.000 1.000 0.000 srgb} bind def
|
||||||
|
/col3 {0.000 1.000 1.000 srgb} bind def
|
||||||
|
/col4 {1.000 0.000 0.000 srgb} bind def
|
||||||
|
/col5 {1.000 0.000 1.000 srgb} bind def
|
||||||
|
/col6 {1.000 1.000 0.000 srgb} bind def
|
||||||
|
/col7 {1.000 1.000 1.000 srgb} bind def
|
||||||
|
/col8 {0.000 0.000 0.560 srgb} bind def
|
||||||
|
/col9 {0.000 0.000 0.690 srgb} bind def
|
||||||
|
/col10 {0.000 0.000 0.820 srgb} bind def
|
||||||
|
/col11 {0.530 0.810 1.000 srgb} bind def
|
||||||
|
/col12 {0.000 0.560 0.000 srgb} bind def
|
||||||
|
/col13 {0.000 0.690 0.000 srgb} bind def
|
||||||
|
/col14 {0.000 0.820 0.000 srgb} bind def
|
||||||
|
/col15 {0.000 0.560 0.560 srgb} bind def
|
||||||
|
/col16 {0.000 0.690 0.690 srgb} bind def
|
||||||
|
/col17 {0.000 0.820 0.820 srgb} bind def
|
||||||
|
/col18 {0.560 0.000 0.000 srgb} bind def
|
||||||
|
/col19 {0.690 0.000 0.000 srgb} bind def
|
||||||
|
/col20 {0.820 0.000 0.000 srgb} bind def
|
||||||
|
/col21 {0.560 0.000 0.560 srgb} bind def
|
||||||
|
/col22 {0.690 0.000 0.690 srgb} bind def
|
||||||
|
/col23 {0.820 0.000 0.820 srgb} bind def
|
||||||
|
/col24 {0.500 0.190 0.000 srgb} bind def
|
||||||
|
/col25 {0.630 0.250 0.000 srgb} bind def
|
||||||
|
/col26 {0.750 0.380 0.000 srgb} bind def
|
||||||
|
/col27 {1.000 0.500 0.500 srgb} bind def
|
||||||
|
/col28 {1.000 0.630 0.630 srgb} bind def
|
||||||
|
/col29 {1.000 0.750 0.750 srgb} bind def
|
||||||
|
/col30 {1.000 0.880 0.880 srgb} bind def
|
||||||
|
/col31 {1.000 0.840 0.000 srgb} bind def
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
/cp {closepath} bind def
|
||||||
|
/ef {eofill} bind def
|
||||||
|
/gr {grestore} bind def
|
||||||
|
/gs {gsave} bind def
|
||||||
|
/sa {save} bind def
|
||||||
|
/rs {restore} bind def
|
||||||
|
/l {lineto} bind def
|
||||||
|
/m {moveto} bind def
|
||||||
|
/rm {rmoveto} bind def
|
||||||
|
/n {newpath} bind def
|
||||||
|
/s {stroke} bind def
|
||||||
|
/sh {show} bind def
|
||||||
|
/slc {setlinecap} bind def
|
||||||
|
/slj {setlinejoin} bind def
|
||||||
|
/slw {setlinewidth} bind def
|
||||||
|
/srgb {setrgbcolor} bind def
|
||||||
|
/rot {rotate} bind def
|
||||||
|
/sc {scale} bind def
|
||||||
|
/sd {setdash} bind def
|
||||||
|
/ff {findfont} bind def
|
||||||
|
/sf {setfont} bind def
|
||||||
|
/scf {scalefont} bind def
|
||||||
|
/sw {stringwidth} bind def
|
||||||
|
/tr {translate} bind def
|
||||||
|
/tnt {dup dup currentrgbcolor
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
|
||||||
|
bind def
|
||||||
|
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
|
||||||
|
4 -2 roll mul srgb} bind def
|
||||||
|
/reencdict 12 dict def /ReEncode { reencdict begin
|
||||||
|
/newcodesandnames exch def /newfontname exch def /basefontname exch def
|
||||||
|
/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
|
||||||
|
basefontdict { exch dup /FID ne { dup /Encoding eq
|
||||||
|
{ exch dup length array copy newfont 3 1 roll put }
|
||||||
|
{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
|
||||||
|
newfont /FontName newfontname put newcodesandnames aload pop
|
||||||
|
128 1 255 { newfont /Encoding get exch /.notdef put } for
|
||||||
|
newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
|
||||||
|
newfontname newfont definefont pop end } def
|
||||||
|
/isovec [
|
||||||
|
8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
|
||||||
|
8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
|
||||||
|
8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
|
||||||
|
8#220 /dotlessi 8#230 /oe 8#231 /OE
|
||||||
|
8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
|
||||||
|
8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
|
||||||
|
8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
|
||||||
|
8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
|
||||||
|
8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
|
||||||
|
8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
|
||||||
|
8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
|
||||||
|
8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
|
||||||
|
8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
|
||||||
|
8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
|
||||||
|
8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
|
||||||
|
8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
|
||||||
|
8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
|
||||||
|
8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
|
||||||
|
8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
|
||||||
|
8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
|
||||||
|
8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
|
||||||
|
8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
|
||||||
|
8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
|
||||||
|
8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
|
||||||
|
8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
|
||||||
|
8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
|
||||||
|
/Times-Bold /Times-Bold-iso isovec ReEncode
|
||||||
|
/Times-Roman /Times-Roman-iso isovec ReEncode
|
||||||
|
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||||
|
/$F2psEnd {$F2psEnteredState restore end} def
|
||||||
|
|
||||||
|
/pageheader {
|
||||||
|
save
|
||||||
|
newpath 0 332 moveto 0 0 lineto 633 0 lineto 633 332 lineto closepath clip newpath
|
||||||
|
-331.7 473.8 translate
|
||||||
|
1 -1 scale
|
||||||
|
$F2psBegin
|
||||||
|
10 setmiterlimit
|
||||||
|
0 slj 0 slc
|
||||||
|
0.06000 0.06000 sc
|
||||||
|
} bind def
|
||||||
|
/pagefooter {
|
||||||
|
$F2psEnd
|
||||||
|
restore
|
||||||
|
} bind def
|
||||||
|
%%EndProlog
|
||||||
|
pageheader
|
||||||
|
%
|
||||||
|
% Fig objects follow
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% here starts figure with depth 50
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
5925 7275 m
|
||||||
|
gs 1 -1 sc (Step 6: Client now knows that projection 12 is invalid. Fetch projection 13, then retry at step #8.) col16 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
8550 3225 m
|
||||||
|
gs 1 -1 sc (Get epoch 13) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5925 6900 m
|
||||||
|
gs 1 -1 sc (Active=[a,b,c]) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5925 6675 m
|
||||||
|
gs 1 -1 sc (Members=[a,b,c]) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5925 6450 m
|
||||||
|
gs 1 -1 sc (Epoch=13) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5925 5580 m
|
||||||
|
gs 1 -1 sc (Epoch=12) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5925 5835 m
|
||||||
|
gs 1 -1 sc (Members=[a,b,c]) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5925 6090 m
|
||||||
|
gs 1 -1 sc (Active=[a,b]) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5925 5175 m
|
||||||
|
gs 1 -1 sc (Projection \(data structure\)) col0 sh gr
|
||||||
|
% Polyline
|
||||||
|
0 slj
|
||||||
|
0 slc
|
||||||
|
15.000 slw
|
||||||
|
n 8400 4950 m 5625 4950 l 5625 7050 l 8400 7050 l
|
||||||
|
cp gs col0 s gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 6405 m
|
||||||
|
gs 1 -1 sc (- write once) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 6660 m
|
||||||
|
gs 1 -1 sc (- key=integer) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 6915 m
|
||||||
|
gs 1 -1 sc (- value=projection data structure) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 7170 m
|
||||||
|
gs 1 -1 sc (k=11, v=...) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 7425 m
|
||||||
|
gs 1 -1 sc (k=12, v=...) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 7680 m
|
||||||
|
gs 1 -1 sc (k=13, v=...) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 6150 m
|
||||||
|
gs 1 -1 sc (FLU projection store \(proc\)) col0 sh gr
|
||||||
|
% Polyline
|
||||||
|
n 12750 5925 m 15900 5925 l 15900 7725 l 12750 7725 l
|
||||||
|
cp gs col0 s gr
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
14788 5055 m 14940 5055 l 14940 4995 l 14788 4995 l 14788 4995 l 14908 5025 l 14788 5055 l cp
|
||||||
|
14612 4995 m 14460 4995 l 14460 5055 l 14612 5055 l 14612 5055 l 14492 5025 l 14612 4995 l cp
|
||||||
|
eoclip
|
||||||
|
n 14475 5025 m
|
||||||
|
14925 5025 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 14612 4995 m 14492 5025 l 14612 5055 l col0 s
|
||||||
|
% arrowhead
|
||||||
|
n 14788 5055 m 14908 5025 l 14788 4995 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
15688 5055 m 15840 5055 l 15840 4995 l 15688 4995 l 15688 4995 l 15808 5025 l 15688 5055 l cp
|
||||||
|
15137 4995 m 14985 4995 l 14985 5055 l 15137 5055 l 15137 5055 l 15017 5025 l 15137 4995 l cp
|
||||||
|
eoclip
|
||||||
|
n 15000 5025 m
|
||||||
|
15825 5025 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 15137 4995 m 15017 5025 l 15137 5055 l col0 s
|
||||||
|
% arrowhead
|
||||||
|
n 15688 5055 m 15808 5025 l 15688 4995 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
14638 5355 m 14790 5355 l 14790 5295 l 14638 5295 l 14638 5295 l 14758 5325 l 14638 5355 l cp
|
||||||
|
14612 5295 m 14460 5295 l 14460 5355 l 14612 5355 l 14612 5355 l 14492 5325 l 14612 5295 l cp
|
||||||
|
eoclip
|
||||||
|
n 14475 5325 m 14550 5325 l 14625 5325 l 14700 5325 l 14775 5325 l 14700 5325 l
|
||||||
|
|
||||||
|
14775 5325 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 14612 5295 m 14492 5325 l 14612 5355 l col0 s
|
||||||
|
% arrowhead
|
||||||
|
n 14638 5355 m 14758 5325 l 14638 5295 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
15163 5355 m 15315 5355 l 15315 5295 l 15163 5295 l 15163 5295 l 15283 5325 l 15163 5355 l cp
|
||||||
|
15137 5295 m 14985 5295 l 14985 5355 l 15137 5355 l 15137 5355 l 15017 5325 l 15137 5295 l cp
|
||||||
|
eoclip
|
||||||
|
n 15000 5325 m 15075 5325 l 15150 5325 l 15225 5325 l
|
||||||
|
15300 5325 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 15137 5295 m 15017 5325 l 15137 5355 l col0 s
|
||||||
|
% arrowhead
|
||||||
|
n 15163 5355 m 15283 5325 l 15163 5295 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
15688 5355 m 15840 5355 l 15840 5295 l 15688 5295 l 15688 5295 l 15808 5325 l 15688 5355 l cp
|
||||||
|
15587 5295 m 15435 5295 l 15435 5355 l 15587 5355 l 15587 5355 l 15467 5325 l 15587 5295 l cp
|
||||||
|
eoclip
|
||||||
|
n 15450 5325 m 15525 5325 l 15600 5325 l 15675 5325 l 15750 5325 l
|
||||||
|
15825 5325 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 15587 5295 m 15467 5325 l 15587 5355 l col0 s
|
||||||
|
% arrowhead
|
||||||
|
n 15688 5355 m 15808 5325 l 15688 5295 l col0 s
|
||||||
|
% Polyline
|
||||||
|
[60] 0 sd
|
||||||
|
n 14475 5025 m
|
||||||
|
15825 5025 l gs col0 s gr [] 0 sd
|
||||||
|
% Polyline
|
||||||
|
[60] 0 sd
|
||||||
|
n 14475 5325 m
|
||||||
|
15825 5325 l gs col0 s gr [] 0 sd
|
||||||
|
% Polyline
|
||||||
|
[60] 0 sd
|
||||||
|
n 14475 5550 m
|
||||||
|
15825 5550 l gs col0 s gr [] 0 sd
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 4575 m
|
||||||
|
gs 1 -1 sc (epoch=13) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 4830 m
|
||||||
|
gs 1 -1 sc (files:) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 5085 m
|
||||||
|
gs 1 -1 sc ( "foo.seq_a.006") col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 5340 m
|
||||||
|
gs 1 -1 sc ( "foo.seq_b.007") col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 5595 m
|
||||||
|
gs 1 -1 sc ( "foo.seq_b.008") col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 4275 m
|
||||||
|
gs 1 -1 sc (FLU \(proc\)) col0 sh gr
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
n 12750 4050 m 15975 4050 l 15975 5775 l 12750 5775 l
|
||||||
|
cp gs col0 s gr
|
||||||
|
% Polyline
|
||||||
|
n 12750 2775 m 15150 2775 l 15150 3900 l 12750 3900 l
|
||||||
|
cp gs col0 s gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 3000 m
|
||||||
|
gs 1 -1 sc (Sequencer \(proc\)) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 3300 m
|
||||||
|
gs 1 -1 sc (epoch=13) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
12825 3555 m
|
||||||
|
gs 1 -1 sc (map=[{"foo", next_file=8,) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
13500 3750 m
|
||||||
|
gs 1 -1 sc (next_offset=0}...]) col0 sh gr
|
||||||
|
% Polyline
|
||||||
|
n 5700 3975 m 5700 4275 l 8250 4275 l 8250 3075 l 7950 3075 l 7950 3975 l
|
||||||
|
|
||||||
|
5700 3975 l cp gs col0 s gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5775 4200 m
|
||||||
|
gs 1 -1 sc (server logic) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5775 3060 m
|
||||||
|
gs 1 -1 sc (Append <<123 bytes>>) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5775 3315 m
|
||||||
|
gs 1 -1 sc (to a file with prefix) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5775 3570 m
|
||||||
|
gs 1 -1 sc ("foo".) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
5775 2700 m
|
||||||
|
gs 1 -1 sc (CLIENT \(proc\)) col0 sh gr
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
5970 3763 m 5970 3915 l 6030 3915 l 6030 3763 l 6030 3763 l 6000 3883 l 5970 3763 l cp
|
||||||
|
eoclip
|
||||||
|
n 6000 3600 m
|
||||||
|
6000 3900 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 5970 3763 m 6000 3883 l 6030 3763 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
6630 3737 m 6630 3585 l 6570 3585 l 6570 3737 l 6570 3737 l 6600 3617 l 6630 3737 l cp
|
||||||
|
eoclip
|
||||||
|
n 6600 3900 m 6600 3825 l 6600 3750 l 6600 3675 l
|
||||||
|
6600 3600 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 6630 3737 m 6600 3617 l 6570 3737 l col0 s
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
6675 3900 m
|
||||||
|
gs 1 -1 sc (ok) col0 sh gr
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
n 5550 4350 m 8325 4350 l 8325 2475 l 5550 2475 l
|
||||||
|
cp gs col0 s gr
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
8143 4500 m 8035 4393 l 7993 4435 l 8100 4543 l 8100 4543 l 8037 4437 l 8143 4500 l cp
|
||||||
|
eoclip
|
||||||
|
n 12525 5175 m 8775 5175 l
|
||||||
|
8025 4425 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 8143 4500 m 8037 4437 l 8100 4543 l col0 s
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
11625 5100 m
|
||||||
|
gs 1 -1 sc (ok) col0 sh gr
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
5970 4663 m 5970 4815 l 6030 4815 l 6030 4663 l 6030 4663 l 6000 4783 l 5970 4663 l cp
|
||||||
|
eoclip
|
||||||
|
n 6000 4425 m
|
||||||
|
6000 4800 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 5970 4663 m 6000 4783 l 6030 4663 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
6630 4562 m 6630 4410 l 6570 4410 l 6570 4562 l 6570 4562 l 6600 4442 l 6630 4562 l cp
|
||||||
|
eoclip
|
||||||
|
n 6600 4800 m 6600 4650 l 6600 4575 l 6600 4500 l
|
||||||
|
6600 4425 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 6630 4562 m 6600 4442 l 6570 4562 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
12388 2730 m 12540 2730 l 12540 2670 l 12388 2670 l 12388 2670 l 12508 2700 l 12388 2730 l cp
|
||||||
|
eoclip
|
||||||
|
n 8475 2700 m
|
||||||
|
12525 2700 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 12388 2730 m 12508 2700 l 12388 2670 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
8612 2970 m 8460 2970 l 8460 3030 l 8612 3030 l 8612 3030 l 8492 3000 l 8612 2970 l cp
|
||||||
|
eoclip
|
||||||
|
n 12525 3000 m
|
||||||
|
8475 3000 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 8612 2970 m 8492 3000 l 8612 3030 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
8612 3645 m 8460 3645 l 8460 3705 l 8612 3705 l 8612 3705 l 8492 3675 l 8612 3645 l cp
|
||||||
|
eoclip
|
||||||
|
n 12525 6900 m 12000 6900 l 12000 3675 l
|
||||||
|
8475 3675 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 8612 3645 m 8492 3675 l 8612 3705 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
12388 3330 m 12540 3330 l 12540 3270 l 12388 3270 l 12388 3270 l 12508 3300 l 12388 3330 l cp
|
||||||
|
eoclip
|
||||||
|
n 8475 3975 m 12300 3975 l 12300 3300 l
|
||||||
|
12525 3300 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 12388 3330 m 12508 3300 l 12388 3270 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
12388 4905 m 12540 4905 l 12540 4845 l 12388 4845 l 12388 4845 l 12508 4875 l 12388 4905 l cp
|
||||||
|
eoclip
|
||||||
|
n 8250 4425 m 8700 4875 l
|
||||||
|
12525 4875 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 12388 4905 m 12508 4875 l 12388 4845 l col0 s
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
n 12675 2400 m 16050 2400 l 16050 7875 l 12675 7875 l
|
||||||
|
cp gs col0 s gr
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
8612 4245 m 8460 4245 l 8460 4305 l 8612 4305 l 8612 4305 l 8492 4275 l 8612 4245 l cp
|
||||||
|
eoclip
|
||||||
|
n 12525 3600 m 12375 3600 l 12375 4275 l
|
||||||
|
8475 4275 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 8612 4245 m 8492 4275 l 8612 4305 l col0 s
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
8850 5625 m
|
||||||
|
gs 1 -1 sc (Write to FLU B -> ok) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
8850 6135 m
|
||||||
|
gs 1 -1 sc (Write to FLU C -> ok) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
8550 2625 m
|
||||||
|
gs 1 -1 sc (Request 123 bytes, prefix="foo", epoch=12) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
11100 2925 m
|
||||||
|
gs 1 -1 sc ({bad_epoch,13}) col4 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
10875 3600 m
|
||||||
|
gs 1 -1 sc ({ok, proj=...}) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
8550 4500 m
|
||||||
|
gs 1 -1 sc (Write <<123 bytes>> to) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
8550 4755 m
|
||||||
|
gs 1 -1 sc (file="foo.seq_a.008", offset=0) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
13575 2625 m
|
||||||
|
gs 1 -1 sc (Server A) col0 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
8550 3900 m
|
||||||
|
gs 1 -1 sc (Req. 123 bytes, prefix="foo", epoch=13) col0 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
6075 3825 m
|
||||||
|
gs 1 -1 sc (1) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
6075 4650 m
|
||||||
|
gs 1 -1 sc (2) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
6675 4650 m
|
||||||
|
gs 1 -1 sc (3) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
10950 2850 m
|
||||||
|
gs 1 -1 sc (5) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
10725 3525 m
|
||||||
|
gs 1 -1 sc (7) col16 sh gr
|
||||||
|
/Times-Bold-iso ff 200.00 scf sf
|
||||||
|
9375 4200 m
|
||||||
|
gs 1 -1 sc (file="foo.seq_a.008", offset=0) col0 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
8400 3225 m
|
||||||
|
gs 1 -1 sc (6) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
8400 2625 m
|
||||||
|
gs 1 -1 sc (4) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
6675 3750 m
|
||||||
|
gs 1 -1 sc (16) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
8400 3900 m
|
||||||
|
gs 1 -1 sc (8) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
9225 4200 m
|
||||||
|
gs 1 -1 sc (9) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
8400 4500 m
|
||||||
|
gs 1 -1 sc (10) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
8475 5625 m
|
||||||
|
gs 1 -1 sc (12,13) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
8475 6075 m
|
||||||
|
gs 1 -1 sc (14,15) col16 sh gr
|
||||||
|
/Times-Roman-iso ff 166.67 scf sf
|
||||||
|
11400 5100 m
|
||||||
|
gs 1 -1 sc (11) col16 sh gr
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
12388 6630 m 12540 6630 l 12540 6570 l 12388 6570 l 12388 6570 l 12508 6600 l 12388 6630 l cp
|
||||||
|
eoclip
|
||||||
|
n 8475 3300 m 12150 3300 l 12150 6600 l
|
||||||
|
12525 6600 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 12388 6630 m 12508 6600 l 12388 6570 l col0 s
|
||||||
|
% here ends figure;
|
||||||
|
pagefooter
|
||||||
|
showpage
|
||||||
|
%%Trailer
|
||||||
|
%EOF
|
1568
doc/src.high-level/high-level-chain-mgr.tex
Normal file
1568
doc/src.high-level/high-level-chain-mgr.tex
Normal file
File diff suppressed because it is too large
Load diff
1525
doc/src.high-level/high-level-machi.tex
Normal file
1525
doc/src.high-level/high-level-machi.tex
Normal file
File diff suppressed because it is too large
Load diff
145
doc/src.high-level/read-flow.eps
Normal file
145
doc/src.high-level/read-flow.eps
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
%!PS-Adobe-3.0 EPSF-2.0
|
||||||
|
%%BoundingBox: 0 0 420.000000 166.599991
|
||||||
|
%%Creator: mscgen 0.18
|
||||||
|
%%EndComments
|
||||||
|
0.700000 0.700000 scale
|
||||||
|
0 0 moveto
|
||||||
|
0 238 lineto
|
||||||
|
600 238 lineto
|
||||||
|
600 0 lineto
|
||||||
|
closepath
|
||||||
|
clip
|
||||||
|
%PageTrailer
|
||||||
|
%Page: 1 1
|
||||||
|
/Helvetica findfont
|
||||||
|
10 scalefont
|
||||||
|
setfont
|
||||||
|
/Helvetica findfont
|
||||||
|
12 scalefont
|
||||||
|
setfont
|
||||||
|
0 238 translate
|
||||||
|
/mtrx matrix def
|
||||||
|
/ellipse
|
||||||
|
{ /endangle exch def
|
||||||
|
/startangle exch def
|
||||||
|
/ydia exch def
|
||||||
|
/xdia exch def
|
||||||
|
/y exch def
|
||||||
|
/x exch def
|
||||||
|
/savematrix mtrx currentmatrix def
|
||||||
|
x y translate
|
||||||
|
xdia 2 div ydia 2 div scale
|
||||||
|
1 -1 scale
|
||||||
|
0 0 1 startangle endangle arc
|
||||||
|
savematrix setmatrix
|
||||||
|
} def
|
||||||
|
(client) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 75 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
75 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(Projection) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 225 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
225 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(ProjStore_C) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 375 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
375 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
(FLU_C) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup dup newpath 525 -17 moveto 2 div neg 0 rmoveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
525 -15 moveto dup stringwidth pop 2 div neg 0 rmoveto show
|
||||||
|
newpath 75 -22 moveto 75 -49 lineto stroke
|
||||||
|
newpath 225 -22 moveto 225 -49 lineto stroke
|
||||||
|
newpath 375 -22 moveto 375 -49 lineto stroke
|
||||||
|
newpath 525 -22 moveto 525 -49 lineto stroke
|
||||||
|
newpath 75 -35 moveto 225 -35 lineto stroke
|
||||||
|
newpath 225 -35 moveto 215 -41 lineto stroke
|
||||||
|
(get current) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 122 -33 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
122 -33 moveto show
|
||||||
|
newpath 75 -49 moveto 75 -76 lineto stroke
|
||||||
|
newpath 225 -49 moveto 225 -76 lineto stroke
|
||||||
|
newpath 375 -49 moveto 375 -76 lineto stroke
|
||||||
|
newpath 525 -49 moveto 525 -76 lineto stroke
|
||||||
|
newpath 225 -62 moveto 75 -62 lineto stroke
|
||||||
|
newpath 75 -62 moveto 85 -68 lineto stroke
|
||||||
|
(ok, #12...) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 126 -60 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
126 -60 moveto show
|
||||||
|
newpath 75 -76 moveto 75 -103 lineto stroke
|
||||||
|
newpath 225 -76 moveto 225 -103 lineto stroke
|
||||||
|
newpath 375 -76 moveto 375 -103 lineto stroke
|
||||||
|
newpath 525 -76 moveto 525 -103 lineto stroke
|
||||||
|
newpath 75 -89 moveto 525 -89 lineto stroke
|
||||||
|
newpath 525 -89 moveto 515 -95 lineto stroke
|
||||||
|
(read "foo.seq_a.009" offset=447 bytes=123 epoch=12) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 157 -87 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
157 -87 moveto show
|
||||||
|
newpath 75 -103 moveto 75 -130 lineto stroke
|
||||||
|
newpath 225 -103 moveto 225 -130 lineto stroke
|
||||||
|
newpath 375 -103 moveto 375 -130 lineto stroke
|
||||||
|
newpath 525 -103 moveto 525 -130 lineto stroke
|
||||||
|
newpath 525 -116 moveto 75 -116 lineto stroke
|
||||||
|
newpath 75 -116 moveto 85 -122 lineto stroke
|
||||||
|
1.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
(bad_epoch, 13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 261 -114 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
1.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
261 -114 moveto show
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
newpath 75 -130 moveto 75 -157 lineto stroke
|
||||||
|
newpath 225 -130 moveto 225 -157 lineto stroke
|
||||||
|
newpath 375 -130 moveto 375 -157 lineto stroke
|
||||||
|
newpath 525 -130 moveto 525 -157 lineto stroke
|
||||||
|
newpath 75 -143 moveto 375 -143 lineto stroke
|
||||||
|
newpath 375 -143 moveto 365 -149 lineto stroke
|
||||||
|
(get epoch #13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 187 -141 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
187 -141 moveto show
|
||||||
|
newpath 75 -157 moveto 75 -184 lineto stroke
|
||||||
|
newpath 225 -157 moveto 225 -184 lineto stroke
|
||||||
|
newpath 375 -157 moveto 375 -184 lineto stroke
|
||||||
|
newpath 525 -157 moveto 525 -184 lineto stroke
|
||||||
|
newpath 375 -170 moveto 75 -170 lineto stroke
|
||||||
|
newpath 75 -170 moveto 85 -176 lineto stroke
|
||||||
|
(ok, #13...) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 201 -168 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
201 -168 moveto show
|
||||||
|
newpath 75 -184 moveto 75 -211 lineto stroke
|
||||||
|
newpath 225 -184 moveto 225 -211 lineto stroke
|
||||||
|
newpath 375 -184 moveto 375 -211 lineto stroke
|
||||||
|
newpath 525 -184 moveto 525 -211 lineto stroke
|
||||||
|
newpath 75 -197 moveto 525 -197 lineto stroke
|
||||||
|
newpath 525 -197 moveto 515 -203 lineto stroke
|
||||||
|
(read "foo.seq_a.009" offset=447 bytes=123 epoch=13) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 157 -195 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
157 -195 moveto show
|
||||||
|
newpath 75 -211 moveto 75 -238 lineto stroke
|
||||||
|
newpath 225 -211 moveto 225 -238 lineto stroke
|
||||||
|
newpath 375 -211 moveto 375 -238 lineto stroke
|
||||||
|
newpath 525 -211 moveto 525 -238 lineto stroke
|
||||||
|
newpath 525 -224 moveto 75 -224 lineto stroke
|
||||||
|
newpath 75 -224 moveto 85 -230 lineto stroke
|
||||||
|
(ok, <<...123...>>) dup stringwidth
|
||||||
|
1.000000 1.000000 1.000000 setrgbcolor
|
||||||
|
pop dup newpath 257 -222 moveto 0 rlineto 0 11 rlineto neg 0 rlineto closepath fill
|
||||||
|
0.000000 0.000000 0.000000 setrgbcolor
|
||||||
|
257 -222 moveto show
|
1312
doc/src.high-level/sigplanconf.cls
Normal file
1312
doc/src.high-level/sigplanconf.cls
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue