0x4b53/amqp-rpc

View on GitHub
acknowledger.go

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package amqprpc

import (
    amqp "github.com/rabbitmq/amqp091-go"
)

// AwareAcknowledger implements the amqp.Acknowledger interface with the
// addition that it can tell if a message has been acked in any way.
type AwareAcknowledger struct {
    Acknowledger amqp.Acknowledger
    Handled      bool
}

// NewAwareAcknowledger returns the passed acknowledger as an AwareAcknowledger.
func NewAwareAcknowledger(acknowledger amqp.Acknowledger) *AwareAcknowledger {
    return &AwareAcknowledger{
        Acknowledger: acknowledger,
    }
}

// Ack passes the Ack down to the underlying Acknowledger.
func (a *AwareAcknowledger) Ack(tag uint64, multiple bool) error {
    a.Handled = true
    return a.Acknowledger.Ack(tag, multiple)
}

// Nack passes the Nack down to the underlying Acknowledger.
func (a *AwareAcknowledger) Nack(tag uint64, multiple, requeue bool) error {
    a.Handled = true
    return a.Acknowledger.Nack(tag, multiple, requeue)
}

// Reject passes the Reject down to the underlying Acknowledger.
func (a *AwareAcknowledger) Reject(tag uint64, requeue bool) error {
    a.Handled = true
    return a.Acknowledger.Reject(tag, requeue)
}