Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
749 commits
Select commit Hold shift + click to select a range
417e63e
Cosmetic fixes and bot-reported issues
Jun 16, 2025
d219d1f
Fixed build break on conditionals
Jun 16, 2025
05aa956
Fixed clang reported build break
Jun 16, 2025
03e4efd
Fixed the use of atomic clock with operators
Jun 16, 2025
a2a1394
Fixed invalid type
Jun 16, 2025
4c1aeec
Some CI fixes
Jun 16, 2025
b02fc21
Cosmetix
Jun 16, 2025
f9209ee
Added more info for failing test
Jun 16, 2025
00181e4
[core] Fix incorrectly updated epoll flags in case of group accept
Jun 19, 2025
941231b
Fixed build break
Jun 19, 2025
edbccde
Merged-in 3181
Jun 19, 2025
f96ae5a
Removed mistakenly left debug logs
Jun 19, 2025
6b2af84
Merge branch 'dev-fix-pending-group' into dev-rework-multiplexer
Jun 20, 2025
8ecbd16
Fixed CI entries for Mac/iOS
Jun 20, 2025
19fa2c9
Changed the muxer removal. Withdrawn locking GlobControlLock from wor…
Jun 25, 2025
7b0061e
Updated missing comments. Removed unused commented-out code.
Jun 25, 2025
2864e3c
Finished lacking comment
Jun 25, 2025
5710926
Fixed CI ubuntu version
Jun 25, 2025
393c122
Merge branch 'dev-fix-pending-group' into dev-rework-multiplexer
Jun 25, 2025
dca84db
Updated from latest master
Jul 1, 2025
12961d1
Fixed remaining thread-san reported bugs. Fixed bug: not removing soc…
Jul 4, 2025
baaaf20
Updated to latest dev; fixed.
Jul 4, 2025
2a3d9b3
Attempting to fix CI-reported problems
Jul 4, 2025
de925ea
Added more fixes to prevent deadlocks and data races. Improved tests.…
Jul 9, 2025
aa3160b
Added updates from master
Jul 17, 2025
68747b7
Merge branch 'master' into dev-epoll-listener-init
Jul 17, 2025
df6dd48
Updated to latest upstream
Jul 18, 2025
f4781d4
Fixed Clang TSA to be only turned on on demand
Jul 18, 2025
d6f9e70
Merge branch 'master' into dev-update-build-and-attr
Jul 23, 2025
376723a
Enabled C++17 version of shared mutex when compiling in C++17 mode
Jul 23, 2025
4748c93
[core] Rework m_bListening to lock-free and m_GlobControlLock to use …
Jul 24, 2025
a98d325
Added UT discovery option to configure
Jul 24, 2025
ae1e0d1
Changed enabled std::shared_mutex only if compiling with stdc++-sync
Jul 24, 2025
d6b3446
Fixed problem with not updated sync.cpp SharedMutex
Jul 24, 2025
bd01399
Merge branch 'dev-update-build-and-attr' into dev-rework-mutex-to-shared
Jul 24, 2025
5b9873f
Removed dead code
Jul 24, 2025
3c9678e
Fixed review findings
Jul 24, 2025
493dfe8
Merge branch 'dev-update-build-and-attr' into dev-rework-mutex-to-shared
Jul 24, 2025
14495bf
Demoted some locks on m_GlobControlLock to shared. Added false positi…
Jul 25, 2025
c94369c
Merge remote-tracking branch 'ethouris/dev-fix-ipv6-payloadsize' into…
Jul 25, 2025
b721f5d
Merged dev-fix-2029
Jul 25, 2025
ffb41fa
Merge remote-tracking branch 'ethouris/dev-add-obtaining-network-id' …
Jul 25, 2025
0b38d76
Merge remote-tracking branch 'ethouris/dev-add-script-for-abi-check' …
Jul 25, 2025
5f967df
Merged dev-fix-2980
Jul 25, 2025
548c78b
Merged dev-epoll-listener-init. Checking reports
Jul 25, 2025
c215e6f
Fixed data race
Jul 28, 2025
771661d
Merge branch 'dev-fix-2029' into dev-retrospect-1.6.0
Jul 28, 2025
1ecf670
[MAINT][core] Fixed data race in CTimer
Jul 28, 2025
017b120
Fixed non-waiting-nop version with busy waiting version
Jul 28, 2025
a748ad6
Merged dev-fix-ctimer-race
Jul 28, 2025
9dd2f83
Premature merge of dev-update-build-and-attr
Jul 28, 2025
9eec41c
Merged dev-rework-attributes
Jul 28, 2025
3d3242c
Merged dev-restore-logger-changes
Jul 28, 2025
49017e5
Merged dev-fix-1667. Post-fixed for a detected TSAN.
Jul 28, 2025
18d46d2
Merged dev-fix-unsubscribed-epoll and post-fixed
Jul 29, 2025
db14eeb
Distilled changes for using the right constants
Jul 29, 2025
9f469fa
Merged dev-fix-implicit-int-purge (distilled changes)
Jul 29, 2025
e7e496e
Merged dev-fix-connection-dispatch-to-accepted and post-fixed
Jul 29, 2025
6cf79f2
Merge branch 'master' into dev-remote-api-header-config-dependency-purge
Jul 29, 2025
ab70c58
Merged dev-remote-api-header-config-dependency (purged version)
Jul 29, 2025
b6299da
Further fixes per dev-fix-implicit-int #2595
Jul 30, 2025
9cd2476
Merge remote-tracking branch 'gou4shi1/overrideSndSeqNo' into dev-ret…
Jul 30, 2025
3d34460
Merge remote-tracking branch 'ethouris/dev-make-sid-len-in-api' into …
Jul 30, 2025
f0d2a86
Purged off changes of buggy #3009
Jul 30, 2025
25ff937
Completed remaining changes from dev-fix-implicit-int and dev-add-rej…
Jul 31, 2025
7b702b6
Updated from the current dev line. Removed #3009.
Jul 31, 2025
7e706fe
Updated from dev ongoing branch
Aug 1, 2025
1f8e74a
Removed merger-duplicated code. Restored cleaner version for close re…
Aug 1, 2025
fdf7a48
Updated and purged from unnecessary code
Aug 1, 2025
3d42137
Merged dev-refax-buffer-tsbpd-triggers
Aug 1, 2025
54b7394
Merged dev-doc-update-balancing and post-fixed
Aug 1, 2025
8b9c882
Merged dev-refax-socket-close
Aug 1, 2025
cbcae71
Merged dev-fix-abi-bump-1.6
Aug 1, 2025
fdd3ad9
Fixed problems in Travis CI
Aug 1, 2025
cce04c5
Merge branch 'master' into dev
Aug 1, 2025
74fc1c6
Added some previous dev/CI changes and cosmetic fixes
Aug 1, 2025
767f589
Merged fixed state branch dev-retrospect-1.6.0 to stabilize dev
Aug 4, 2025
43aef45
[BUG/MAINT] Make non-managed sockets forever persistent until manuall…
ethouris Aug 4, 2025
f03b5c9
Updated to latest dev and fixed problems
Aug 5, 2025
47bf67f
[core] Fix incorrectly updated epoll flags in case of group accept (#…
ethouris Aug 6, 2025
31c9063
Added locking for group pointer check in handshake process. Switch so…
Aug 6, 2025
8a85c23
Updated to latest dev and fixed
Aug 8, 2025
cfa02b5
Updated to latest dev
Aug 8, 2025
3e4ab20
Renamed ofmtstream to ofmtbufstream. Added ofmtrefstream. Some cosmetics
Aug 8, 2025
ab3edd4
Applied last changes from 2964
Aug 11, 2025
4f3f90c
Merged dev-add-custom-fmt-for-logging 2964 with fixes
Aug 11, 2025
6f7baf9
Demote non-erroneous log in findPeer
Aug 11, 2025
97c2d82
[MAINT] Refax namespace usage and removed deprecated API (#3197)
ethouris Aug 12, 2025
31a3c78
Updated to dev and fixed
Aug 12, 2025
f36830b
Updated to dev and fixed
Aug 14, 2025
df805b2
Added a single-argument overload for fmt for simple use of iomanips
Aug 14, 2025
ea02931
Merged changes for ofmt from the base
Aug 14, 2025
1d9036a
Updated and fixed
Aug 14, 2025
51c2e30
Changed the tm/put_time application for ofmt
Aug 14, 2025
1481baa
Changed the tm/put_time application for ofmt
Aug 14, 2025
893901f
Fixed: newly added group requires exclusive locking. Fixed some TSA a…
Aug 21, 2025
bdbc76f
Cosmetics
Aug 21, 2025
c8baf68
Updated to latest master
Aug 22, 2025
6fbd81c
Merge branch 'dev' into development
Aug 22, 2025
679f83a
Fixed log-conditional build problem
Aug 22, 2025
bcbae53
Merge branch 'dev' into development
Aug 22, 2025
e51bad6
Fixed unused commented-out code and wrong markers
Aug 22, 2025
0d56c7a
[MAINT] Rework queuing functionality around multiplexer and snd/rcv q…
ethouris Aug 22, 2025
d3282b8
Some more fixes in comments and TSA
Aug 22, 2025
e1d172d
Fixed some findings by codeql (#3202)
ethouris Aug 22, 2025
8e33a80
Updated to latest dev and fixed
Aug 22, 2025
e7c78e8
Merge branch 'dev-add-custom-fmt-for-logging' into development
Aug 25, 2025
d5f9330
Merged dev-add-custom-fmt-for-logging
Aug 25, 2025
d09f6e4
Updated and fixed
Aug 25, 2025
735627a
[MAINT] Fixed wrong solutions for compat C++03 compilation mode (#3205)
ethouris Aug 25, 2025
66ea78d
Merge branch 'dev' into development
Aug 25, 2025
92c7a8b
Merge branch 'dev' into dev-extract-logging-system
Aug 25, 2025
1d93cd0
Merge branch 'dev' into dev-extract-logging-system
Aug 25, 2025
48f61b4
Merge branch 'dev-extract-logging-system' into development
Aug 25, 2025
022aa81
[core] Setting up fmt with custom config structure for logging system…
ethouris Aug 26, 2025
148e2f0
[BUILD][CORE] Extract the logging system into a subproject. (#3119)
ethouris Aug 26, 2025
53efd23
Applied changes from the lastest dev branch
Aug 26, 2025
89ea4dc
Updated and fixed. Changes in CMakefile provided by distillation to t…
Aug 26, 2025
9b20937
CMakeLists.txt cleanup. Changed handling of the C++ standard. Renamed…
Aug 28, 2025
f40a70c
Fixes for Windows and Travis
Aug 28, 2025
6e2ebd8
Fixing Travis syntax
Aug 28, 2025
dfa49cf
Fixing Travis errors
Aug 28, 2025
b3c2866
Fixed Travis script
Aug 28, 2025
7263e90
Set AEAD default ON and only warning if enclib doesn't support
Aug 28, 2025
abfb076
Fixed travis syntax
Aug 28, 2025
cdd6d9f
Extended time to late-break to minimize chance of too early check in …
Aug 28, 2025
5adc39e
Some distinct build error fixes
Aug 28, 2025
b755ddb
Fixed crypto library for MinGW Travis
Aug 28, 2025
59f9432
Tracking problem on MinGW
Aug 29, 2025
3d26b92
Fixed Travis Openssl specification (removed extra quotes)
Aug 29, 2025
c2b65c1
Travis: MinGW changed to stdc++ sync
Aug 29, 2025
b100432
Allowed SYNC=posix for MingW with gcc as well
Aug 29, 2025
902aa17
Disabled SYNC=stdc++ for MinGW on Travis
Aug 29, 2025
432fdbd
Travis/MinGW: --disable-localif-win32 (the required library not found)
Aug 29, 2025
9c2a621
Added debug output to cmake to trace a problem on Travis
Sep 1, 2025
b03296f
Increasing verbosity of cmake in Travis
Sep 1, 2025
13ee6bf
More detailed error grabbing for cmake in Travis
Sep 1, 2025
ceb1ace
Fixed incompatible cmake option for Travis
Sep 1, 2025
da4f38e
Attempt to ensure cmake >= 3.10 on Travis
Sep 1, 2025
d15706a
Fixed googletest version spec in cxx11-macos
Sep 1, 2025
0075151
Added satisfy and install on Travis
Sep 1, 2025
9b3f25e
Added version check and breakup if too old
Sep 1, 2025
e88ad8c
Fixed syntax errors in Travis
Sep 1, 2025
7703ae1
Trying to lift up system version for PowerPC
Sep 1, 2025
e706f03
General upgrade to Focal on Travis
Sep 1, 2025
4ad8ff2
Restoring Xenial, setting Focal only for PPC - Travis
Sep 1, 2025
52c28d1
Added more tracing to EnforcedEncryption tests
Sep 3, 2025
92fa95c
Added extra sleep to check late-rejection to EnforcedEncryption tests
Sep 3, 2025
3016f62
Checking a failed InitialBonding test on PowerPC/monotonic
Sep 3, 2025
4ea6e13
Renamed tests in EnforcedEncryption for better readability
Sep 3, 2025
5af3455
Added extra wait for blocking mode to not check broken accept on forc…
Sep 3, 2025
fb82add
Added more verbose for ABI Checks
Sep 4, 2025
305ef7a
Attempting to fix ABI Checks configuration
Sep 4, 2025
3827f40
Checkup: changed condition for ABI Checks into failure
Sep 4, 2025
f3b4951
Fixed some literals. Turned off UT
Sep 4, 2025
c9726a2
Fixes for ABI checks workflow syntax
Sep 4, 2025
5679d59
Disabled UT for ABI base. Restored condition
Sep 4, 2025
67242b7
Added deps to abi checks base
Sep 4, 2025
19b4966
ABI checks: check what we have
Sep 4, 2025
0b16a8b
Added uploading of dump files as artifacts for ABI Checks
Sep 4, 2025
dbbaf52
Verbose checks for errors in ABI Check
Sep 4, 2025
7bf2ebb
Added integrity checks for dump files in ABI Checks
Sep 4, 2025
02a075a
Changing download path to a directory for ABI Checks
Sep 4, 2025
8670a40
Bump version 1.6.0
Sep 4, 2025
8d46662
ABI Checks: not emitting SRT_BASE output if zero base
Sep 4, 2025
fa16e86
ABI Checks: wrong condition blocked
Sep 4, 2025
448f2e9
Fixing wrong checks for TestIPv6.v6_calls_v4
Sep 4, 2025
45b860b
Merged from dev
Sep 4, 2025
ced4386
Merge branch 'development' into dev-fix-3133
Sep 4, 2025
90681d3
Merged last changes from master, 1.5.5 candidate
Sep 5, 2025
f8db557
Merged dev to propagate updates from master
Sep 5, 2025
2b09e2c
Prevent warning against a heavy-log-only variable
Sep 5, 2025
4e88cb8
[MAINT] Fix, cleanup and simplify CMakeLists.txt (#3135)
ethouris Sep 8, 2025
17be276
Updated to latest dev
Sep 8, 2025
06b048a
Post-fix for #3119 - wrong macro name for conditional heavy logging
Sep 12, 2025
464383f
[core] Rendezvous with pure comparison resolution and adaptive for wr…
ethouris Oct 22, 2025
e9eeb67
[MAINT] Update CI bot configurations (#3238)
ethouris Oct 29, 2025
aaafec4
[BUG] Fixed setting in-transfer IP version on accepted (#3240)
ethouris Oct 29, 2025
0ca90b1
Completed utilities. Extracted comments into docs (#3241)
ethouris Oct 29, 2025
3e027c9
[MAINT] Improvements in logging code, prevents macro dependency. (#3239)
ethouris Oct 29, 2025
44f9255
Improved concurrency in srt_accept (#3242)
ethouris Oct 29, 2025
1b08ad3
[MAINT] Fixes for IP Address handling in sockaddr_any and CIPAddress …
ethouris Oct 31, 2025
f25bc8f
Cosmetic changes. SRTT -> avgRTT. Added some more TSA markers (#3244)
ethouris Oct 31, 2025
a646b09
[MAINT][code] Removed use of pthread_once. Fixed #3115 (#3235)
ethouris Nov 4, 2025
fe9cbf1
[MAINT] Concurrency improvements.
ethouris Nov 4, 2025
1fd2cd6
[MAINT] Improvements for ofmt/logging. Blocked CV thread debug. (#3250)
ethouris Nov 5, 2025
01a5060
Reimplemented CRcvUList/CSndUList as UpdateNode/SendNode using HeapSe…
ethouris Nov 6, 2025
cfe10ff
Merge branch 'dev' into development
Nov 6, 2025
89e15f2
Updated from latest master and fixed
Nov 6, 2025
22c3b50
Merge branch 'dev' into development
Nov 6, 2025
e60baea
Merge post-fix
Nov 6, 2025
bad2331
Merged master again (formally)
Nov 6, 2025
766ad0d
[BUG] Logging system handled FA-off incorrectly. Removed wrong old co…
ethouris Dec 4, 2025
52eb8b2
[BUG] Fixed std::shared_mutex usage for C++17. Removed external clone…
ethouris Dec 11, 2025
5a97a90
Merge branch 'dev' into development
Dec 19, 2025
cb5a0d0
Updated from latest master. BlockingInterruptsd left failing until fix.
Dec 19, 2025
68aef3c
[BUG] srt_close hangup while srt_connect is still blocking (#3260)
ethouris Dec 19, 2025
6f27e74
Integrated fix for close blocking
Dec 19, 2025
1ff80d6
[build] Use "--parallel" argument to cmake build. (#3269)
Jan 19, 2026
5270836
[build] fix bunch of typos and enable codespell (copy of #3263) (#3274)
cl-ment Jan 21, 2026
aa97a74
Updated from latest master
Jan 21, 2026
770fb02
Updated from master and fixed
Jan 21, 2026
5be7315
Updated from latest master
Feb 13, 2026
8e5844f
Common receiver buffer for groups
Feb 13, 2026
160f012
Applied partial changes (refax) from dev-rework-receiver-unit. Still …
Feb 24, 2026
40b4dfa
[build] add docker and devcontainer consistent build environment. (#3…
Feb 25, 2026
7672394
[docs] several cosmetic fixes. (#3278)
Feb 25, 2026
fa775c2
Applied changes for the new Receiver Unit Pool (dead now). Minor comm…
Feb 26, 2026
97b6f2e
Changed condensation to two-pointers. Extracted comments into docs
Mar 5, 2026
a4bb952
fix description for on srt_recv* functions. (#3281)
Mar 5, 2026
f79fff1
[BUG] Fixed close time record unit for close reason. Extra minor fixe…
ethouris Mar 5, 2026
3f30e4d
Fixed: the incoming data packet is passed after removal from the pool…
Mar 6, 2026
8a0fe8d
Cleanup CodeQL findings
Mar 6, 2026
78dafda
Codespell fixes
Mar 6, 2026
eab00e1
Improvements for BONDING enabler, Windows compiling and portability
ethouris Mar 9, 2026
86f9c7e
Improved fixes for Windows
ethouris Mar 9, 2026
e62bb92
Added document for new unit pool
Mar 9, 2026
2723224
Added intermediate treats-based type for MSVC intrinsics
ethouris Mar 9, 2026
985dc2e
Fixed const pointer cast problem for intrinsics for pointers
ethouris Mar 9, 2026
6f4239a
Minor fixes + codespell ignore tests
Mar 9, 2026
8a73e00
Fixed unused warning. Fixed one more const in windows intrinsics
Mar 9, 2026
33cc111
Fixed usage of unused variable
Mar 9, 2026
d35969e
Fixed usage of unused static function. Configured POSIX-based CI to k…
Mar 9, 2026
6071d49
Minor fixes. Forced using unit pool if bonding enabled
Mar 9, 2026
8663024
Moved read-side CPacketUnitPool container as 'hand' container inside.…
Mar 12, 2026
5ed5e9e
Cleared warnings reported in CI
Mar 12, 2026
b8999e3
Fixed incorrectly fixed API docs
Mar 12, 2026
2528259
Merge branch 'dev' into dev-groups-common-receiver
Mar 12, 2026
d141a75
Added some data race prevention
Mar 12, 2026
c6ecef3
Fixed bug: resize condenser only to the number of copied units. Fixed…
Mar 13, 2026
ce23e3a
Fixed Windows and Mac build break
Mar 13, 2026
cc0671c
Attempting to fix sign-compare-error on Mac
Mar 13, 2026
27186d8
Update receiver-buffer.md
ethouris Mar 13, 2026
9cfcbca
Reviewed CPacketUnitPool description and adjusting to new design
Mar 13, 2026
2e4bc90
Spellcheck fixes. Fixes for C++03 compatibility
Mar 16, 2026
cd62dfb
Merged from master
Mar 16, 2026
b7756e1
Merge branch 'dev' into development
Mar 16, 2026
3046f87
Common receiver buffer for groups (#3286)
ethouris Mar 16, 2026
691a182
[core] Implemented a new sender buffer. (#3255)
ethouris Apr 8, 2026
70cd4ae
Updated to latest dev
Apr 8, 2026
dd469b8
[lib.logging] API renames in ofmt and hvu_compat. Improvements in ofm…
ethouris Aug 27, 2026
f6ca406
[core] Refaxed FormatTime with divmod (#3364)
ethouris Aug 27, 2026
8c233eb
Added += operation for atomics (#3363)
ethouris Aug 28, 2026
30367c1
[apps.support] Extracted out options module. Renamed 'testing' to 'to…
ethouris Aug 28, 2026
6d444c1
[dev] Added BSTOW tool: generate live-planning transmission (#3368)
ethouris Aug 31, 2026
a5f9d4e
[core] Reimplemented node type for HeapSet item types (#3377)
ethouris Sep 9, 2026
15161a8
Updated from latest master
Sep 10, 2026
f527a56
Merge branch 'dev' into development
Sep 11, 2026
6052569
Updated from dev-retrospect-1.6.0, including dev and master
Sep 14, 2026
bdea051
Fixed build break on noenc. Leaving SRT_DEBUG_MODE to drive further c…
Sep 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "SRT Development",
"dockerFile": "../docker/Dockerfile",
"workspaceFolder": "/srt_build_env",
"workspaceMount": "source=${localWorkspaceFolder},target=/srt_build_env,type=bind",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
},
"extensions": [
"ms-vscode.cpptools",
"ms-vscode.cmake-tools",
"twxs.cmake"
]
}
},
"remoteUser": "srt-dev"
}
6 changes: 3 additions & 3 deletions .github/workflows/s390x-focal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ jobs:
apt-get -y install tzdata &&
uname -a &&
lscpu | grep Endian &&
apt-get -y install cmake g++ libssl-dev git &&
apt-get -y install cmake g++ libssl-dev git python &&
mkdir _build && cd _build &&
cmake ../ -DENABLE_ENCRYPTION=ON -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON &&
cmake --build ./ &&
cmake --debug-output ../ -DENABLE_ENCRYPTION=ON -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON &&
cmake --build ./ --parallel &&
./test-srt -disable-ipv6"
File renamed without changes.
31 changes: 13 additions & 18 deletions apps/logsupport.cpp → ATTIC/logsupport.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,20 @@
#include "logsupport.hpp"
#include "../srtcore/srt.h"
#include "../srtcore/utilities.h"
#include "ofmt.h"

using namespace std;
using namespace srt;

namespace hvu
{

// This is based on codes taken from <sys/syslog.h>
// This is POSIX standard, so it's not going to change.
// Haivision standard only adds one more severity below
// DEBUG named DEBUG_TRACE to satisfy all possible needs.

map<string, int> srt_level_names
map<string, int> level_names
{
{ "alert", LOG_ALERT },
{ "crit", LOG_CRIT },
Expand All @@ -46,17 +51,17 @@ map<string, int> srt_level_names



srt_logging::LogLevel::type SrtParseLogLevel(string level)
hvu::logging::LogLevel::type ParseLogLevel(string level)
{
using namespace srt_logging;
using namespace hvu::logging;

if ( level.empty() )
return LogLevel::fatal;

if ( isdigit(level[0]) )
{
long lev = strtol(level.c_str(), 0, 10);
if ( lev >= SRT_LOG_LEVEL_MIN && lev <= SRT_LOG_LEVEL_MAX )
if ( lev >= HVU_LOG_LEVEL_MIN && lev <= HVU_LOG_LEVEL_MAX )
return LogLevel::type(lev);

cerr << "ERROR: Invalid loglevel number: " << level << " - fallback to FATAL\n";
Expand Down Expand Up @@ -91,24 +96,13 @@ struct ToLowerFormat
}
};

void LogFANames::Install(string upname, int value)
{
string id;
transform(upname.begin(), upname.end(), back_inserter(id), ToLowerFormat());
namemap[id] = value;
}

// See logsupport_appdefs.cpp for log FA definitions
LogFANames srt_transmit_logfa_names;

const map<string, int> SrtLogFAList()
set<hvu::logging::LogFA> ParseLogFA(string fa, set<string>* punknown)
{
return srt_transmit_logfa_names.namemap;
}

set<srt_logging::LogFA> SrtParseLogFA(string fa, set<string>* punknown)
{
using namespace srt_logging;
using namespace hvu::logging;

set<LogFA> fas;

Expand Down Expand Up @@ -173,7 +167,7 @@ set<srt_logging::LogFA> SrtParseLogFA(string fa, set<string>* punknown)

void ParseLogFASpec(const vector<string>& speclist, string& w_on, string& w_off)
{
std::ostringstream son, soff;
hvu::ofmtbufstream son, soff;

for (auto& s: speclist)
{
Expand Down Expand Up @@ -202,4 +196,5 @@ void ParseLogFASpec(const vector<string>& speclist, string& w_on, string& w_off)
w_off = soffs.empty() ? string() : soffs.substr(1);
}

}

19 changes: 7 additions & 12 deletions apps/logsupport.hpp → ATTIC/logsupport.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,16 @@
#include <string>
#include <map>
#include <vector>
#include "../srtcore/srt.h"
#include "../srtcore/logging_api.h"
#include "logging_api.h"

srt_logging::LogLevel::type SrtParseLogLevel(std::string level);
std::set<srt_logging::LogFA> SrtParseLogFA(std::string fa, std::set<std::string>* punknown = nullptr);
namespace hvu
{

hvu::logging::LogLevel::type ParseLogLevel(std::string level);
std::set<hvu::logging::LogFA> ParseLogFA(std::string fa, std::set<std::string>* punknown = nullptr);
void ParseLogFASpec(const std::vector<std::string>& speclist, std::string& w_on, std::string& w_off);
const std::map<std::string, int> SrtLogFAList();

SRT_API extern std::map<std::string, int> srt_level_names;

struct LogFANames
{
std::map<std::string, int> namemap;
void Install(std::string upname, int value);
LogFANames();
};
}

#endif
File renamed without changes.
42 changes: 42 additions & 0 deletions ATTIC/sync_scraps.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#include <string>
#include "ofmt.h"

namespace srt
{
namespace sync
{

// Old implementation for FormatTime
std::string FormatTime1(const steady_clock::time_point& timestamp)
{
using namespace hvu;
if (is_zero(timestamp))
{
// Use special string for 0
return "00:00:00.000000 [TMTN]";
}

const int decimals = clockSubsecondPrecision();
const uint64_t total_sec = count_seconds(timestamp.time_since_epoch());
const uint64_t days = total_sec / (60 * 60 * 24);
const uint64_t hours = total_sec / (60 * 60) - days * 24;
const uint64_t minutes = total_sec / 60 - (days * 24 * 60) - hours * 60;
const uint64_t seconds = total_sec - (days * 24 * 60 * 60) - hours * 60 * 60 - minutes * 60;
steady_clock::time_point frac = timestamp - seconds_from(total_sec);
ofmt_bufs out;
if (days)
out << days << OFMT_SV("D+");

fmtc d02 = fmtc().dec().fillzero().width(2),
dec0 = fmtc().dec().fillzero().width(decimals);

out << fmt(hours, d02) << OFMT_SV(":")
<< fmt(minutes, d02) << OFMT_SV(":")
<< fmt(seconds, d02) << OFMT_SV(".")
<< fmt(frac.time_since_epoch().count(), dec0)
<< OFMT_SV(" [TMTN]");
return out.str();
}

}
}
126 changes: 126 additions & 0 deletions ATTIC/sync_timer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
#include "sync_timer.h"

namespace srt
{
namespace sync
{


////////////////////////////////////////////////////////////////////////////////
//
// Timer
//
////////////////////////////////////////////////////////////////////////////////

CTimer::CTimer()
{
}


CTimer::~CTimer()
{
}

// This function sleeps up to the given time, then exits.
// Meanwhile it can be influenced from another thread by calling:
// - tick(): exit waiting, but re-check the end time and fall back to sleep if not reached
// - interrupt(): exit waiting with setting wait time to now() so that it exits immediately
//
// This function returns true if it has exit on the originally set time.
// If the time was changed due to being interrupted and it did really exit before
// that time, false is returned.
bool CTimer::sleep_until(TimePoint<steady_clock> tp)
{
// The class member m_sched_time can be used to interrupt the sleep.
// Refer to Timer::interrupt().
enterCS(m_event.mutex());
m_tsSchedTime = tp;
leaveCS(m_event.mutex());

#if SRT_BUSY_WAITING
wait_busy();
#else
wait_stalled();
#endif

// Returning false means that sleep was early interrupted
return m_tsSchedTime.load() >= tp;
}

void CTimer::wait_stalled()
{
TimePoint<steady_clock> cur_tp = steady_clock::now();
{
UniqueLock elk (m_event.mutex());
while (cur_tp < m_tsSchedTime.load())
{
m_event.wait_until(elk, m_tsSchedTime);
cur_tp = steady_clock::now();
}
}
}

void srt::sync::CTimer::wait_busy()
{
#if defined(_WIN32)
// 10 ms on Windows: bad accuracy of timers
const steady_clock::duration
td_threshold = milliseconds_from(10);
#else
// 1 ms on non-Windows platforms
const steady_clock::duration
td_threshold = milliseconds_from(1);
#endif

TimePoint<steady_clock> cur_tp = steady_clock::now();
{
UniqueLock elk (m_event.mutex());
while (cur_tp < m_tsSchedTime.load())
{
steady_clock::duration td_wait = m_tsSchedTime.load() - cur_tp;
if (td_wait <= 2 * td_threshold)
break;

td_wait -= td_threshold;
m_event.wait_for(elk, td_wait);

cur_tp = steady_clock::now();
}

while (cur_tp < m_tsSchedTime.load())
{
InvertedLock ulk (m_event.mutex());
#ifdef IA32
__asm__ volatile ("pause; rep; nop; nop; nop; nop; nop;");
#elif IA64
__asm__ volatile ("nop 0; nop 0; nop 0; nop 0; nop 0;");
#elif AMD64
__asm__ volatile ("nop; nop; nop; nop; nop;");
#elif defined(_WIN32) && !defined(__MINGW32__)
__nop();
__nop();
__nop();
__nop();
__nop();
#endif
cur_tp = steady_clock::now();
}
}
}


void CTimer::interrupt()
{
UniqueLock lck(m_event.mutex());
m_tsSchedTime = steady_clock::now();
m_event.notify_all();
}


void CTimer::tick()
{
m_event.notify_one();
}

}
}
44 changes: 44 additions & 0 deletions ATTIC/sync_timer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#include "sync.h" // Requires CEvent

namespace srt
{
namespace sync
{

class CTimer
{
public:
CTimer();
~CTimer();

public:
/// Causes the current thread to block until
/// the specified time is reached.
/// Sleep can be interrupted by calling interrupt()
/// or woken up to recheck the scheduled time by tick()
/// @param tp target time to sleep until
///
/// @return true if the specified time was reached
/// false should never happen
bool sleep_until(steady_clock::time_point tp);

/// Resets target wait time and interrupts waiting
/// in sleep_until(..)
void interrupt();

/// Wakes up waiting thread (sleep_until(..)) without
/// changing the target waiting time to force a recheck
/// of the current time in comparison to the target time.
void tick();

private:
CEvent m_event;
sync::AtomicClock<steady_clock> m_tsSchedTime;

void wait_busy();
void wait_stalled();
};


}
}
File renamed without changes.
Loading
Loading