Removed antipattern abstraction RsSingleJobThread
Rename runloop() method to run() in RsThread
Ported few classes ineriting from RsSingleJobThread to RsThread
RsThread use std::atomic instead of self implemented strange binary semaphores
Removed RsTickingThread::shutdown() use RsThread::askForStop() instead
Removed RsTickingThread::fullstop() use RsThread::fullstop() instead
Stop properly JSON API server in retroshare-gui
Centralize errno traslation to literal in util/rserrno.*
ATM it support extracting metadata only from OGG files.
The system has been designed to be easly extensible to more file formats
registering more indexer functions which just need to extract metadata
from a certain type of file and feed it to Xapian.
The system has been integrated into existent file search system to
through generric search requests and results, it keep a good level of
retro-compatibility due to some tricks.
The indexing system is released under AGPLv3 so when libretroshare is compiled
with deep search enabled AGPLv3 must be honored instead of LGPLv3-or-later.
Cleaned up the debian copyright file using non-deprecated license
code-names.
On Android and potencially other mobile platforms, WiFi drivers are configured
by default to discard any packet that is not directed to the unicast mac
address of the interface, this way they could save some battery but breaks
anything that is not unicast, such as broadcast discovery. To solve this
problem On such platforms provide methods to handle low level multicast
listening so we can receive advertisement from same broadcast domain nodes.
This method is called from other threads and apparently caused
a sporadic crash caought on Android.
See retroshare://forum?name=Got%20crash%20on%20Android%20with%20GDB%20backtrace&id=95de1451952d8c38cb1cdfdb85eed986&msgid=ac8c9d41f2cd0c9e8e290433c7f296fecb2d62b3
In Restbed one is not supposed to call session->yield outside the
threads controlled by Restbed. RetroShare JSON API async call were
calling session->yield from threads controlled by RetroShare all the
times, this caused crashes in some cases, like when the JSON API
socket timed out concurrently with the session->yield call .
To solve this problem session->yield from async
calls are now wrapped insto mService->schedule to ensure they are
executed on the right thread (aka one of the threads controlled by
Restbed).
While solving this issue I realized also that passing RsEvents as const
references around was quite limiting in cases where the event need to
be finally handled in another thread, in that case passing by const
reference the RsEvent needed to be copied by value into the thread
that process it, in this copy by value process the information of
which was the original specific type is lost, and then only the data
and methods from general RsEvents are available, unless the handler
does tricky stuff with type coercion etc. To solve this limitation
pass the events as std::shared_ptr<const RsEvent> seems the safer and
more elegant solution.
JSON API user would bet an unusable base64 blob due to RsTlv opaque JSON
serialization, this way the content of the set is serialized plainly
so it is usable through JSON API, without breaking binary
serialization compatibility.
We must stop using those RsTlv derived items.
Sending PGP fingerprint trough broadcast discovery is misleading in
terms of security, as those packets cannot be trusted for PGP
fingerprint verification, removing it reduce packet size and reduce the
risc of wrong usage of untrusted information
Rename from RsDisc to more descriptive RsGossipDiscovery
Keep full retrocompatibility suggesting usage of RsGossipDiscovery
Add capability to send and receive full RetroShare invitation
Emit event when receiving a full invitation
Start using new debug utilities
Use enum class instead of defines and constant where appropriate
This should bit by bit substitute RsNotify which would be very difficult
to support properly in JSON API.
The new system is much simpler to use also from the C++ side of the
moon.
BroadcastDiscovery take advantage of the new system to notify about new
non friend peer discovered, tested successfully also in JSON API.
Creating GXS groups imply a bunch of crypto operations that require lot
of time expecially on embedded device, channel creation was reported
as failed while it was still pending.
Reduce too long lines.
Print API error messages also on std::cerr.
Discover peers on the same broadcast domain/LAN
Implements own node announcement
Implements others announcement listening
Implements API to get notifiend when other nodes get discovered
Implements API to get discovered nodes
Add discovered peer locator to rsPeers if it is already friend
Yet a bunch of things to do to take full advantage of this new
implementation
Workaround miss-behaviour on old Android phones
Cleanup indentation a bit
Consistent param naming
Introduce default parameter values also for output paramethers
../../../trunk/libretroshare/src/services/autoproxy/
rsautoproxymonitor.cc:263:24: warning: pragma diagnostic pop could not
pop, no matching push [-Wunknown-pragmas]
^
../../../trunk/libretroshare/src/services/autoproxy/
rsautoproxymonitor.cc:295:24: warning: pragma diagnostic pop could not
pop, no matching push [-Wunknown-pragmas]
^
./../../trunk/retroshare-gui/src/gui/FileTransfer/TransfersDialog.cpp:
723: warning: pragma diagnostic pop could not pop, no matching push [-
Wunknown-pragmas]
^
'RsGxsChannels::createVote' hides overloaded virtual function
In file included from temp/moc/moc_GxsChannelGroupItem.cpp:9:
In file included from temp/moc/../../../../../trunk/retroshare-gui/src/
gui/feeds/GxsChannelGroupItem.h:24:
../../../trunk/libretroshare/src/retroshare/rsgxschannels.h:116:15:
warning: 'RsGxsChannels::createComment' hides overloaded virtual
function [-Woverloaded-virtual]
virtual bool createComment(RsGxsComment& comment) = 0;
^
../../../trunk/libretroshare/src/retroshare/rsgxscommon.h:172:15: note:
hidden overloaded virtual function 'RsGxsCommentService::createComment'
declared here: different number of parameters (2 vs 1)
virtual bool createComment(uint32_t &token, RsGxsComment
&comment) = 0;
^
In file included from temp/moc/moc_GxsChannelGroupItem.cpp:9:
In file included from temp/moc/../../../../../trunk/retroshare-gui/src/
gui/feeds/GxsChannelGroupItem.h:24:
../../../trunk/libretroshare/src/retroshare/rsgxschannels.h:132:15:
warning: 'RsGxsChannels::createVote' hides overloaded virtual function
[-Woverloaded-virtual]
virtual bool createVote(RsGxsVote& vote) = 0;
^
../../../trunk/libretroshare/src/retroshare/rsgxscommon.h:173:15: note:
hidden overloaded virtual function 'RsGxsCommentService::createVote'
declared here: different number of parameters (2 vs 1)
virtual bool createVote(uint32_t &token, RsGxsVote &vote) = 0;
^
In file included from temp/moc/moc_GxsChannelPostItem.cpp:9:
In file included from temp/moc/../../../../../trunk/retroshare-gui/src/
gui/feeds/GxsChannelPostItem.h:26:
../../../trunk/libretroshare/src/retroshare/rsgxschannels.h:116:15:
warning: 'RsGxsChannels::createComment' hides overloaded virtual
function [-Woverloaded-virtual]
virtual bool createComment(RsGxsComment& comment) = 0;
^
../../../trunk/libretroshare/src/retroshare/rsgxscommon.h:172:15: note:
hidden overloaded virtual function 'RsGxsCommentService::createComment'
declared here: different number of parameters (2 vs 1)
virtual bool createComment(uint32_t &token, RsGxsComment
&comment) = 0;
^
In file included from temp/moc/moc_GxsChannelPostItem.cpp:9:
In file included from temp/moc/../../../../../trunk/retroshare-gui/src/
gui/feeds/GxsChannelPostItem.h:26:
../../../trunk/libretroshare/src/retroshare/rsgxschannels.h:132:15:
warning: 'RsGxsChannels::createVote' hides overloaded virtual function
[-Woverloaded-virtual]
virtual bool createVote(RsGxsVote& vote) = 0;
^
../../../trunk/libretroshare/src/retroshare/rsgxscommon.h:173:15: note:
hidden overloaded virtual function 'RsGxsCommentService::createVote'
declared here: different number of parameters (2 vs 1)
virtual bool createVote(uint32_t &token, RsGxsVote &vote) = 0;
^
This was causing scary error message in RsGxsChannels with autodoanload
enabled, when all messages where already processed none matched the
filter so all messages where returned,
making p3GxsChannels::handleUnprocessedPost furious
more details into this forum post
retroshare://forum?name=Scary%20message%2C%20but%20which%20doesn%27t%20seem%20to%20be%20the%20source%20of%20the%20problems%20Was%3A%20More%20GXS%20strange%20messages&id=8fd22bd8f99754461e7ba1ca8a727995&msgid=04f10ff97f761c6840c33f1610cb050f0f73da8d
Deprecated old method which exposed interna async mechanism to the API
users, making their and out life difficult
Things that really need to be async like turtle search/requests now accept
callbacks, so the caller can be notified everytime some result is got
back
Implement RsThread::async commodity wrapper to execute blocking API
calls without blocking the caller, this could be optimized
trasparently using a thread pool if necessary
Added hints into some retroshare-gui files on how to use RsThread::async
thoghether with QMetaObject::invokeMethod and blocking RetroShare API
to simplyfy interaction between GUI and libretroshare
Now the possible id of the cannel/post is returned and channel/post is
indexed on creation without having to wait for gxsutil scan to happen
Note that the id is correct in normal usage, but if one try to overload
the API per eventually get the id of another channel/post with same data
but created by a different call, it is not dangerous so one trying to
overload the API is just getting a possibly wrong but equivalent
channel/post id returned.