From b5d7a1a11c713fbfb33643757a92928867cdad4b Mon Sep 17 00:00:00 2001 From: ng0 Date: Mon, 25 Sep 2017 19:58:22 +0000 Subject: [PATCH] Attemot to fix #5134 --- doc/gnunet-c-tutorial.texi | 102 ++++++++++++++++++++++++++++++++++++- 1 file 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 any questions or problems! Check here how to contact the GNUnet team: @uref{https://gnunet.org/contact_information} +@menu + +* Installing GNUnet:: Installing GNUnet +* Introduction to GNUnet Architecture:: Introduction to GNUnet Architecture +* First Steps with GNUnet:: First Steps with GNUnet +* Developing Applications:: Developing Applications + +@detailmenu + --- The Detailed Node Listing --- + +Installing GNUnet + +* Obtaining a stable version:: +* Installing Build Tool Chain and Dependencies:: +* Obtaining the latest version from Git:: +* Compiling and Installing GNUnet:: +* Common Issues - Check your GNUnet installation:: + +Introduction to GNUnet Architecture + +First Steps with GNUnet + +* Configure your peer:: +* Start a peer:: +* Monitor a peer:: +* Starting Two Peers by Hand:: +* Starting Peers Using the Testbed Service:: + +Developing Applications + +* gnunet-ext:: +* Adapting the Template:: +* Writing a Client Application:: +* Writing a Service:: +* Interacting directly with other Peers using the CORE Service:: +* Storing peer-specific data using the PEERSTORE service:: +* Using the DHT:: +* Debugging with gnunet-arm:: + +@end detailmenu +@end menu + @node Installing GNUnet @chapter Installing GNUnet @@ -150,6 +192,10 @@ $ sudo make install $ cd .. @end example +@menu +* Installation:: +@end menu + @node Installation @subsection Installation Assuming all dependencies are installed, the following commands will @@ -210,8 +256,8 @@ PASS: test_gnunet_prefix ============= @end example -@node Background: GNUnet Architecture -@chapter Background: GNUnet Architecture +@node Introduction to GNUnet Architecture +@chapter Introduction to GNUnet Architecture GNUnet is organized in layers and services. Each service is composed of a 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. In practice, you might prefer the automated method (@pxref{Starting Peers Using the Testbed Service}). +@menu +* Setup a second peer:: +* Start the second peer and connect the peers:: +* How to connect manually:: +@end menu + @node Setup a second peer @subsection Setup a second peer We will now start a second peer on your machine. @@ -605,6 +657,12 @@ used, which is typically not needed): @verbatiminclude tutorial-examples/001.c @end example +@menu +* Handling command-line options:: +* Writing a Client Library:: +* Writing a user interface:: +@end menu + @node Handling command-line options @subsection Handling command-line options @@ -657,6 +715,12 @@ Unique message types must be defined for each message struct in the @file{gnunet\_protocols.h} header (or an extension-specific include file). +@menu +* Connecting to the Service:: +* Sending messages:: +* Receiving Replies from the Service:: +@end menu + @node Connecting to the Service @subsubsection Connecting to the Service @@ -746,6 +810,11 @@ command-line to the service. Before you can test the client you've written so far, you'll need to also implement the corresponding service. +@menu +* Code Placement:: +* Starting a Service:: +@end menu + @node Code Placement @subsection Code Placement @@ -810,6 +879,13 @@ is connect to the @code{CORE} service using: @verbatiminclude tutorial-examples/009.c @end example +@menu +* New P2P connections:: +* Receiving P2P Messages:: +* Sending P2P Messages:: +* End of P2P connections:: +@end menu + @node New P2P connections @subsection New P2P connections @@ -900,6 +976,13 @@ The first step is to start a connection to the PEERSTORE service: The service handle @code{peerstore_handle} will be needed for all subsequent PEERSTORE operations. +@menu +* Storing records:: +* Retrieving records:: +* Monitoring records:: +* Disconnecting from PEERSTORE:: +@end menu + @node Storing records @subsection Storing records @@ -992,6 +1075,13 @@ The second parameter indicates how many requests in parallel to expect. It is not a hard limit, but a good approximation will make the DHT more efficient. +@menu +* Storing data in the DHT:: +* Obtaining data from the DHT:: +* Implementing a block plugin:: +* Monitoring the DHT:: +@end menu + @node Storing data in the DHT @subsection Storing data in the DHT Since the DHT is a dynamic environment (peers join and leave frequently) @@ -1049,6 +1139,14 @@ in the service's respective directory. The mandatory functions that need to be implemented for a block plugin are described in the following sections. +@menu +* Validating requests and replies:: +* Deriving a key from a reply:: +* Initialization of the plugin:: +* Shutdown of the plugin:: +* Integration of the plugin with the build system:: +@end menu + @node Validating requests and replies @subsubsection Validating requests and replies -- 2.25.1