mirror of
https://github.com/RetroShare/libretroshare.git
synced 2026-09-13 18:45:47 +05:00
stopSession() ended with an unconditional 10 s sleep, meant to give i2pd
time to let go of a session before the next one is created ("restart"
button in the settings, which posts a stop ticket immediately followed by
a start ticket).
A stop is not always followed by a start. On application exit
p3face-config's shutdown sequence calls rsAutoProxyMonitor::stopAllRSShutdown(),
which posts that same stop ticket and then waits for the service to
acknowledge it; the sleep therefore delayed the whole shutdown by 10 s
for nothing. Measured on a node with SAM3 enabled: 10.0 s of a 21.8 s
shutdown were spent in this sleep, the monitor logging
"waiting for auto proxy service(s) to shut down 0..10/15 (remaining: 1)".
The "stop" button in the settings pays it too, equally uselessly.
Record when the session was closed instead, and wait out what is left of
the delay in startSession(), where it is actually needed. The guarantee
i2pd relies on is unchanged -- a session is still never created less than
10 s after the previous one was closed -- but a stop that is not followed
by a start now returns immediately.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
|---|---|---|
| .github/workflows | ||
| .reuse | ||
| gradle/wrapper | ||
| LICENSES | ||
| misc/Android | ||
| src | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| build.gradle | ||
| CMakeLists.txt | ||
| COPYING | ||
| gradlew | ||
| gradlew.bat | ||
| README.asciidoc | ||
| settings.gradle | ||
// SPDX-FileCopyrightText: 2022 Retroshare Team <contact@retroshare.cc>
// SPDX-FileCopyrightText: 2022-2026 Gioacchino Mazzurco <gio@retroshare.cc>
// SPDX-License-Identifier: CC-BY-SA-4.0
== RetroShare library
RetroShare is a decentralized, private, secure, cross-platform, communication
software.
RetroShare functionalities (file sharing, chat, messages, forums, channels...)
are implemented under the hood by libretroshare which offers a documented C++ and
JSON API.
While RetroShare is an application on its own, libretroshare is meant to be
used as part of other programs, some of them are
https://retroshare.cc[RetroShare-gui],
https://retroshare.cc[RetroShare-service],
https://gitlab.com/elRepo.io/elRepo.io-android[elRepo.io]
(let us know if there are more).
=== Continuous integration
image:https://gitlab.com/RetroShare/libretroshare/badges/master/pipeline.svg[link="https://gitlab.com/RetroShare/libretroshare/-/commits/master",title="pipeline status"]
=== Developer Documentation
All public API methods are documented with Doxygen comments, so the most updated
way to read documentation is reading those comments in `src/retroshare/`.
To use libretroshare as part of your Android application we suggest to add our
maven repository, and then specify the variant and version that fits your needs
as dependency. RetroShare is then exposed as an Android Service as you can see
at https://gitlab.com/RetroShare/libretroshare/-/blob/master/src/rs_android/org/retroshare/service/RetroShareServiceAndroid.java?ref_type=heads[RetroShareServiceAndroid.java] start it and then interact with it
via RetroShare JSON API.
.Example of adding libretroshare as dependency in Gradle
--------------------------------------------------------------------------------
repositories {
maven {
url "https://gitlab.com/api/v4/projects/32730908/packages/maven"
}
}
dependencies {
// Look at https://gitlab.com/RetroShare/libretroshare/-/packages for
// available options.
// Minimum Android platform supported goes here ⬇
// Build variant goes here ⬇
// Version goes here ⬇
implementation "org.retroshare.service:libretroshare-MinApiLevel21-release:72f8b7e8"
}
--------------------------------------------------------------------------------
{empty} +
image:https://deepwiki.com/badge.svg[link="https://deepwiki.com/RetroShare/libretroshare",title="Ask DeepWiki"]