[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet-texinfo] 01/02: some more warnings eliminated from
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet-texinfo] 01/02: some more warnings eliminated from developer.texi |
Date: |
Wed, 24 May 2017 23:50:01 +0200 |
This is an automated email from the git hooks/post-receive script.
ng0 pushed a commit to branch master
in repository gnunet-texinfo.
commit 3a1e4b6ebb1fbc37d23bfb80719c9571bf229a78
Author: Adriano Peluso <address@hidden>
AuthorDate: Sun May 21 08:47:57 2017 +0200
some more warnings eliminated from developer.texi
Signed-off-by: ng0 <address@hidden>
---
developer.texi | 290 +++++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 263 insertions(+), 27 deletions(-)
diff --git a/developer.texi b/developer.texi
index 13a1eba..c3aae19 100644
--- a/developer.texi
+++ b/developer.texi
@@ -42,9 +42,79 @@ these restrictions on your account. We're sorry for this
inconvenience;
however, few people would want to read this site if 99% of it was
advertisements for bogus websites.
+
+
@c ***************************************************************************
address@hidden DevelperIntroduction
address@hidden DeveloperIntroduction
+
+
+
+
+
+
+
address@hidden
+* Developer Introduction::
+* Code overview::
+* System Architecture::
+* Subsystem stability::
+* Naming conventions and coding style guide::
+* Build-system::
+* Developing extensions for GNUnet using the gnunet-ext template::
+* Writing testcases::
+* GNUnet's TESTING library::
+* API::
+* Finer control over peer stop::
+* Helper functions::
+* Testing with multiple processes::
+* Performance regression analysis with Gauger::
+* GNUnet's TESTBED Subsystem::
+* libgnunetutil::
+* Logging::
+* Interprocess communication API (IPC)::
+* Cryptography API::
+* Message Queue API::
+* Service API::
+* Optimizing Memory Consumption of GNUnet's (Multi-) Hash Maps::
+* The CONTAINER_MDLL API::
+* The Automatic Restart Manager (ARM)::
+* Basic functionality::
+* Key configuration options::
+* Availability2::
+* Reliability::
+* GNUnet's TRANSPORT Subsystem::
+* Address validation protocol::
+* NAT library::
+* Distance-Vector plugin::
+* SMTP plugin::
+* Bluetooth plugin::
+* WLAN plugin::
+* The ATS Subsystem::
+* GNUnet's CORE Subsystem::
+* Limitations::
+* When is a peer "connected"?::
+* libgnunetcore::
+* The CORE Client-Service Protocol::
+* The CORE Peer-to-Peer Protocol::
+* GNUnet's CADET subsystem::
+* libgnunetcadet::
+* GNUnet's NSE subsystem::
+* GNUnet's HOSTLIST subsystem::
+* GNUnet's IDENTITY subsystem::
+* GNUnet's NAMESTORE Subsystem::
+* GNUnet's PEERINFO subsystem::
+* GNUnet's PEERSTORE subsystem::
+* GNUnet's STATISTICS subsystem::
+* GNUnet's Distributed Hash Table (DHT)::
+* The GNU Name System (GNS)::
+* The GNS Namecache::
+* The REVOCATION Subsystem::
+* Dissemination::
+* GNUnet's File-sharing (FS) Subsystem::
+* GNUnet's REGEX Subsystem::
address@hidden menu
+
address@hidden Developer Introduction
address@hidden Developer Introduction
This developer handbook is intended as first introduction to GNUnet for new
developers that want to extend the GNUnet framework. After the introduction,
@@ -100,9 +170,15 @@ Automatically generated, current reports on the test suite
are here.
Current reports on test coverage are here.
@end itemize
+
+
@c ***************************************************************************
address@hidden
+* Project overview::
address@hidden menu
+
@node Project overview
address@hidden Project overview
address@hidden Project overview
The GNUnet project consists at this point of several sub-projects. This section
is supposed to give an initial overview about the various sub-projects. Note
@@ -477,11 +553,31 @@ This subsystem does not have an
API/IPC-protocol/P2P-protocol
Here you can find some rules to help you write code for GNUnet.
+
+
@c ***************************************************************************
address@hidden
+* Naming conventions::
+* Coding style::
address@hidden menu
+
@node Naming conventions
@subsection Naming conventions
+
@c ***************************************************************************
address@hidden
+* include files::
+* binaries::
+* logging::
+* configuration::
+* exported symbols::
+* private (library-internal) symbols (including structs and macros)::
+* testcases::
+* performance tests::
+* src/ directories::
address@hidden menu
+
@node include files
@subsubsection include files
@@ -808,7 +904,7 @@ and run @code{ldconfig} or your add it to the environmental
variable
@c ***************************************************************************
@node Writing testcases
address@hidden Writing testcases
address@hidden Writing testcases
Ideally, any non-trivial GNUnet code should be covered by automated testcases.
Testcases should reside in the same place as the code that is being tested. The
@@ -1151,7 +1247,18 @@ use this path to start helper binaries both locally and
remotely.
Testbed API can accessed by including "gnunet_testbed_service.h" file and
linking with -lgnunettestbed.
+
+
@c ***************************************************************************
address@hidden
+* Supported Topologies::
+* Hosts file format::
+* Topology file format::
+* Testbed Barriers::
+* Automatic large-scale deployment of GNUnet in the PlanetLab testbed::
+* TESTBED Caveats::
address@hidden menu
+
@node Supported Topologies
@subsection Supported Topologies
@@ -1328,7 +1435,12 @@ uninitialised barrier results in failure.
@code{GNUNET_TESTBED_barrier_wait_cancel()} cancels the notification registered
by @code{GNUNET_TESTBED_barrier_wait()}.
+
@c ***************************************************************************
address@hidden
+* Implementation::
address@hidden menu
+
@node Implementation
@subsubsection Implementation
@@ -1409,7 +1521,15 @@ Please also check
@uref{https://gnunet.org/installation-fedora8-svn} and@
@uref{https://gnunet.org/installation-fedora12-svn} to find detailled
instructions how to install GNUnet on a PlanetLab node.
+
@c ***************************************************************************
address@hidden
+* PlanetLab Automation for Fedora8 nodes::
+* Install buildslave on PlanetLab nodes running fedora core 8::
+* Setup a new PlanetLab testbed using GPLMT::
+* Why do i get an ssh error when using the regex profiler?::
address@hidden menu
+
@node PlanetLab Automation for Fedora8 nodes
@subsubsection PlanetLab Automation for Fedora8 nodes
@@ -1517,7 +1637,13 @@ login, then you should be good to go.
This section documents a few caveats when using the GNUnet testbed
subsystem.
+
@c ***************************************************************************
address@hidden
+* CORE must be started::
+* ATS must want the connections::
address@hidden menu
+
@node CORE must be started
@subsubsection CORE must be started
@@ -1548,8 +1674,8 @@ largely arises for dense overlay topologies, especially
if you try to create
cliques with more than 20 peers.
@c ***************************************************************************
address@hidden libgnunetutil
@node libgnunetutil
address@hidden libgnunetutil
libgnunetutil is the fundamental library that all GNUnet code builds upon.
Ideally, this library should contain most of the platform dependent code
@@ -1747,7 +1873,13 @@ At the moment GNUnet will stop processing a log
definition when it encounters
an error in definition formatting or an error in regular expression syntax, and
will not report the failure in any way.
+
@c ***************************************************************************
address@hidden
+* Examples::
+* Log files::
address@hidden menu
+
@node Examples
@subsection Examples
@@ -1792,6 +1924,7 @@ definition, as opposed to earlier examples, which use the
shell).@ Another
limitation, on Windows, GNUNET_FORCE_LOGFILE @strong{MUST} be set in order to
GNUNET_FORCE_LOG to work.
+
@c ***************************************************************************
@node Log files
@subsection Log files
@@ -1829,7 +1962,12 @@ kept for 4 years and the logs from the first year would
be deleted once year 5
begins. If you do not use any date-related string format codes, logs would
never be automatically deleted by GNUnet.
+
@c ***************************************************************************
address@hidden
+* Updated behavior of GNUNET_log::
address@hidden menu
+
@node Updated behavior of GNUNET_log
@subsubsection Updated behavior of GNUNET_log
@@ -1910,7 +2048,15 @@ service and client.@ (Here, a client uses the
@code{struct
AddressLookupMessage} as a request to ask the server to return the address of
any other peer connecting to the service.)
+
@c ***************************************************************************
address@hidden
+* Define new message types::
+* Define message struct::
+* Connection between client and server::
+* Server Setting::
address@hidden menu
+
@node Define new message types
@subsection Define new message types
@@ -1952,7 +2098,16 @@ both ensure correct alignment when sending structs over
the network
For typical communication, the connection should be created first, in other
words, a connection between the client and the service should be
established.
+
+
@c ***************************************************************************
address@hidden
+* Client setting::
+* Establish connection::
+* Initialize request message::
+* Send request and receive response::
address@hidden menu
+
@node Client setting
@subsubsection Client setting
@c %**end of header
@@ -2019,7 +2174,17 @@ message from the service.
@node Server Setting
@subsection Server Setting
+
@c ***************************************************************************
address@hidden
+* Startup service::
+* Add new handles for specified messages::
+* Process request message::
+* Response to client::
+* Notification of clients::
+* Conversion between Network Byte Order (Big Endian) and Host Byte Order::
address@hidden menu
+
@node Startup service
@subsubsection Startup service
@@ -2457,7 +2622,16 @@ sometimes responsible for a large share of GNUnet's
overall memory consumption
API quirks (and their implications for applications) that were recently
introduced to minimize the footprint of the hash map.
+
@c ***************************************************************************
address@hidden
+* Analysis::
+* Solution::
+* Migration::
+* Conclusion::
+* Availability::
address@hidden menu
+
@node Analysis
@subsection Analysis
@c %**end of header
@@ -2641,7 +2815,7 @@ accessing the "next_XX" and/or "prev_XX" members.
@c ***************************************************************************
@node The Automatic Restart Manager (ARM)
address@hidden The Automatic Restart Manager (ARM)
address@hidden The Automatic Restart Manager (ARM)
@c %**end of header
GNUnet's Automated Restart Manager (ARM) is the GNUnet service responsible for
@@ -2830,7 +3004,7 @@ trying to restart a problematic service.
@c ***************************************************************************
@node GNUnet's TRANSPORT Subsystem
address@hidden GNUnet's TRANSPORT Subsystem
address@hidden GNUnet's TRANSPORT Subsystem
@c %**end of header
This chapter documents how the GNUnet transport subsystem works. The GNUnet
@@ -3056,6 +3230,15 @@ performance results presented are quite old and maybe
outdated at this point.
@item Is there any additional documentation?
@end itemize
+
address@hidden
+* Why use SMTP for a peer-to-peer transport?::
+* How does it work?::
+* How do I configure my peer?::
+* How do I test if it works?::
+* How fast is it?::
address@hidden menu
+
@node Why use SMTP for a peer-to-peer transport?
@subsection Why use SMTP for a peer-to-peer transport?
@c %**end of header
@@ -3238,6 +3421,17 @@ have any questions or problems just post them here or
ask on the IRC channel.
@item How can I test it?
@end itemize
+
+
address@hidden
+* What do I need to use the Bluetooth plugin transport?::
+* How does it work2?::
+* What possible errors should I be aware of?::
+* How do I configure my peer2?::
+* How can I test it?::
+* The implementation of the Bluetooth transport plugin::
address@hidden menu
+
@node What do I need to use the Bluetooth plugin transport?
@subsection What do I need to use the Bluetooth plugin transport?
@c %**end of header
@@ -3421,6 +3615,17 @@ platforms.
@item Pending Features
@end itemize
+
+
address@hidden
+* Linux functionality::
+* THE INITIALIZATION::
+* THE LOOP::
+* Details about the broadcast implementation::
+* Windows functionality::
+* Pending features::
address@hidden menu
+
@node Linux functionality
@subsubsection Linux functionality
@c %**end of header
@@ -3635,7 +3840,7 @@ This section documents how the wlan transport plugin
works. Parts which are not
implemented yet or could be better implemented are described at the end.
@node The ATS Subsystem
address@hidden The ATS Subsystem
address@hidden The ATS Subsystem
@c %**end of header
ATS stands for "automatic transport selection", and the function of ATS in
@@ -3656,7 +3861,7 @@ strategies which differ significantly in their
performance and maturity, and it
is still unclear if any particular plugin is generally superior.
@node GNUnet's CORE Subsystem
address@hidden GNUnet's CORE Subsystem
address@hidden GNUnet's CORE Subsystem
@c %**end of header
The CORE subsystem in GNUnet is responsible for securing link-layer
@@ -3813,6 +4018,13 @@ re-established, the applications will be receive
matching connect events.
This section describes the protocol between an application using the CORE
service (the client) and the CORE service process itself.
+
address@hidden
+* Setup2::
+* Notifications::
+* Sending::
address@hidden menu
+
@node Setup2
@subsection Setup2
@c %**end of header
@@ -3882,6 +4094,14 @@ for each request).
@section The CORE Peer-to-Peer Protocol
@c %**end of header
+
address@hidden
+* Creating the EphemeralKeyMessage::
+* Establishing a connection::
+* Encryption and Decryption::
+* Type maps::
address@hidden menu
+
@node Creating the EphemeralKeyMessage
@subsection Creating the EphemeralKeyMessage
@c %**end of header
@@ -3999,7 +4219,7 @@ the correct hash of the type map) is not received, the
sender will retransmit
the type map (with exponential back-off).
@node GNUnet's CADET subsystem
address@hidden GNUnet's CADET subsystem
address@hidden GNUnet's CADET subsystem
The CADET subsystem in GNUnet is responsible for secure end-to-end
communications between nodes in the GNUnet overlay network. CADET builds on the
@@ -4036,8 +4256,9 @@ the sender to send more traffic than the receiver or the
network are able to
process.
@end itemize
address@hidden libgnunetcadet
@node libgnunetcadet
address@hidden libgnunetcadet
+
The CADET API (defined in gnunet_cadet_service.h) is the messaging API used by
P2P applications built using GNUnet. It provides applications the ability to
@@ -4112,8 +4333,9 @@ Finally, when an application no longer wants to use
CADET, it should call
@code{GNUNET_CADET_disconnect}, but first all channels and pending
transmissions must be closed (otherwise CADET will complain).
address@hidden GNUnet's NSE subsystem
@node GNUnet's NSE subsystem
address@hidden GNUnet's NSE subsystem
+
NSE stands for Network Size Estimation. The NSE subsystem provides other
subsystems and users with a rough estimate of the number of peers currently
@@ -4126,8 +4348,9 @@ of [2/3 estimate, 3/2 estimate]. We will now give an
overview of the algorithm
used to calcualte the estimate; all of the details can be found in this
technical report.
address@hidden Motivation
@node Motivation
address@hidden Motivation
+
Some subsytems, like DHT, need to know the size of the GNUnet network to
optimize some parameters of their own protocol. The decentralized nature of
@@ -4386,8 +4609,9 @@ Finally, when it comes to send the stored message for the
current round to the
neighbors there is a random delay added for each neighbor, to avoid traffic
spikes and minimize cross-messages.
address@hidden GNUnet's HOSTLIST subsystem
@node GNUnet's HOSTLIST subsystem
address@hidden GNUnet's HOSTLIST subsystem
+
@c %**end of header
Peers in the GNUnet overlay network need address information so that they can
@@ -4638,8 +4862,9 @@ For more information on how to configure the HOSTLIST
subsystem see the
installation handbook:@ Configuring the hostlist to bootstrap@ Configuring your
peer to provide a hostlist
address@hidden GNUnet's IDENTITY subsystem
@node GNUnet's IDENTITY subsystem
address@hidden GNUnet's IDENTITY subsystem
+
@c %**end of header
Identities of "users" in GNUnet are called egos. Egos can be used as pseudonyms
@@ -4797,8 +5022,9 @@ message, which includes the name of the service function.
The identity service
will respond to a GET_DEFAULT request with a SET_DEFAULT message containing the
respective information, or with a RESULT_CODE to indicate an error.
address@hidden GNUnet's NAMESTORE Subsystem
@node GNUnet's NAMESTORE Subsystem
address@hidden GNUnet's NAMESTORE Subsystem
+
@c %**end of header
The NAMESTORE subsystem provides persistent storage for local GNS zone
@@ -4910,8 +5136,9 @@ zone, the label and the records and their number.
To stop monitoring, the client call @code{GNUNET_NAMESTORE_zone_monitor_stop}
and passes the handle obtained from the function to start the monitoring.
address@hidden GNUnet's PEERINFO subsystem
@node GNUnet's PEERINFO subsystem
address@hidden GNUnet's PEERINFO subsystem
+
@c %**end of header
The PEERINFO subsystem is used to store verified (validated) information about
@@ -5102,8 +5329,9 @@ will notify you about every change and the callback
function will be called to
notify you about changes. The function returns a handle to cancel notifications
with @code{GNUNET_PEERINFO_notify_cancel}.
address@hidden GNUnet's PEERSTORE subsystem
@node GNUnet's PEERSTORE subsystem
address@hidden GNUnet's PEERSTORE subsystem
+
@c %**end of header
GNUnet's PEERSTORE subsystem offers persistent per-peer storage for other
@@ -5197,7 +5425,7 @@ the @code{sync_first} flag is set to @code{GNUNET_YES},
the API will delay the
disconnection until all pending STORE requests are sent to the PEERSTORE
service, otherwise, the pending STORE requests will be destroyed as well.
address@hidden GNUnet's SET Subsystem
address@hidden GNUnet's SET Subsystem
@node GNUnet's SET Subsystem
@c %**end of header
@@ -5490,8 +5718,9 @@ All Bloom filter operations use a salt to mingle keys
before hasing them into
buckets, such that future iterations have a fresh chance of succeeding if they
failed due to collisions before.
address@hidden GNUnet's STATISTICS subsystem
@node GNUnet's STATISTICS subsystem
address@hidden GNUnet's STATISTICS subsystem
+
@c %**end of header
In GNUnet, the STATISTICS subsystem offers a central place for all subsystems
@@ -5663,8 +5892,9 @@ notifications through messages of type
@code{GNUNET_MESSAGE_TYPE_STATISTICS_WATCH_VALUE} whenever the statistic
parameter's value is changed.
address@hidden GNUnet's Distributed Hash Table (DHT)
@node GNUnet's Distributed Hash Table (DHT)
address@hidden GNUnet's Distributed Hash Table (DHT)
+
@c %**end of header
GNUnet includes a generic distributed hash table that can be used by developers
@@ -6027,8 +6257,9 @@ filter accordingly, to ensure that the same result is
never forwarded more than
once. The DHT service may also cache forwarded results locally if the
"CACHE_RESULTS" option is set to "YES" in the configuration.
address@hidden The GNU Name System (GNS)
@node The GNU Name System (GNS)
address@hidden The GNU Name System (GNS)
+
@c %**end of header
The GNU Name System (GNS) is a decentralized database that enables users to
@@ -6337,8 +6568,9 @@ use alternative means of resolving names (such as sending
queries to a DNS
server directly by themselves). This includes some of well known utilities,
like "ping" and "nslookup".
address@hidden The GNS Namecache
@node The GNS Namecache
address@hidden The GNS Namecache
+
@c %**end of header
The NAMECACHE subsystem is responsible for caching (encrypted) resolution
@@ -6447,8 +6679,8 @@ can done either by simply adding new blocks and selecting
for the most recent
expiration time during lookup, or by checking which block is more recent during
the store operation.
address@hidden The REVOCATION Subsystem
@node The REVOCATION Subsystem
address@hidden The REVOCATION Subsystem
@c %**end of header
The REVOCATION subsystem is responsible for key revocation of Egos. If a user
@@ -6457,8 +6689,9 @@ REVOCATION system to inform all of the other users that
this private key is no
longer valid. The subsystem thus includes ways to query for the validity of
keys and to propagate revocation messages.
address@hidden Dissemination
@node Dissemination
address@hidden Dissemination
+
@c %**end of header
When a revocation is performed, the revocation is first of all disseminated by
@@ -6514,6 +6747,7 @@ been revoked. The given callback will be invoked with the
result of the check.
The query can be cancelled using @code{GNUNET_REVOCATION_query_cancel} on the
return value.
+
@subsection Preparing revocations
@node Preparing revocations
@c %**end of header
@@ -6600,8 +6834,9 @@ peers at any time; however, well-behaved peers should
only initiate this
operation once after establishing a connection to a peer with a larger hashed
peer identity.
address@hidden GNUnet's File-sharing (FS) Subsystem
@node GNUnet's File-sharing (FS) Subsystem
address@hidden GNUnet's File-sharing (FS) Subsystem
+
@c %**end of header
This chapter describes the details of how the file-sharing service works. As
@@ -6752,8 +6987,9 @@ this directory structure is flat and does not mirror the
structure of the
publishing operation. Note that unindex operations cannot have associated child
operations.
address@hidden GNUnet's REGEX Subsystem
@node GNUnet's REGEX Subsystem
address@hidden GNUnet's REGEX Subsystem
+
@c %**end of header
Using the REGEX subsystem, you can discover peers that offer a particular
--
To stop receiving notification emails like this one, please contact
address@hidden