public async Task DestroyResource()

in src/NMS.AMQP/Provider/Amqp/AmqpProvider.cs [181:223]


        public async Task DestroyResource(INmsResource resourceInfo)
        {
            switch (resourceInfo)
            {
                case NmsSessionInfo sessionInfo:
                {
                    AmqpSession session = connection.GetSession(sessionInfo.Id);
                    await session.CloseAsync().Await();
                    return;
                }
                case NmsConsumerInfo consumerInfo:
                {
                    AmqpSession session = connection.GetSession(consumerInfo.SessionId);
                    AmqpConsumer consumer = session.GetConsumer(consumerInfo.Id);
                    await consumer.CloseAsync().Await();;
                    session.RemoveConsumer(consumerInfo.Id);
                    return;
                }
                case NmsProducerInfo producerInfo:
                {
                    AmqpSession session = connection.GetSession(producerInfo.SessionId);
                    AmqpProducer producer = session.GetProducer(producerInfo.Id);
                    await producer.CloseAsync().Await();;
                    session.RemoveProducer(producerInfo.Id);
                    return;
                }
                case NmsTemporaryDestination temporaryDestination:
                {
                    AmqpTemporaryDestination amqpTemporaryDestination = connection.GetTemporaryDestination(temporaryDestination);
                    if (amqpTemporaryDestination != null)
                    {
                        await amqpTemporaryDestination.CloseAsync().Await();;
                        connection.RemoveTemporaryDestination(temporaryDestination);
                    }
                    else
                        Tracer.Debug($"Could not find temporary destination {temporaryDestination} to delete.");

                    return;
                }
                default:
                    throw new ArgumentOutOfRangeException(nameof(resourceInfo), "Not supported resource type.");
            }
          }