Commit Graph

66 Commits

Author SHA1 Message Date
Jason Rhinelander
0839c16f19 Final abseil purge
Bye-bye Google Boost.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
46242ba69b TrimWhiteSpace -> TrimWhitespace
Fix my dumb initial capitalization choice.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
54186c4a89 Replace absl string_view with string_view from lokimq
When we add loki-mq has a dependency we can just alias it, but for now
it's easier to copy the header than add the whole submodule library.
2020-02-24 14:27:44 -04:00
Jason Rhinelander
98c34d995b De-abseil: Add our own llarp::TrimWhiteSpace
Adds a TrimWhiteSpace instead of using abseil's.

Adds Catch2 tests for it, and also converts the existing str tests to
catch (which look much, much nicer than the gtest ones).
2020-02-24 14:27:44 -04:00
Jason Rhinelander
fe61367a87 Vastly simplified llarp::util::memFn
There is a huge pile of unnecessary machinery here that can be solved
with a few lambdas and some member function pointer type deduction.
2020-02-21 23:24:33 -04:00
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
2020-02-21 23:22:47 -04:00
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").
2020-02-19 18:21:25 -04:00
Jason Rhinelander
8aacc2d317 Update deprecated gtest macros
gtest ~renamed INSTANTIATE_TEST_CASE_P to INSTANTIATE_TEST_SUITE_P and
added a "backwards compatibility" shim, but the shim fails at compile
time if you pass in an empty fourth argument.
2020-02-13 15:15:36 -04:00
Stephen Shelton
9a65f19bb0
Add test to ensure config loading impacts runtime log level 2020-01-21 12:33:04 -07:00
Stephen Shelton
43998f97c8
Add unit tests for LogLevelToName and LogLevelToString 2020-01-21 12:15:04 -07:00
Jeff Becker
28752f85b7
improve test cases 2020-01-21 13:35:52 -05:00
Jeff Becker
8d11519eb2
unit tests for logging levels 2020-01-21 13:21:11 -05:00
Jeff Becker
562f3f07ab
add unit test for decaying hash set 2019-12-30 15:52:10 -05:00
Jason Rhinelander
1b710455a7 Disallow AlignedBuffer < 8 bytes; add oddball buffer sizes 2019-12-19 16:17:02 -04:00
Jeff Becker
9fa2b5c92a
remove undeeded test case 2019-12-15 07:05:17 -05:00
Stephen Shelton
1666498405 Replace bencode_write_version_entry with a more general-purpose function for writing bencoded dictionary entries 2019-11-22 10:39:35 -07:00
Michael
edd0ec398f
Move thread stuff to subdirectory 2019-09-03 20:52:28 +01:00
Michael
0950571313
Move metrics to subdirectory 2019-09-03 20:52:28 +01:00
Michael
4d8fe2a8a8
Move meta programming to subdirectory 2019-09-03 20:52:28 +01:00
Jeff
146d977945 make osx unit tests compile on old gcc 2019-09-02 13:34:45 -04:00
Michael
f9e9227e19
Fix gcc trunk warnings 2019-08-02 10:29:08 +01:00
Michael
5cef2865bd
Fix Ubuntu builds 2019-07-15 22:46:57 +01:00
Michael
b01e5accbb
Add function to set threadname, and use from threadpool impl 2019-07-09 01:06:22 +01:00
Michael
a2326efa37
Revert "Merge pull request #679 from tewinget/revert-config-refactor"
This reverts commit 2996a7f29c, reversing
changes made to 10df3bd4b3.
2019-07-06 14:46:25 +01:00
Thomas Winget
d044d60101 Reverts #678 #677 and #669 with hashes:
10df3bd
766ece8
979f095

See those commits for further details
2019-07-02 11:02:20 -04:00
Michael
8c2d67f8f1
Fix tests 2019-07-02 10:06:29 +01:00
Michael
bd78471dae
Move ini parser as well 2019-07-02 01:58:38 +01:00
Michael
95646d2d87
Publish metric tags 2019-06-13 23:09:58 +01:00
Michael
7d4126407c
Introduce tags for metrics 2019-06-13 22:58:17 +01:00
Michael
d244674339
Unfuck integer metrics 2019-06-11 21:46:51 +01:00
Michael
0a5ac10880
Unfuck metrics 2019-06-11 21:46:51 +01:00
Michael
a1ef2ca342
Tidy up metric code 2019-06-11 21:38:31 +01:00
Michael
3822fe2341
Create util::MemFn and memFn to make binding callbacks easier 2019-06-02 22:19:10 +01:00
Michael
7ca0927d8f
Replace dict_reader/list_reader with version which doesn't involve indirection 2019-05-22 01:36:03 +01:00
Jeff Becker
0cc8517bca
add error messages to ini parser and catch base cases. 2019-05-03 09:39:25 -04:00
Michael
9ee525a006
Fix shadowing warnings 2019-04-26 00:21:19 +01:00
Michael
544c5f9b61 Move metrics publishers to their own directory 2019-04-14 17:18:32 +01:00
Michael
25f10d5b11
Fix more address sanitiser issues 2019-04-02 10:03:53 +01:00
Michael
6b5a688e08
Fix Catalog.Iterator test failure 2019-03-29 22:14:22 +00:00
Jeff Becker
230e84c742
make signing work 2019-03-28 15:15:20 -04:00
Michael
f2c5d32399
Metric collection subsystem 2019-03-25 20:36:23 +00:00
Michael
acfff4ca5c
Threading structures for metrics 2019-03-25 20:36:23 +00:00
Rick V
8443c5ab8c
Support abseil on i686-pc-winnt-gnu 2019-03-18 16:13:09 -05:00
Ryan Tharp
75c7c12502 fix linux gcc 7.3 issues, feeling like #include <condition_variable> should be in one of the threading headers tho 2019-03-07 21:45:37 +00:00
Michael
61f3273dc4
Add threading annotations and fix potential deadlocks 2019-03-04 00:03:52 +00:00
Michael
c5a129ddff
Convert to use abseil synchronisation primitives 2019-03-03 21:20:38 +00:00
Michael
e6e19369e9
Create Printer - A general-purpose, stateful printer class 2019-02-24 23:46:44 +00:00
Michael
95a5c386fe
Initial type trait work 2019-02-24 23:46:44 +00:00
Michael
b80ecfa4d6
Use string_view for string_view 2019-02-24 23:46:44 +00:00
Jeff
6144a888c9
Merge pull request #299 from michael-loki/cmake_refactor
Refactor CMakeLists into distinct directories
2019-02-14 08:44:12 -05:00