private void UpdateStateOnMessage(TestHarnessConnection THConnection, TestHarnessConnectionState nextState, Func <ServiceMessageProcessingEvent, bool> predicate) { _eventAggregator.GetEventByType <ServiceMessageProcessingEvent>() .Where(predicate) .Take(1) .Subscribe(_ => { THConnection.State = nextState; }); }
public async Task <IActionResult> ReceiveInvitationAsync(OperationBody body) { var invitation = body.Data.ToObject <ConnectionInvitationMessage>(); var context = await _agentContextProvider.GetContextAsync(); var(request, record) = await _connectionService.CreateRequestAsync(context, invitation); var THConnection = new TestHarnessConnection { ConnectionId = record.Id, State = TestHarnessConnectionState.Invited, Request = request }; _connectionCache.Set(record.Id, THConnection); return(Ok(THConnection)); }
public async Task <IActionResult> CreateInvitationAsync() { var context = await _agentContextProvider.GetContextAsync(); var(invitation, connection) = await _connectionService.CreateInvitationAsync(context); var testHarnessConnection = new TestHarnessConnection { ConnectionId = connection.Id, State = TestHarnessConnectionState.Invited }; _connectionCache.Set(connection.Id, testHarnessConnection); // Listen for connection request to update the state UpdateStateOnMessage(testHarnessConnection, TestHarnessConnectionState.Requested, _ => _.MessageType == MessageTypes.ConnectionRequest && _.RecordId == connection.Id); return(Ok(new { connection_id = testHarnessConnection.ConnectionId, state = testHarnessConnection.State, invitation })); }