Commit Graph

221 Commits (ecdab10dac59c21328f3ccd29601d9e7c79d551e)

Author SHA1 Message Date
Jeff Becker d2d109e92c
llarp_time_t is now using std::chrono 4 years ago
Jeff Becker f4520ac920
make decaying hashset use llarp::Time_t and move unit tests to use catch2 4 years ago
Jason Rhinelander 089056ca5b Remove all ABSL_ATTRIBUTE_UNUSED uses 4 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).
4 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
4 years ago
Stephen Shelton ea97a8f2ac
Make format 4 years ago
Thomas Winget fae86281e9 make path short name look nicer 4 years ago
Thomas Winget 145efaf0bb should probably build before committing... 4 years ago
Thomas Winget 74d421ac2d PathBuildNumber -> NextPathBuildNumber because increment side-effect 4 years ago
Thomas Winget ad3465ee66 std move better 4 years ago
Thomas Winget 893ef2b874 const-y-ness and move-y-ness 4 years ago
Thomas Winget fc56a018e5 path builder prints hops, rest print short name 4 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").
4 years ago
Jeff Becker e35d17764a * add path::Path::UniqueEndpointSet_t
* start using check2 for new unit tests
* unit test for path::Path::UniqueEndpointSet_t
4 years ago
Jeff Becker 7374f8f0fd
update lokinetmon 4 years ago
Jeff Becker e8b84fcfbd
add path speed metrics for lokinetmon 4 years ago
Jeff Becker 499e346da6
notify delivery of path builds 4 years ago
Jeff Becker 99eb7726ff
initial dht key blinding 4 years ago
Jeff Becker 9efd796145
initial wack at 0.7.0 dht fixes 4 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
Jeff Becker 1a864832c8
make format 5 years ago
Thomas Winget 23a9773e1e
remove our paths from outbound queues 5 years ago
Thomas Winget ef1a5652ef
remove our paths from outbound queues 5 years ago
Thomas Winget 17de3f2478 do...while; make format; remove erroneous GUARDED_BY 5 years ago
Thomas Winget 75512b1b58 ban zero id for pathid; clarity and cleanup 5 years ago
Thomas Winget 9d3e7d349c Add per-path queues, prioritize control messages over traffic 5 years ago
Jeff Becker 7ee026fa50
make path builds work again 5 years ago