Skip to content

Commit 604c1d3

Browse files
Mgmt Hub: perform commands directly if in-process instance present
1 parent 3e7788b commit 604c1d3

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

src/Certify.Server/Certify.Server.Hub.Api/Services/ManagementAPI.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Text.Json;
1+
using System.Text.Json;
22
using Certify.Client;
33
using Certify.Models;
44
using Certify.Models.Config;
@@ -17,19 +17,25 @@ public partial class ManagementAPI
1717
{
1818
IInstanceManagementStateProvider _mgmtStateProvider;
1919
IHubContext<InstanceManagementHub, IInstanceManagementHub> _mgmtHubContext;
20-
ICertifyInternalApiClient _backendAPIClient;
20+
Certify.Management.ICertifyManager _certifyManager;
2121

2222
/// <summary>
2323
/// Constructor for Management Hub API
2424
/// </summary>
2525
/// <param name="mgmtStateProvider"></param>
2626
/// <param name="mgmtHubContext"></param>
2727
/// <param name="backendAPIClient"></param>
28-
public ManagementAPI(IInstanceManagementStateProvider mgmtStateProvider, IHubContext<InstanceManagementHub, IInstanceManagementHub> mgmtHubContext, ICertifyInternalApiClient backendAPIClient)
28+
public ManagementAPI(IInstanceManagementStateProvider mgmtStateProvider, IHubContext<InstanceManagementHub, IInstanceManagementHub> mgmtHubContext)
2929
{
3030
_mgmtStateProvider = mgmtStateProvider;
3131
_mgmtHubContext = mgmtHubContext;
32-
_backendAPIClient = backendAPIClient;
32+
}
33+
34+
public ManagementAPI(IInstanceManagementStateProvider mgmtStateProvider, IHubContext<InstanceManagementHub, IInstanceManagementHub> mgmtHubContext, Certify.Management.ICertifyManager certifyManager)
35+
{
36+
_mgmtStateProvider = mgmtStateProvider;
37+
_mgmtHubContext = mgmtHubContext;
38+
_certifyManager = certifyManager;
3339
}
3440

3541
private async Task<InstanceCommandResult?> GetCommandResult(string instanceId, InstanceCommandRequest cmd)
@@ -64,9 +70,20 @@ private async Task SendCommandWithNoResult(string instanceId, InstanceCommandReq
6470

6571
private async Task<T?> PerformInstanceCommandTaskWithResult<T>(string instanceId, KeyValuePair<string, string>[] args, string commandType)
6672
{
73+
InstanceCommandResult result;
6774
var cmd = new InstanceCommandRequest(commandType, args);
6875

6976
var result = await GetCommandResult(instanceId, cmd);
77+
if (_certifyManager != null && instanceId == _mgmtStateProvider.GetManagementHubInstanceId())
78+
{
79+
// get command result directly from in-process instance
80+
result = await _certifyManager.PerformDirectHubCommandWithResult(cmd);
81+
}
82+
else
83+
{
84+
// get command result via SignalR
85+
result = await GetCommandResult(instanceId, cmd);
86+
}
7087

7188
if (result?.Value != null)
7289
{

0 commit comments

Comments
 (0)