Skip to content

Commit cc6df2c

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

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

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

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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,19 @@ 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

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

7187
if (result?.Value != null)
7288
{

0 commit comments

Comments
 (0)