aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorng0 <ng0@infotropique.org>2017-09-25 19:58:22 +0000
committerng0 <ng0@infotropique.org>2017-09-25 19:58:22 +0000
commitb5d7a1a11c713fbfb33643757a92928867cdad4b (patch)
tree5034cd5d5922ceb33915cc59c7728deaf4370e09
parent485460866a75569682ee7b8516229002e3271031 (diff)
downloadgnunet-b5d7a1a11c713fbfb33643757a92928867cdad4b.tar.gz
gnunet-b5d7a1a11c713fbfb33643757a92928867cdad4b.zip
Attemot to fix #5134
-rw-r--r--doc/gnunet-c-tutorial.texi102
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
58any questions or problems! Check here how to contact the GNUnet 58any questions or problems! Check here how to contact the GNUnet
59team: @uref{https://gnunet.org/contact_information} 59team: @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
71Installing 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
79Introduction to GNUnet Architecture
80
81First 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
89Developing 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
155Assuming all dependencies are installed, the following commands will 201Assuming 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
216GNUnet is organized in layers and services. Each service is composed of a 262GNUnet is organized in layers and services. Each service is composed of a
217main service implementation and a client library for other programs to use 263main 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.
351In practice, you might prefer the automated method 397In 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
356We will now start a second peer on your machine. 408We 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
658file). 716file).
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.
746Before you can test the client you've written so far, you'll need to also 810Before you can test the client you've written so far, you'll need to also
747implement the corresponding service. 811implement 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:
900The service handle @code{peerstore_handle} will be needed for all subsequent 976The service handle @code{peerstore_handle} will be needed for all subsequent
901PEERSTORE operations. 977PEERSTORE 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.
992It is not a hard limit, but a good approximation will make the DHT more 1075It is not a hard limit, but a good approximation will make the DHT more
993efficient. 1076efficient.
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
997Since the DHT is a dynamic environment (peers join and leave frequently) 1087Since the DHT is a dynamic environment (peers join and leave frequently)
@@ -1049,6 +1139,14 @@ in the service's respective directory. The
1049mandatory functions that need to be implemented for a block plugin are 1139mandatory functions that need to be implemented for a block plugin are
1050described in the following sections. 1140described 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