Changed command dictionary to a command tree. Fixed various requests. OBS reconnection added if identified previously.
This commit is contained in:
@@ -5,22 +5,16 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using Serilog;
|
||||
using Serilog.Context;
|
||||
using TwitchChatTTS.OBS.Socket.Data;
|
||||
using TwitchChatTTS.OBS.Socket.Manager;
|
||||
|
||||
namespace TwitchChatTTS.OBS.Socket.Handlers
|
||||
{
|
||||
public class RequestBatchResponseHandler : IWebSocketHandler
|
||||
{
|
||||
private readonly IWebSocketHandler _requestResponseHandler;
|
||||
private readonly ILogger _logger;
|
||||
public int OperationCode { get; } = 9;
|
||||
|
||||
public RequestBatchResponseHandler(
|
||||
[FromKeyedServices("obs-requestresponse")] IWebSocketHandler requestResponseHandler,
|
||||
ILogger logger
|
||||
)
|
||||
public RequestBatchResponseHandler(ILogger logger)
|
||||
{
|
||||
_requestResponseHandler = requestResponseHandler;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
@@ -28,40 +22,38 @@ namespace TwitchChatTTS.OBS.Socket.Handlers
|
||||
{
|
||||
if (data is not RequestBatchResponseMessage message || message == null)
|
||||
return;
|
||||
if (sender is not OBSSocketClient obs)
|
||||
return;
|
||||
|
||||
using (LogContext.PushProperty("obsrid", message.RequestId))
|
||||
var results = message.Results.ToList();
|
||||
_logger.Debug($"Received request batch response of {results.Count} messages.");
|
||||
|
||||
int count = results.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
if (results[i] == null)
|
||||
continue;
|
||||
|
||||
var results = message.Results.ToList();
|
||||
_logger.Debug($"Received request batch response of {results.Count} messages.");
|
||||
|
||||
int count = results.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
try
|
||||
{
|
||||
if (results[i] == null)
|
||||
_logger.Debug($"Request response from OBS request batch #{i + 1}/{count}: {results[i]}");
|
||||
var response = JsonSerializer.Deserialize<RequestResponseMessage>(results[i].ToString()!, new JsonSerializerOptions()
|
||||
{
|
||||
PropertyNameCaseInsensitive = false,
|
||||
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
|
||||
});
|
||||
if (response == null)
|
||||
continue;
|
||||
|
||||
try
|
||||
{
|
||||
_logger.Debug($"Request response from OBS request batch #{i + 1}/{count}: {results[i]}");
|
||||
var response = JsonSerializer.Deserialize<RequestResponseMessage>(results[i].ToString()!, new JsonSerializerOptions()
|
||||
{
|
||||
PropertyNameCaseInsensitive = false,
|
||||
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
|
||||
});
|
||||
if (response == null)
|
||||
continue;
|
||||
|
||||
await _requestResponseHandler.Execute(sender, response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Error(ex, "Failed to process an item in a request batch message.");
|
||||
}
|
||||
await obs.ExecuteRequest(response);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Error(ex, "Failed to process an item in a request batch message.");
|
||||
}
|
||||
|
||||
_logger.Debug($"Finished processing all request in this batch.");
|
||||
}
|
||||
|
||||
_logger.Debug($"Finished processing all request in this batch.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user