초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Reflection.Metadata.Ecma335;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using MySqlConnector;
using ServerCore; using ServerBase;
namespace ServerBase;
//=============================================================================================
// MySqlConnector 관련 각종 지원 함수
//
// author : kangms
//
//=============================================================================================
public static class MySqlConnectorHelper
{
public static async Task<Result> simpleTryConnectToDb(string connectionString)
{
var result = new Result();
var err_msg = string.Empty;
using (var db_connector = new MySqlDbConnector())
{
var error_cdoe = await db_connector.initMySql(connectionString);
if (error_cdoe.isFail())
{
err_msg = $"Failed to initMySql() !!! : errCode:{error_cdoe} - connectString:{connectionString}";
result.setFail(error_cdoe, err_msg);
}
}
return result;
}
public static async Task<Result> simpleQueryExecuteForReaderAsync( string queryString, Func<MySqlDataReader, ServerErrorCode> readFunc
, string connectionString
, Int16 queryTimeoutSec = 15
, Int16 retryIntervalMSec = 1000, Int16 retryCount = 3 )
{
var result = new Result();
var err_msg = string.Empty;
using ( var db_connector = new MySqlDbConnector() )
{
for(var i = 0; i <= retryCount; i++)
{
var error_cdoe = await db_connector.initMySql(connectionString);
if (error_cdoe.isSuccess())
{
error_cdoe = await db_connector.querySQL(queryString, readFunc);
if(error_cdoe.isSuccess())
{
// 성공하면 즉시 반환 한다 !!!
result.setSuccess();
return result;
}
}
// Db와 연결이 끊어진 경우는 재시도 설정에 따라 추가 처리 한다.
if (ConnectionState.Closed == db_connector.getLastConnectionState())
{
err_msg = $"Failed to retry Open MySql !!! : errCode:{error_cdoe}";
result.setFail(error_cdoe, err_msg);
if (i > 0)
{
await Task.Delay(retryIntervalMSec);
err_msg = $"Retry Query !!! : retriedCount:{i}, queryString:{queryString} - retryableCount:{retryCount}";
Log.getLogger().error(err_msg);
}
}
// 기타 오류 발생시 실패로 처리 한다.
else
{
err_msg = $"Failed to simpleQueryExecuteForReaderAsync() !!! : errCode:{error_cdoe}, queryString:{queryString} - retryCount:{retryCount}";
Log.getLogger().error(err_msg);
result.setFail(error_cdoe, err_msg);
break;
}
}
}
return result;
}
}