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
|
||||
|
||||
* __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
|
||||
(hoped to be) sufficient for managing the Chain Replication state of a
|
||||
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
|
||||
|
||||
* 1. Abstract
|
||||
Yo, this is the first draft of a document that attempts to describe a
|
||||
proposed self-management algorithm for Machi's chain replication.
|
||||
Welcome! Sit back and enjoy the disjointed prose.
|
||||
The high level design of the Machi "chain manager" has moved to the
|
||||
[[high-level-chain-manager.pdf][Machi chain manager high level design]] document.
|
||||
|
||||
We attempt to describe first the self-management and self-reliance
|
||||
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
|
||||
We try to discuss the network partition simulator that the
|
||||
algorithm runs in and how the algorithm behaves in both symmetric and
|
||||
asymmetric network partition scenarios. The symmetric partition cases
|
||||
are all working well (surprising in a good way), and the asymmetric
|
||||
|
@ -46,325 +36,13 @@ the simulator.
|
|||
%% under the License.
|
||||
#+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?
|
||||
|
||||
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
|
||||
* 4. Diagram of the self-management algorithm
|
||||
** Introduction
|
||||
Refer to the diagram
|
||||
[[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
|
||||
augment the quorum majority UPI scheme.)
|
||||
|
||||
* 10. The Network Partition Simulator
|
||||
* 5. The Network Partition Simulator
|
||||
** Overview
|
||||
The function machi_chain_manager1_test:convergence_demo_test()
|
||||
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