diff options
author | ng0 <ng0@infotropique.org> | 2017-09-25 19:58:22 +0000 |
---|---|---|
committer | ng0 <ng0@infotropique.org> | 2017-09-25 19:58:22 +0000 |
commit | b5d7a1a11c713fbfb33643757a92928867cdad4b (patch) | |
tree | 5034cd5d5922ceb33915cc59c7728deaf4370e09 | |
parent | 485460866a75569682ee7b8516229002e3271031 (diff) | |
download | gnunet-b5d7a1a11c713fbfb33643757a92928867cdad4b.tar.gz gnunet-b5d7a1a11c713fbfb33643757a92928867cdad4b.zip |
Attemot to fix #5134
-rw-r--r-- | doc/gnunet-c-tutorial.texi | 102 |
1 files changed, 100 insertions, 2 deletions
diff --git a/doc/gnunet-c-tutorial.texi b/doc/gnunet-c-tutorial.texi index 4f56ae5c4..3ff822795 100644 --- a/doc/gnunet-c-tutorial.texi +++ b/doc/gnunet-c-tutorial.texi | |||
@@ -58,6 +58,48 @@ important and do not hesitate to contact the GNUnet team if you have | |||
58 | any questions or problems! Check here how to contact the GNUnet | 58 | any questions or problems! Check here how to contact the GNUnet |
59 | team: @uref{https://gnunet.org/contact_information} | 59 | team: @uref{https://gnunet.org/contact_information} |
60 | 60 | ||
61 | @menu | ||
62 | |||
63 | * Installing GNUnet:: Installing GNUnet | ||
64 | * Introduction to GNUnet Architecture:: Introduction to GNUnet Architecture | ||
65 | * First Steps with GNUnet:: First Steps with GNUnet | ||
66 | * Developing Applications:: Developing Applications | ||
67 | |||
68 | @detailmenu | ||
69 | --- The Detailed Node Listing --- | ||
70 | |||
71 | Installing GNUnet | ||
72 | |||
73 | * Obtaining a stable version:: | ||
74 | * Installing Build Tool Chain and Dependencies:: | ||
75 | * Obtaining the latest version from Git:: | ||
76 | * Compiling and Installing GNUnet:: | ||
77 | * Common Issues - Check your GNUnet installation:: | ||
78 | |||
79 | Introduction to GNUnet Architecture | ||
80 | |||
81 | First Steps with GNUnet | ||
82 | |||
83 | * Configure your peer:: | ||
84 | * Start a peer:: | ||
85 | * Monitor a peer:: | ||
86 | * Starting Two Peers by Hand:: | ||
87 | * Starting Peers Using the Testbed Service:: | ||
88 | |||
89 | Developing Applications | ||
90 | |||
91 | * gnunet-ext:: | ||
92 | * Adapting the Template:: | ||
93 | * Writing a Client Application:: | ||
94 | * Writing a Service:: | ||
95 | * Interacting directly with other Peers using the CORE Service:: | ||
96 | * Storing peer-specific data using the PEERSTORE service:: | ||
97 | * Using the DHT:: | ||
98 | * Debugging with gnunet-arm:: | ||
99 | |||
100 | @end detailmenu | ||
101 | @end menu | ||
102 | |||
61 | @node Installing GNUnet | 103 | @node Installing GNUnet |
62 | @chapter Installing GNUnet | 104 | @chapter Installing GNUnet |
63 | 105 | ||
@@ -150,6 +192,10 @@ $ sudo make install | |||
150 | $ cd .. | 192 | $ cd .. |
151 | @end example | 193 | @end example |
152 | 194 | ||
195 | @menu | ||
196 | * Installation:: | ||
197 | @end menu | ||
198 | |||
153 | @node Installation | 199 | @node Installation |
154 | @subsection Installation | 200 | @subsection Installation |
155 | Assuming all dependencies are installed, the following commands will | 201 | Assuming all dependencies are installed, the following commands will |
@@ -210,8 +256,8 @@ PASS: test_gnunet_prefix | |||
210 | ============= | 256 | ============= |
211 | @end example | 257 | @end example |
212 | 258 | ||
213 | @node Background: GNUnet Architecture | 259 | @node Introduction to GNUnet Architecture |
214 | @chapter Background: GNUnet Architecture | 260 | @chapter Introduction to GNUnet Architecture |
215 | 261 | ||
216 | GNUnet is organized in layers and services. Each service is composed of a | 262 | GNUnet is organized in layers and services. Each service is composed of a |
217 | main service implementation and a client library for other programs to use | 263 | main service implementation and a client library for other programs to use |
@@ -351,6 +397,12 @@ The process is rather painful, but the description is somewhat instructive. | |||
351 | In practice, you might prefer the automated method | 397 | In practice, you might prefer the automated method |
352 | (@pxref{Starting Peers Using the Testbed Service}). | 398 | (@pxref{Starting Peers Using the Testbed Service}). |
353 | 399 | ||
400 | @menu | ||
401 | * Setup a second peer:: | ||
402 | * Start the second peer and connect the peers:: | ||
403 | * How to connect manually:: | ||
404 | @end menu | ||
405 | |||
354 | @node Setup a second peer | 406 | @node Setup a second peer |
355 | @subsection Setup a second peer | 407 | @subsection Setup a second peer |
356 | We will now start a second peer on your machine. | 408 | We will now start a second peer on your machine. |
@@ -605,6 +657,12 @@ used, which is typically not needed): | |||
605 | @verbatiminclude tutorial-examples/001.c | 657 | @verbatiminclude tutorial-examples/001.c |
606 | @end example | 658 | @end example |
607 | 659 | ||
660 | @menu | ||
661 | * Handling command-line options:: | ||
662 | * Writing a Client Library:: | ||
663 | * Writing a user interface:: | ||
664 | @end menu | ||
665 | |||
608 | @node Handling command-line options | 666 | @node Handling command-line options |
609 | @subsection Handling command-line options | 667 | @subsection Handling command-line options |
610 | 668 | ||
@@ -657,6 +715,12 @@ Unique message types must be defined for each message struct in the | |||
657 | @file{gnunet\_protocols.h} header (or an extension-specific include | 715 | @file{gnunet\_protocols.h} header (or an extension-specific include |
658 | file). | 716 | file). |
659 | 717 | ||
718 | @menu | ||
719 | * Connecting to the Service:: | ||
720 | * Sending messages:: | ||
721 | * Receiving Replies from the Service:: | ||
722 | @end menu | ||
723 | |||
660 | @node Connecting to the Service | 724 | @node Connecting to the Service |
661 | @subsubsection Connecting to the Service | 725 | @subsubsection Connecting to the Service |
662 | 726 | ||
@@ -746,6 +810,11 @@ command-line to the service. | |||
746 | Before you can test the client you've written so far, you'll need to also | 810 | Before you can test the client you've written so far, you'll need to also |
747 | implement the corresponding service. | 811 | implement the corresponding service. |
748 | 812 | ||
813 | @menu | ||
814 | * Code Placement:: | ||
815 | * Starting a Service:: | ||
816 | @end menu | ||
817 | |||
749 | @node Code Placement | 818 | @node Code Placement |
750 | @subsection Code Placement | 819 | @subsection Code Placement |
751 | 820 | ||
@@ -810,6 +879,13 @@ is connect to the @code{CORE} service using: | |||
810 | @verbatiminclude tutorial-examples/009.c | 879 | @verbatiminclude tutorial-examples/009.c |
811 | @end example | 880 | @end example |
812 | 881 | ||
882 | @menu | ||
883 | * New P2P connections:: | ||
884 | * Receiving P2P Messages:: | ||
885 | * Sending P2P Messages:: | ||
886 | * End of P2P connections:: | ||
887 | @end menu | ||
888 | |||
813 | @node New P2P connections | 889 | @node New P2P connections |
814 | @subsection New P2P connections | 890 | @subsection New P2P connections |
815 | 891 | ||
@@ -900,6 +976,13 @@ The first step is to start a connection to the PEERSTORE service: | |||
900 | The service handle @code{peerstore_handle} will be needed for all subsequent | 976 | The service handle @code{peerstore_handle} will be needed for all subsequent |
901 | PEERSTORE operations. | 977 | PEERSTORE operations. |
902 | 978 | ||
979 | @menu | ||
980 | * Storing records:: | ||
981 | * Retrieving records:: | ||
982 | * Monitoring records:: | ||
983 | * Disconnecting from PEERSTORE:: | ||
984 | @end menu | ||
985 | |||
903 | @node Storing records | 986 | @node Storing records |
904 | @subsection Storing records | 987 | @subsection Storing records |
905 | 988 | ||
@@ -992,6 +1075,13 @@ The second parameter indicates how many requests in parallel to expect. | |||
992 | It is not a hard limit, but a good approximation will make the DHT more | 1075 | It is not a hard limit, but a good approximation will make the DHT more |
993 | efficient. | 1076 | efficient. |
994 | 1077 | ||
1078 | @menu | ||
1079 | * Storing data in the DHT:: | ||
1080 | * Obtaining data from the DHT:: | ||
1081 | * Implementing a block plugin:: | ||
1082 | * Monitoring the DHT:: | ||
1083 | @end menu | ||
1084 | |||
995 | @node Storing data in the DHT | 1085 | @node Storing data in the DHT |
996 | @subsection Storing data in the DHT | 1086 | @subsection Storing data in the DHT |
997 | Since the DHT is a dynamic environment (peers join and leave frequently) | 1087 | Since the DHT is a dynamic environment (peers join and leave frequently) |
@@ -1049,6 +1139,14 @@ in the service's respective directory. The | |||
1049 | mandatory functions that need to be implemented for a block plugin are | 1139 | mandatory functions that need to be implemented for a block plugin are |
1050 | described in the following sections. | 1140 | described in the following sections. |
1051 | 1141 | ||
1142 | @menu | ||
1143 | * Validating requests and replies:: | ||
1144 | * Deriving a key from a reply:: | ||
1145 | * Initialization of the plugin:: | ||
1146 | * Shutdown of the plugin:: | ||
1147 | * Integration of the plugin with the build system:: | ||
1148 | @end menu | ||
1149 | |||
1052 | @node Validating requests and replies | 1150 | @node Validating requests and replies |
1053 | @subsubsection Validating requests and replies | 1151 | @subsubsection Validating requests and replies |
1054 | 1152 | ||