blob: 4fd607ae15de1b34ae53c9c50ab3f2c9ce5a95ea [file] [log] [blame] [view]
Andrea Tosatto672b9a72016-01-05 16:18:20 +01001# ndncatchunks and ndnputchunks
2
3**ndncatchunks** and **ndnputchunks** are a pair of programs to transfer a file as Data segments.
4
5* **ndnputchunks** is a producer program that reads a file from the standard input, and makes
6 it available as NDN Data segments. It appends version and segment number components
7 to the specified name, according to the
8 [NDN naming conventions](http://named-data.net/publications/techreports/ndn-tr-22-ndn-memo-naming-conventions/).
9
10* **ndncatchunks** is a consumer program that fetches Data segments of a file, optionally
11 discovering the latest version of the file, and writes the content of the retrieved file to
12 the standard output.
13
14## Version discovery methods
15
16* `fixed` : ndncatchunks will send an interest attempting to find a data packet with the
17 specified prefix and version number. A version component must be present at the
18 end of the user-specified NDN name.
19
20* `iterative`: ndncatchunks will send a series of interests with ChildSelector set to prefer the
21 rightmost child and Exclude selectors, attempting to find a data packet with the
22 specified prefix and the latest (the largest in the NDN canonical ordering)
23 version number. The version is declared "latest" after a predefined number of
24 data retrieval timeouts (default: 1).
25
Weiwei Liu13fda5b2016-09-28 03:29:07 +000026The default discovery method is `iterative`.
Andrea Tosatto672b9a72016-01-05 16:18:20 +010027
28
29## Usage examples
30
31### Publishing
32
33The following command will publish the text of the GPL-3 license under the `/localhost/demo/gpl3`
34prefix:
35
36 ndnputchunks ndn:/localhost/demo/gpl3 < /usr/share/common-licenses/GPL-3
37
38To find the published version you have to start ndnputchunks with the `-p` command line option,
39for example:
40
41 ndnputchunks -p ndn:/localhost/demo/gpl3 < /usr/share/common-licenses/GPL-3
42
43This command will print the published version to the standard output.
44
45To publish data with a specific version, you must append a version component to the end of the
46prefix. The version component must follow the aforementioned NDN naming conventions.
47For example, the following command will publish the version `%FD%00%00%01Qc%CF%17v` of the
48`/localhost/demo/gpl3` prefix:
49
50 ndnputchunks ndn:/localhost/demo/gpl3/%FD%00%00%01Qc%CF%17v < /usr/share/common-licenses/GPL-3
51
52If the version component is not valid, a new well-formed version will be generated and appended
53to the supplied NDN name.
54
55
56### Retrieval
57
58To retrieve the latest version of a published file, the following command can be used:
59
60 ndncatchunks -d iterative ndn:/localhost/demo/gpl3
61
62This command will use the iterative method to discover the latest version of the file.
63
Weiwei Liu72c96d22016-09-27 23:06:21 -070064To fetch a specific version of a published file, you can use the `fixed` version discovery method.
65In this case the version needs to be supplied as part of the name. For example, if the version
66is known to be `%FD%00%00%01Qc%CF%17v`, the following command will fetch that exact version of the
67file:
Andrea Tosatto672b9a72016-01-05 16:18:20 +010068
Weiwei Liu13fda5b2016-09-28 03:29:07 +000069 ndncatchunks -d fixed ndn:/localhost/demo/gpl3/%FD%00%00%01Qc%CF%17v
Andrea Tosatto672b9a72016-01-05 16:18:20 +010070
71
72For more information, run the programs with `--help` as argument.