4c8cf82a31
Don't fail on "try" fns if failed to get spinLock
...
In SharedSpinLock: Only fail on "try" fns after spinLock was acquired
and condition is not met.
2024-01-11 21:05:35 +09:00
fe1eefdd7c
Refactor shared-spin-lock to use atomic "spinLock"
2024-01-11 21:05:35 +09:00
3212f3e7dc
Minor refactorings
2024-01-11 21:05:35 +09:00
abd65b9a94
Reland C++11 "shared_lock" with iter remove fix
...
On iterator remove, the iterator will trade the read lock for a write
lock, and trade back for a read lock once the remove has been completed.
2024-01-11 21:05:35 +09:00
894a564774
Update LICENSE year
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 0s
2024-01-11 21:05:21 +09:00
bf84a1f2d4
Update debug optimization flag
2024-01-11 21:05:02 +09:00
c03eae1c15
UnitTest for start/stop threaded update and fix
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 0s
2024-01-11 20:07:25 +09:00
de2848004f
Enforce thread-safety on destroy context
2024-01-11 19:40:15 +09:00
186f2edf0f
Use mutex when enabling/disabling threaded-update
2024-01-11 19:00:27 +09:00
74341e83d4
Use atomic_bool for auto-updating "flag"
2024-01-11 18:45:14 +09:00
5d24c4b5e6
Add note about usage of UDPC header in docs
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 0s
2024-01-01 17:15:55 +09:00
f4ed1aa136
Note in documentation about thread safety
...
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 0s
Basically, all functions should be thread-safe unless mentioned
otherwise.
2024-01-01 12:25:04 +09:00
ad0e62f718
Fixes to .forgejo/workflows/doxygen.yaml
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 1s
2023-12-19 16:44:18 +09:00
cb9d42e301
Update README.md
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 0s
2023-12-19 12:59:10 +09:00
a0100b1ed9
Use rsync setting up seodisparate doxygen docs
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 0s
2023-12-19 12:54:52 +09:00
7227895240
Add Forgejo workflow for doxygen docs
Publish doxygen documentation to seodisparate.com / doxygen-gen-and-publish (push) Successful in 0s
2023-12-19 12:52:44 +09:00
611287b377
Revert "Impl "RWLock" for use in TSLQueue"
...
This reverts commit cf27a6bb76
.
The use of "shared_lock" in TSLQueue is unsafe because of two things:
- The TSLQueue iterator takes a "read" lock.
- The TSLQueue iterator can erase the current element.
2023-07-22 17:28:33 +09:00
ce092f81f9
Revert "Replace unnecessary use of atomic in "shared_lock""
...
This reverts commit b50e50b5fb
.
2023-07-22 17:28:13 +09:00
b50e50b5fb
Replace unnecessary use of atomic in "shared_lock"
2023-07-22 16:46:38 +09:00
cf27a6bb76
Impl "RWLock" for use in TSLQueue
...
This project supports C++11, and std::shared_lock was made available in
C++17, thus a "shared_spin_lock" was created with similar functionality.
This "shared_spin_lock" is used in TSLQueue.
2023-07-22 16:33:09 +09:00
64a0995e21
Fix CMakeLists.txt, handle -Weffc++ warnings
2023-07-22 13:25:43 +09:00
56465c280c
Update README.md
2023-07-19 11:35:28 +09:00
97f030a3a3
Add docs for UDPC_no* functions
2023-07-04 11:41:45 +09:00
4887cc2ae5
Update README.md
2023-07-03 12:03:52 +09:00
972ec73e88
Refactor addr logprint via template specialization
2023-06-26 14:01:42 +09:00
77d69cabbc
Impl "unsafe" versions of UDPC_atostr(...)
...
These "unsafe" versions are guaranteed to not have the returned address
strings be overwritten by UDPC, but they must be manually free'd later
(as mentioned in the documentation).
2023-06-22 13:25:26 +09:00
4abd9fddcb
Conditionally use UDPC_atostr internally
...
Previous implementation used UDPC_atostr() frequently. This commit
changes the implementation to only call UDPC_atostr() if the log level
of the code logging to output will cause the log to be output.
2023-06-22 12:39:11 +09:00
390f3972f8
Add documentation for UDPC_atostr...
2023-06-22 12:07:26 +09:00
2495396d76
Fix potential memory corruption bug
...
UDPC_atostr(...) uses a uint32_t as an offset into a buffer inside the
UDPC Context such that there can be at most 32 different addr-strings.
The call is thread-safe, up to a point (at most 32 concurrent calls will
return correct strings). The problem was that the offset was not being
reset to 0 and was always being incremented by 40. Should the offset
overflow, the offset into the buffer will be "mis-aligned" such that the
32nd offset into the buffer can possibly overwrite memory past the
buffer's end if the addr string is long enough.
The fix is to use a mutex instead of an atomic uint32_t to lock a
code-block that will always prevent overflow (using modulus operator).
I think the speed-loss is negligable (using a lock instead of an atomic
uint32_t) since it isn't expected for programs using UDPC to use
UDPC_atostr(...) very frequently.
2023-06-21 13:23:26 +09:00
211715fc56
Fix potential nullptr deref in free_PacketInfo_ptr
2023-04-19 19:11:03 +09:00
3fac706d86
Add UDPC_free_PacketInfo_ptr(...)
...
Also add unit test for this function.
2023-04-19 18:50:26 +09:00
00b249bdc8
Update LICENSE year
2023-04-18 14:05:52 +09:00
f18e87903a
Refactor UDPC::get_empty_pinfo()
2023-04-18 14:03:31 +09:00
087d3cfc6f
Impl handling Ctrl-C for Windows in NetworkTest
2023-01-10 12:14:57 +09:00
577ab0bc52
Better handling of receiving packets in recv loop
...
On error processing a received packet, continue to receive packets in
the loop. If no packet was received, the loop ends.
2023-01-10 11:51:54 +09:00
a8ef89d9b1
Update documentation about UDPC_update(ctx)
2022-12-08 16:54:02 +09:00
77ac7f88a5
Receive packets in loop til none left in interval
...
Also some formatting fixes (max 80 chars in edited code).
2022-12-04 19:58:13 +09:00
b7cd3a00c7
Update LICENSE
2022-11-23 14:14:05 +09:00
e774a54349
Handle SIGINT (Ctrl-C) in NetworkTest
2022-11-23 14:13:44 +09:00
6784ba96dd
Update README.md
2021-09-09 18:13:38 +09:00
6e39e6dc16
Add gh-pages workflow for Doxygen documentation
2021-09-09 18:10:07 +09:00
0e082c670f
Update .gitignore
2021-08-30 12:07:27 +09:00
cf748827bc
Fix README.md
2021-08-25 19:45:01 +09:00
cdee65d91a
Update README.md
2021-02-14 13:56:26 +09:00
d2cb2d79b8
Update year in LICENSE
2021-01-10 14:40:38 +09:00
e08e620b26
Add |id| to PacketInfo
2021-01-10 14:40:17 +09:00
ba3d6df406
Use dll_export (for builds for Windows)
2020-06-23 13:01:27 +09:00
b0e996cda3
Attempt to make NetworkTest work on Windows
2020-04-28 20:55:16 +09:00
2a39267b38
Add/fix more documentation
2020-04-28 19:38:07 +09:00
d3fb621406
Minor fixes
2020-04-27 19:34:04 +09:00