Commit Graph

228 Commits (85e510c89b5b884a3be1fa6bda016fdc3383a0ab)

Author SHA1 Message Date
Jason Rhinelander 76608b6b90 Logic simplification 5 years ago
Stephen Shelton f61cd1a7da
Add some notes/comments about DHT message handling 5 years ago
Jason Rhinelander f1aa27e616 fix speeling mistack 5 years ago
Jeff Becker 9d5dbbc0ad
remove uneeded members 5 years ago
Jeff Becker 66181d8a8f
systemd status 5 years ago
Jeff Becker fdcd19662f
remove trailing "ms" 5 years ago
Jeff Becker bf0416cab8
remove Time_t, add operator overload for printing llarp_time_t and add to_json function for serializing llarp_time_t to json 5 years ago
Jeff Becker d2d109e92c
llarp_time_t is now using std::chrono 5 years ago
Jeff Becker f4520ac920
make decaying hashset use llarp::Time_t and move unit tests to use catch2 5 years ago
Jason Rhinelander 089056ca5b Remove all ABSL_ATTRIBUTE_UNUSED uses 5 years ago
Jason Rhinelander f84ce61d66 Removed empty cpp files
These aren't needed: CMake already knows how to follow #includes and
rebuild when headers change as long as the headers are included
*somewhere*.  The extra .cpp files here just require building a bunch of
.cpp files with just header content that we just end up throw away
during linking (since the same things will also be compiled in whatever
other compilation units include the same headers).
5 years ago
Jason Rhinelander b4440094b0 De-abseil, part 2: mutex, locks, (most) time
- util::Mutex is now a std::shared_timed_mutex, which is capable of
  exclusive and shared locks.

- util::Lock is still present as a std::lock_guard<util::Mutex>.

- the locking annotations are preserved, but updated to the latest
  supported by clang rather than using abseil's older/deprecated ones.

- ACQUIRE_LOCK macro is gone since we don't pass mutexes by pointer into
  locks anymore (WTF abseil).

- ReleasableLock is gone.  Instead there are now some llarp::util helper
  methods to obtain unique and/or shared locks:
    - `auto lock = util::unique_lock(mutex);` gets an RAII-but-also
      unlockable object (std::unique_lock<T>, with T inferred from
      `mutex`).
    - `auto lock = util::shared_lock(mutex);` gets an RAII shared (i.e.
      "reader") lock of the mutex.
    - `auto lock = util::unique_locks(mutex1, mutex2, mutex3);` can be
      used to atomically lock multiple mutexes at once (returning a
      tuple of the locks).
  This are templated on the mutex which makes them a bit more flexible
  than using a concrete type: they can be used for any type of lockable
  mutex, not only util::Mutex.  (Some of the code here uses them for
  getting locks around a std::mutex).  Until C++17, using the RAII types
  is painfully verbose:

  ```C++
  // pre-C++17 - needing to figure out the mutex type here is annoying:
  std::unique_lock<util::Mutex> lock(mutex);
  // pre-C++17 and even more verbose (but at least the type isn't needed):
  std::unique_lock<decltype(mutex)> lock(mutex);
  // our compromise:
  auto lock = util::unique_lock(mutex);
  // C++17:
  std::unique_lock lock(mutex);
  ```

  All of these functions will also warn (under gcc or clang) if you
  discard the return value.  You can also do fancy things like
  `auto l = util::unique_lock(mutex, std::adopt_lock)` (which lets a
  lock take over an already-locked mutex).

- metrics code is gone, which also removes a big pile of code that was
  only used by metrics:
  - llarp::util::Scheduler
  - llarp:🧵:TimerQueue
  - llarp::util::Stopwatch
5 years ago
Stephen Shelton ea97a8f2ac
Make format 5 years ago
Thomas Winget fae86281e9 make path short name look nicer 5 years ago
Thomas Winget 145efaf0bb should probably build before committing... 5 years ago
Thomas Winget 74d421ac2d PathBuildNumber -> NextPathBuildNumber because increment side-effect 5 years ago
Thomas Winget ad3465ee66 std move better 5 years ago
Thomas Winget 893ef2b874 const-y-ness and move-y-ness 5 years ago
Thomas Winget fc56a018e5 path builder prints hops, rest print short name 5 years ago
Jason Rhinelander ac1486d0be Replace absl::optional with optional-lite
Step 1 of removing abseil from lokinet.

For the most part this is a drop-in replacement, but there are also a
few changes here to the JSONRPC layer that were needed to work around
current gcc 10 dev snapshot:

- JSONRPC returns a json now instead of an optional<json>.  It doesn't
  make any sense to have a json rpc call that just closes the connection
  with returning anything.  Invoked functions can return a null (default
  constructed) result now if they don't have anything to return (such a
  null value won't be added as "result").
5 years ago
Jeff Becker e35d17764a * add path::Path::UniqueEndpointSet_t
* start using check2 for new unit tests
* unit test for path::Path::UniqueEndpointSet_t
5 years ago
Jeff Becker 7374f8f0fd
update lokinetmon 5 years ago
Jeff Becker e8b84fcfbd
add path speed metrics for lokinetmon 5 years ago
Jeff Becker 499e346da6
notify delivery of path builds 5 years ago
Jeff Becker 99eb7726ff
initial dht key blinding 5 years ago
Jeff Becker 9efd796145
initial wack at 0.7.0 dht fixes 5 years ago
Jeff Becker 495ad6d566
testnet patch 5 years ago
Jeff Becker 9214ecbc48
rename bloomfilter to replayfilter 5 years ago
Jeff Becker a7a101e33c
more intellegent path failure profiling using LRSM 5 years ago
Jeff Becker 1244ad83ad
fix include file use 5 years ago
Jeff Becker d391f70417
reduce cpu use 5 years ago
Jeff Becker 73e07ef2d0
client side replay filter 5 years ago
Jeff Becker 472cee2594
make static constant for decay interval 5 years ago
Jeff Becker da5af879e9
typofix 5 years ago
Jeff Becker f3e96e06b2
propagate error to client 5 years ago
Jeff Becker a9c9fe9c24
limit client side path builds per ip 5 years ago
Jeff Becker 8b8d636ded
make format 5 years ago
Thomas Winget 71bb0dd520 implement timers using libuv
So far only a bit of the code using timers has been modified to use
the new libuv-based timers.  Also only the non-Windows case has been
implemented.  Seems to be working though, so it's a good time to commit.
5 years ago
Jeff Becker 01b24c7090
limit connections 5 years ago
Jeff Becker 0f4c531d06
fix path resource leak 5 years ago
Jeff Becker 0828307906 fix address mapping bug 5 years ago
Jeff Becker 5188873288 batch and flush 5 years ago
Jeff Becker 2852601a28 flush in logic 5 years ago
Jeff Becker d823d6fa70 only flush when no other jobs are executing 5 years ago
Jeff Becker 9e305c5b30 use lockless queues to gather results of transit traffic work 5 years ago
Jeff Becker d591394ad2 dont process empty queues 5 years ago
Jeff Becker e2472d985d process transit hops on flush 5 years ago
Jeff Becker c3858a56df
make it compile 5 years ago
Jeff Becker 34bc3da069
flush quues of other paths 5 years ago
Jeff Becker 56dce90de9
add trace log level for tracking logic thread jobs 5 years ago