141 lines
4.7 KiB
C#
141 lines
4.7 KiB
C#
using ServerCore; using ServerBase;
|
|
using StackExchange.Redis;
|
|
|
|
|
|
using USER_GUID = System.String;
|
|
|
|
|
|
namespace ServerCommon;
|
|
|
|
public class CaliumStorageCacheRequest : RedisRequestSharedBase
|
|
{
|
|
private const int DefaultManageExpireMs = 1 * 60 * 1000;
|
|
|
|
// in
|
|
|
|
// out
|
|
|
|
public CaliumStorageCacheRequest(RedisConnector redisConnector) : base("CaliumStorageCache", redisConnector)
|
|
{
|
|
|
|
}
|
|
|
|
protected override string onMakeKey() => "caliumstorage:start";
|
|
private string getSyncKey() => "caliumstorage:sync:start";
|
|
private string getRetryKey() => "caliumstorage:retry";
|
|
|
|
public override string toBasicString() => "CaliumStorageCacheRequest";
|
|
|
|
public async Task<bool> startCaliumConverterManage(bool isSync = false)
|
|
{
|
|
var result = new Result();
|
|
|
|
var redis_key = isSync ? getSyncKey() : onMakeKey();
|
|
try
|
|
{
|
|
result = await onPrepareRequest();
|
|
if (result.isFail()) return false;
|
|
|
|
var database = getDatabase();
|
|
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
|
|
|
|
var redis_value = await database.StringSetAsync(redis_key, DateTimeHelper.Current.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMilliseconds(DefaultManageExpireMs), When.NotExists);
|
|
if (false == redis_value) return false;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
var error_code = ServerErrorCode.TryCatchException;
|
|
var err_msg = $"Failed to get CaliumConverterManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}";
|
|
result.setFail(error_code, err_msg);
|
|
Log.getLogger().error(result.toBasicString());
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public async Task<bool> checkRetryKey()
|
|
{
|
|
var result = new Result();
|
|
var redis_key = getRetryKey();
|
|
try
|
|
{
|
|
result = await onPrepareRequest();
|
|
if (result.isFail()) return false;
|
|
|
|
var database = getDatabase();
|
|
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
|
|
|
|
var redis_value = await database.KeyExistsAsync(redis_key);
|
|
return redis_value;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
var error_code = ServerErrorCode.TryCatchException;
|
|
var err_msg = $"Failed to get CaliumConverterManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}";
|
|
result.setFail(error_code, err_msg);
|
|
Log.getLogger().error(result.toBasicString());
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public async Task<bool> setRetryKey()
|
|
{
|
|
var result = new Result();
|
|
|
|
var redis_key = getRetryKey();
|
|
try
|
|
{
|
|
result = await onPrepareRequest();
|
|
if (result.isFail()) return false;
|
|
|
|
var database = getDatabase();
|
|
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
|
|
|
|
var check_date = DateTimeHelper.Current.AddDays(1);
|
|
var next_date = new DateTime(check_date.Year, check_date.Month, check_date.Day, 0, 0, 0);
|
|
next_date = next_date.AddMinutes(-1);
|
|
var expire_time = next_date - DateTimeHelper.Current;
|
|
|
|
var redis_value = await database.StringSetAsync(redis_key, DateTimeHelper.Current.ToString("yyyy-MM-dd HH:mm:ss"), expire_time, When.NotExists);
|
|
if (false == redis_value) return false;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
var error_code = ServerErrorCode.TryCatchException;
|
|
var err_msg = $"Failed to get CaliumConverterManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}";
|
|
result.setFail(error_code, err_msg);
|
|
Log.getLogger().error(result.toBasicString());
|
|
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public async Task deleteRetryKey()
|
|
{
|
|
var result = new Result();
|
|
|
|
var redis_key = getRetryKey();
|
|
try
|
|
{
|
|
result = await onPrepareRequest();
|
|
if (result.isFail()) return;
|
|
|
|
var database = getDatabase();
|
|
NullReferenceCheckHelper.throwIfNull(database, () => $"database is null !!!");
|
|
|
|
await database.KeyDeleteAsync(redis_key, CommandFlags.FireAndForget);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
var error_code = ServerErrorCode.TryCatchException;
|
|
var err_msg = $"Failed to get CaliumConverterManageCache from Redis !!! : : errorCode{error_code}, errMsg:{e.Message}";
|
|
result.setFail(error_code, err_msg);
|
|
Log.getLogger().error(result.toBasicString());
|
|
}
|
|
}
|
|
} |