mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
SmartPtr: Support load test for source by srs-bench. v6.0.130 (#4097)
1. Add live benchmark support in srs-bench, which only connects and disconnects without any media transport, to test source creation and disposal and verify source memory leaks. 2. SmartPtr: Support cleanup of HTTP-FLV stream. Unregister the HTTP-FLV handler for the pattern and clean up the objects and resources. 3. Support benchmarking RTMP/SRT with srs-bench by integrating the gosrt and oryx RTMP libraries. 4. Refine SRT and RTC sources by using a timer to clean up the sources, following the same strategy as the Live source. --------- Co-authored-by: Haibo Chen <495810242@qq.com> Co-authored-by: Jacob Su <suzp1984@gmail.com>
This commit is contained in:
parent
e3d74fb045
commit
1f9309ae25
508 changed files with 6805 additions and 3299 deletions
66
trunk/3rdparty/srs-bench/vendor/github.com/haivision/srtgo/logging.go
generated
vendored
Normal file
66
trunk/3rdparty/srs-bench/vendor/github.com/haivision/srtgo/logging.go
generated
vendored
Normal file
|
@ -0,0 +1,66 @@
|
|||
package srtgo
|
||||
|
||||
/*
|
||||
#cgo LDFLAGS: -lsrt
|
||||
#include <srt/srt.h>
|
||||
extern void srtLogCB(void* opaque, int level, const char* file, int line, const char* area, const char* message);
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"unsafe"
|
||||
|
||||
gopointer "github.com/mattn/go-pointer"
|
||||
)
|
||||
|
||||
type LogCallBackFunc func(level SrtLogLevel, file string, line int, area, message string)
|
||||
|
||||
type SrtLogLevel int
|
||||
|
||||
const (
|
||||
// SrtLogLevelEmerg = int(C.LOG_EMERG)
|
||||
// SrtLogLevelAlert = int(C.LOG_ALERT)
|
||||
SrtLogLevelCrit SrtLogLevel = SrtLogLevel(C.LOG_CRIT)
|
||||
SrtLogLevelErr SrtLogLevel = SrtLogLevel(C.LOG_ERR)
|
||||
SrtLogLevelWarning SrtLogLevel = SrtLogLevel(C.LOG_WARNING)
|
||||
SrtLogLevelNotice SrtLogLevel = SrtLogLevel(C.LOG_NOTICE)
|
||||
SrtLogLevelInfo SrtLogLevel = SrtLogLevel(C.LOG_INFO)
|
||||
SrtLogLevelDebug SrtLogLevel = SrtLogLevel(C.LOG_DEBUG)
|
||||
SrtLogLevelTrace SrtLogLevel = SrtLogLevel(8)
|
||||
)
|
||||
|
||||
var (
|
||||
logCBPtr unsafe.Pointer = nil
|
||||
logCBPtrLock sync.Mutex
|
||||
)
|
||||
|
||||
//export srtLogCBWrapper
|
||||
func srtLogCBWrapper(arg unsafe.Pointer, level C.int, file *C.char, line C.int, area, message *C.char) {
|
||||
userCB := gopointer.Restore(arg).(LogCallBackFunc)
|
||||
go userCB(SrtLogLevel(level), C.GoString(file), int(line), C.GoString(area), C.GoString(message))
|
||||
}
|
||||
|
||||
func SrtSetLogLevel(level SrtLogLevel) {
|
||||
C.srt_setloglevel(C.int(level))
|
||||
}
|
||||
|
||||
func SrtSetLogHandler(cb LogCallBackFunc) {
|
||||
ptr := gopointer.Save(cb)
|
||||
C.srt_setloghandler(ptr, (*C.SRT_LOG_HANDLER_FN)(C.srtLogCB))
|
||||
storeLogCBPtr(ptr)
|
||||
}
|
||||
|
||||
func SrtUnsetLogHandler() {
|
||||
C.srt_setloghandler(nil, nil)
|
||||
storeLogCBPtr(nil)
|
||||
}
|
||||
|
||||
func storeLogCBPtr(ptr unsafe.Pointer) {
|
||||
logCBPtrLock.Lock()
|
||||
defer logCBPtrLock.Unlock()
|
||||
if logCBPtr != nil {
|
||||
gopointer.Unref(logCBPtr)
|
||||
}
|
||||
logCBPtr = ptr
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue