gdp / apps / README @ master
History | View | Annotate | Download (3.1 KB)
1 |
This file summarizes the usage of at least some of the applications |
---|---|
2 |
in this directory (more to come). |
3 |
|
4 |
GCL means "GDP Channel/Log". GCLs consist of a series of opaque |
5 |
(to the GDP) records numbered from 1. Although records also have |
6 |
commit timestamps it is not possible to use those as keys at this |
7 |
time; in particular, timestamps are not necessarily unique. |
8 |
|
9 |
Nearly all programs accept a "-D" flag to set debugging options. |
10 |
|
11 |
|
12 |
NAMING |
13 |
|
14 |
Internal GCL names are represented as binary strings of 256 bits. |
15 |
Externally this is shown as a 43-character string that is a variant |
16 |
on base64 encoding designed to be compatible with URIs. |
17 |
|
18 |
Alternatively, a user may use an arbitrary string. It is recommended |
19 |
that this look like a UNIX pathname but using another character as |
20 |
the separator (to make the names easy to encode in a URI). The valid |
21 |
characters for URIs are "-", "_", ".", and "~". This string is |
22 |
hashed to an internal name using sha256. For example, the name |
23 |
"x" is the same as "LXEWQrcmsEQBYnyp-6wy9chTD7GQPMTbAiWHF5IaSIE". |
24 |
At the moment all users share a namespace, but in the future the |
25 |
user's public key will be included. |
26 |
|
27 |
|
28 |
GDP-WRITER |
29 |
|
30 |
The gdp-writer program creates or appends to a GCL. Although |
31 |
the GDP accepts binary input, this program reads newline terminated |
32 |
text from the standard input. Each line is written to the GCL |
33 |
named on the command line, or if no name is given, to a GCL with |
34 |
a random name (which will be printed). |
35 |
|
36 |
GCLs are created unless the -a (append) flag is included. |
37 |
|
38 |
|
39 |
GDP-READER |
40 |
|
41 |
The gdp-reader program (unsurprisingly) reads and prints data from |
42 |
a GCL. It assumes that the data is text; if not it will print random |
43 |
binary gibberish. |
44 |
|
45 |
There are three "modes" for reading. The default does individual |
46 |
read calls for each record being returned. The "-m" flag enables |
47 |
"multiread" which does one call to the GDP that returns multiple |
48 |
results. The "-s" flag enables "subscribe" mode, which is like |
49 |
multiread but waits for new data to be written to a GCL (i.e., it |
50 |
doesn't necessarily complete in finite time). |
51 |
|
52 |
All modes take a "-f" flag to specify the first record number and a |
53 |
"-n" flag to set the number of records to be returned. If the -f |
54 |
value is negative it counts from the end of the GCL, i.e., the |
55 |
most recently written records. If a negative -f value would specify |
56 |
a non-positive record number (i.e., a record before the start of the |
57 |
GCL) then 1 is used. |
58 |
|
59 |
If the -n value is zero it means "infinite" (this is also the |
60 |
default). For all but -s mode this really means "end of GCL", as |
61 |
does a value larger than the actual number of records in the GCL. |
62 |
Hence, "-n N" really means "at most N records". |
63 |
|
64 |
In -s mode the read will will continue to wait for more data to be |
65 |
published to the GCL. For example, the following commands will act |
66 |
as a transmission channel: |
67 |
|
68 |
Window 1> gdp-writer xyzzy |
69 |
Window 2> gdp-reader -s xyzzy |
70 |
Window 1> (input data) |
71 |
|
72 |
Note that the gdp-writer has to be started first so that xyzzy |
73 |
exists when gdp-reader starts up. |
74 |
|
75 |
|
76 |
GDP-REST |
77 |
|
78 |
This is the REST interface to the GDP. Its use is described in the |
79 |
README file in the parent directory. |
80 |
|
81 |
|
82 |
RW-BENCH |
83 |
|
84 |
Simple performance testing. Documentation is To Be Done. |