コード例 #1
0
        private async Task ProcessReceivedMessageAsync(
            string topic,
            string messagePayload)
        {
            var payload = OpenVaspPayload.Create(messagePayload);

            _logger?.LogInformation(
                $"Received {payload.Instruction} with topic {topic} for connection {payload.ConnectionId} from {payload.SenderVaspId} to {_vaspId}");

            switch (payload.Instruction)
            {
            case Instruction.Ack:
                await HandleAcknowledgementMessageAsync(payload);

                break;

            case Instruction.Invite:
                await HandleInviteMessageAsync(payload);

                break;

            case Instruction.Accept:
                await HandleAcceptMessageAsync(payload);

                break;

            case Instruction.Deny:
                await HandleDenyMessageAsync(payload);

                break;

            case Instruction.Update:
                await HandleUpdateMessageAsync(payload);

                break;

            case Instruction.Close:
                await HandleCloseMessageAsync(payload);

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            if (!_openVaspPayloads.ContainsKey(payload.EnvelopeId))
            {
                _openVaspPayloads[payload.EnvelopeId] = payload;
            }
        }