Attemot to fix #5134
authorng0 <ng0@infotropique.org>
Mon, 25 Sep 2017 19:58:22 +0000 (19:58 +0000)
committerng0 <ng0@infotropique.org>
Mon, 25 Sep 2017 19:58:22 +0000 (19:58 +0000)
doc/gnunet-c-tutorial.texi

index 4f56ae5c4971f81fb24684ed35abea3f3cb55fd0..3ff822795f6ea52cf6519e380a628cf602ea8f8b 100644 (file)
@@ -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