playback 버그 수정

This commit is contained in:
logonkhi
2025-07-28 19:59:35 +09:00
parent f5a36697ba
commit 231af33e6f
43 changed files with 537 additions and 325 deletions

View File

@@ -1,4 +1,4 @@
#nullable enable
#nullable enable
using System;
using System.Collections.Generic;
@@ -18,19 +18,19 @@ namespace UVC.Data.Http
/// <example>
/// <code>
/// var config = new HttpRequestConfig("https://api.example.com/data", "GET")
/// .setDataMapper(new DataMapper(dataMask))
/// .setSuccessHandler(data => Console.WriteLine(data)) // 성공 핸들러 예시
/// .setFailHandler(errorData => Console.Error.WriteLine(errorData)) // 실패 핸들러 예시
/// .setRetry(5, 2000)
/// .setRepeat(true, 10, 5000);
/// .SetDataMapper(new DataMapper(dataMask))
/// .SetSuccessHandler(data => Console.WriteLine(data)) // 성공 핸들러 예시
/// .SetFailHandler(errorData => Console.Error.WriteLine(errorData)) // 실패 핸들러 예시
/// .SetRetry(5, 2000)
/// .SetRepeat(true, 10, 5000);
///
/// // 응답을 키별로 분할하는 설정
/// // 응답이 {"AGV": [...], "ALARM": [...]} 형태일 때 사용
/// var splitConfig = new HttpRequestConfig("https://api.example.com/alldata")
/// .setSplitResponseByKey(true) // 이 옵션을 활성화
/// .SetSplitResponseByKey(true) // 이 옵션을 활성화
/// .AddSplitConfig("AGV", new DataMapper(agvMask), agvValidator)
/// .AddSplitConfig("ALARM", new DataMapper(alarmMask))
/// .setSuccessHandler(splitData => {
/// .SetSuccessHandler(splitData => {
/// // HttpDataFetcher 구현에 따라, 분할된 각 데이터가 처리된 후 이 핸들러가 호출될 수 있습니다.
/// // 이 경우 핸들러의 IDataObject는 null일 수 있습니다.
/// Console.WriteLine("Split data processing completed.");
@@ -204,7 +204,7 @@ namespace UVC.Data.Http
/// </summary>
/// <param name="dataMapper">사용할 데이터 매퍼 객체</param>
/// <returns>현재 HttpRequestConfig 인스턴스 (메서드 체이닝용)</returns>
public HttpRequestConfig setDataMapper(DataMapper dataMapper)
public HttpRequestConfig SetDataMapper(DataMapper dataMapper)
{
_dataMapper = dataMapper;
return this;
@@ -242,18 +242,18 @@ namespace UVC.Data.Http
///
/// // 3. 검사기를 HTTP 파이프라인에 설정
/// var pipelineInfo = new HttpRequestConfig("https://api.example.com/users", "get")
/// .setDataMapper(userDataMapper)
/// .setValidator(validator)
/// .setSuccessHandler(userData => {
/// .SetDataMapper(userDataMapper)
/// .SetValidator(validator)
/// .SetSuccessHandler(userData => {
/// // 여기에 도달하는 사용자 데이터는 모두 이메일이 유효하고 18세 이상입니다.
/// Console.WriteLine($"유효한 사용자: {userData["name"]}, {userData["email"]}");
/// })
/// .setFailHandler(errorMsg => {
/// .SetFailHandler(errorMsg => {
/// Console.WriteLine($"요청 실패: {errorMsg}");
/// });
/// </code>
/// </example>
public HttpRequestConfig setValidator(DataValidator validator)
public HttpRequestConfig SetValidator(DataValidator validator)
{
this._validator = validator;
return this;
@@ -281,7 +281,7 @@ namespace UVC.Data.Http
/// </summary>
/// <param name="responseMask">HTTP response에 적용할 <see cref="HttpResponseMask"/>입니다.</param>
/// <returns>지정된 response 마스크가 적용된 업데이트된 <see cref="HttpRequestConfig"/> 인스턴스입니다.</returns>
public HttpRequestConfig setResponseMask(HttpResponseMask responseMask)
public HttpRequestConfig SetResponseMask(HttpResponseMask responseMask)
{
_responseMask = responseMask;
return this;
@@ -294,7 +294,7 @@ namespace UVC.Data.Http
/// </summary>
/// <param name="handler">응답 데이터를 처리할 콜백 함수</param>
/// <returns>현재 HttpRequestConfig 인스턴스 (메서드 체이닝용)</returns>
public HttpRequestConfig setSuccessHandler(Action<IDataObject?>? handler)
public HttpRequestConfig SetSuccessHandler(Action<IDataObject?>? handler)
{
_successhandler = handler;
return this;
@@ -306,7 +306,7 @@ namespace UVC.Data.Http
/// </summary>
/// <param name="handler">실패 정보를 처리할 콜백 함수입니다. 실패 시 관련 데이터를 인자로 받습니다.</param>
/// <returns>현재 HttpRequestConfig 인스턴스 (메서드 체이닝용)</returns>
public HttpRequestConfig setFailHandler(Action<string>? handler)
public HttpRequestConfig SetFailHandler(Action<string>? handler)
{
_failhandler = handler;
return this;
@@ -318,7 +318,7 @@ namespace UVC.Data.Http
/// <param name="maxRetryCount">최대 재시도 횟수 (기본값: 3)</param>
/// <param name="retryDelay">재시도 간 대기 시간(밀리초) (기본값: 1000)</param>
/// <returns>현재 HttpRequestConfig 인스턴스 (메서드 체이닝용)</returns>
public HttpRequestConfig setRetry(int maxRetryCount = 3, int retryDelay = 1000)
public HttpRequestConfig SetRetry(int maxRetryCount = 3, int retryDelay = 1000)
{
_maxRetryCount = maxRetryCount;
_retryDelay = retryDelay;
@@ -341,16 +341,16 @@ namespace UVC.Data.Http
/// <code>
/// // 5초마다 10번 반복 요청, 변경된 데이터만 처리
/// var pipelineInfo = new HttpRequestConfig("https://api.example.com/data", "GET")
/// .setHandler(data => ProcessData(data))
/// .setRepeat(true, 10, 5000, true);
/// .SetHandler(data => ProcessData(data))
/// .SetRepeat(true, 10, 5000, true);
///
/// // 3초마다 무한 반복, 모든 응답 데이터 처리
/// var pipelineInfo = new HttpRequestConfig("https://api.example.com/status", "GET")
/// .setHandler(data => UpdateStatus(data))
/// .setRepeat(true, 0, 3000, false);
/// .SetHandler(data => UpdateStatus(data))
/// .SetRepeat(true, 0, 3000, false);
/// </code>
/// </example>
public HttpRequestConfig setRepeat(bool repeat, int count = 0, int interval = 1000, bool updatedDataOnly = true)
public HttpRequestConfig SetRepeat(bool repeat, int count = 0, int interval = 1000, bool updatedDataOnly = true)
{
_repeat = repeat;
_repeatCount = count;
@@ -366,11 +366,20 @@ namespace UVC.Data.Http
/// </summary>
/// <param name="split">분할 처리 여부</param>
/// <returns>현재 HttpRequestConfig 인스턴스 (메서드 체이닝용)</returns>
public HttpRequestConfig setSplitResponseByKey(bool split)
public HttpRequestConfig SetSplitResponseByKey(bool split)
{
_splitResponseByKey = split;
return this;
}
/// <summary>
/// 업데이트된 데이터만 처리할지 여부를 나타내는 값을 설정합니다.
/// </summary>
/// <param name="v">부울 값. <see langword="true"/>는 업데이트된 데이터만 처리하도록 지정합니다. 그렇지 않으면
/// <see langword="false"/>입니다.</param>
public void SetUpdatedDataOnly(bool v)
{
_updatedDataOnly = v;
}
}
}