func (q *ApplicationUplinkQueue) Init(ctx context.Context) error {
	return q.applicationQueue.Init(ctx)
}
Init initializes the ApplicationUplinkQueue.
package redis
import (
	"context"
	"github.com/go-redis/redis/v8"
	"go.thethings.network/lorawan-stack/v3/pkg/errors"
	"go.thethings.network/lorawan-stack/v3/pkg/networkserver"
	"go.thethings.network/lorawan-stack/v3/pkg/networkserver/internal/time"
	ttnredis "go.thethings.network/lorawan-stack/v3/pkg/redis"
	"go.thethings.network/lorawan-stack/v3/pkg/ttnpb"
	"go.thethings.network/lorawan-stack/v3/pkg/unique"
)
type ApplicationUplinkQueue struct {
	applicationQueue *ttnredis.TaskQueue
	redis   *ttnredis.Client
	maxLen  int64
	group   string
	key     string
	minIdle time.Duration
}
const (
	payloadKey = "payload"
)
func NewApplicationUplinkQueue(cl *ttnredis.Client, maxLen int64, group string, minIdle time.Duration) *ApplicationUplinkQueue {
	return &ApplicationUplinkQueue{
		applicationQueue: &ttnredis.TaskQueue{
			Redis:  cl,
			MaxLen: maxLen,
			Group:  group,
			Key:    cl.Key("application"),
		},
		redis:   cl,
		maxLen:  maxLen,
		group:   group,
		key:     cl.Key("application-uplink"),
		minIdle: minIdle,
	}
}
func ApplicationUplinkQueueUIDGenericUplinkKey(r keyer, uid string) string {
	return ttnredis.Key(UIDKey(r, uid), "uplinks")
}
func (q *ApplicationUplinkQueue) uidGenericUplinkKey(uid string) string {
	return ApplicationUplinkQueueUIDGenericUplinkKey(q.redis, uid)
}
func (q *ApplicationUplinkQueue) uidInvalidationKey(uid string) string {
	return ttnredis.Key(q.uidGenericUplinkKey(uid), "invalidation")
}
func (q *ApplicationUplinkQueue) uidJoinAcceptKey(uid string) string {
	return ttnredis.Key(q.uidGenericUplinkKey(uid), "join-accept")
}