|
DreamineVMS 1.0.0.0
Windows PC의 RTSP·USB 카메라 영상을 HLS로 변환해 원격 CCTV Viewer에 전달하는 데스크톱 에이전트입니다.
|


Public 멤버 함수 | |
| HlsSegmentPusherService (AgentApiClient api, IVmsCameraRepository repository, IConfiguration config, ILogger< HlsSegmentPusherService > logger) | |
Protected 멤버 함수 | |
| override async Task | ExecuteAsync (CancellationToken stoppingToken) |
Private 멤버 함수 | |
| async Task | RunCameraLoopAsync (string cameraId, string outputRoot, CancellationToken ct) |
| async Task | LoginWithRetryAsync (CancellationToken ct) |
| async Task | EnsureLoggedInAsync (CancellationToken ct) |
| async Task | SyncCamerasAsync () |
| async Task< bool > | TryPushFileAsync (string cameraId, string filePath, string filename) |
| string | GetOutputRoot () |
정적 Private 멤버 함수 | |
| static List< string > | ParseSegmentsFromM3u8 (byte[] bytes) |
Private 속성 | |
| readonly AgentApiClient | _api |
| readonly IVmsCameraRepository | _repository |
| readonly IConfiguration | _config |
| readonly ILogger< HlsSegmentPusherService > | _logger |
| readonly SemaphoreSlim | _loginLock = new(1, 1) |
에이전트 모드: 자동 로그인 → 로컬 카메라를 서버에 등록 → HLS 세그먼트 업로드. 카메라별로 독립 루프를 병렬 실행하여 한 카메라 업로드가 다른 카메라를 블로킹하지 않음.
HlsSegmentPusherService.cs 파일의 17 번째 라인에서 정의되었습니다.
|
inline |
지정한 설정으로 HlsSegmentPusherService 클래스의 새 인스턴스를 초기화합니다.
| api | api에 사용할 AgentApiClient 값입니다. |
| repository | repository에 사용할 IVmsCameraRepository 값입니다. |
| config | config에 사용할 IConfiguration 값입니다. |
| logger | logger에 사용할 ILogger<HlsSegmentPusherService> 값입니다. |
HlsSegmentPusherService.cs 파일의 105 번째 라인에서 정의되었습니다.
다음을 참조함 : _api, _config, _logger, _repository.
|
inlineprivate |
Ensure Logged In Async 작업을 수행합니다.
| ct | 취소 요청을 감시하는 토큰입니다. |
Task 결과입니다.HlsSegmentPusherService.cs 파일의 409 번째 라인에서 정의되었습니다.
다음을 참조함 : _api, _loginLock, LoginWithRetryAsync().
다음에 의해서 참조됨 : ExecuteAsync(), RunCameraLoopAsync().


|
inlineprotected |
Execute Async 작업을 수행합니다.
| stoppingToken | stopping Token에 사용할 CancellationToken 값입니다. |
Task 결과입니다.HlsSegmentPusherService.cs 파일의 141 번째 라인에서 정의되었습니다.
다음을 참조함 : _api, _config, _logger, _repository, EnsureLoggedInAsync(), GetOutputRoot(), RunCameraLoopAsync(), SyncCamerasAsync().

|
inlineprivate |
Output Root 값을 가져옵니다.
string 결과입니다.HlsSegmentPusherService.cs 파일의 571 번째 라인에서 정의되었습니다.
다음을 참조함 : _config.
다음에 의해서 참조됨 : ExecuteAsync().

|
inlineprivate |
Login With Retry Async 작업을 수행합니다.
| ct | 취소 요청을 감시하는 토큰입니다. |
Task 결과입니다.HlsSegmentPusherService.cs 파일의 374 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : EnsureLoggedInAsync().

|
inlinestaticprivate |
Parse Segments From M3u8 작업을 수행합니다.
| bytes | bytes에 사용할 byte[] 값입니다. |
List<string> 결과입니다.HlsSegmentPusherService.cs 파일의 541 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : RunCameraLoopAsync().

|
inlineprivate |
Run Camera Loop Async 작업을 수행합니다.
| cameraId | camera Id에 사용할 string 값입니다. |
| outputRoot | output Root에 사용할 string 값입니다. |
| ct | 취소 요청을 감시하는 토큰입니다. |
Task 결과입니다.HlsSegmentPusherService.cs 파일의 239 번째 라인에서 정의되었습니다.
다음을 참조함 : _api, _logger, EnsureLoggedInAsync(), ParseSegmentsFromM3u8(), SyncCamerasAsync(), TryPushFileAsync().
다음에 의해서 참조됨 : ExecuteAsync().


|
inlineprivate |
Sync Cameras Async 작업을 수행합니다.
Task 결과입니다.HlsSegmentPusherService.cs 파일의 448 번째 라인에서 정의되었습니다.
다음을 참조함 : _api, _logger, _repository.
다음에 의해서 참조됨 : ExecuteAsync(), RunCameraLoopAsync().

|
inlineprivate |
Push File Async 작업을 시도하고 성공 여부를 반환합니다.
| cameraId | camera Id에 사용할 string 값입니다. |
| filePath | file Path에 사용할 string 값입니다. |
| filename | filename에 사용할 string 값입니다. |
Task<bool> 결과입니다.HlsSegmentPusherService.cs 파일의 503 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : RunCameraLoopAsync().

|
private |
api 값을 보관합니다.
HlsSegmentPusherService.cs 파일의 27 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : EnsureLoggedInAsync(), ExecuteAsync(), HlsSegmentPusherService(), LoginWithRetryAsync(), RunCameraLoopAsync(), SyncCamerasAsync(), TryPushFileAsync().
|
private |
config 값을 보관합니다.
HlsSegmentPusherService.cs 파일의 45 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : ExecuteAsync(), GetOutputRoot(), HlsSegmentPusherService().
|
private |
logger 값을 보관합니다.
HlsSegmentPusherService.cs 파일의 54 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : ExecuteAsync(), HlsSegmentPusherService(), LoginWithRetryAsync(), RunCameraLoopAsync(), SyncCamerasAsync(), TryPushFileAsync().
|
private |
login Lock 값을 보관합니다.
HlsSegmentPusherService.cs 파일의 63 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : EnsureLoggedInAsync().
|
private |
repository 값을 보관합니다.
HlsSegmentPusherService.cs 파일의 36 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : ExecuteAsync(), HlsSegmentPusherService(), SyncCamerasAsync().