|
|
@ -35,6 +35,8 @@ func (q *AuthenticationQueue) queueRequest(r *AuthRequest) error {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r.Queued = time.Now()
|
|
|
|
|
|
|
|
|
|
|
|
q.requestMap[ID] = r
|
|
|
|
q.requestMap[ID] = r
|
|
|
|
|
|
|
|
|
|
|
|
(*q.app.Logger).Info("Queued request by id: ", ID)
|
|
|
|
(*q.app.Logger).Info("Queued request by id: ", ID)
|
|
|
@ -47,6 +49,25 @@ func (q *AuthenticationQueue) Init() {
|
|
|
|
q.requestChan = make(chan *AuthRequest)
|
|
|
|
q.requestChan = make(chan *AuthRequest)
|
|
|
|
q.tokenChan = make(chan *AuthToken)
|
|
|
|
q.tokenChan = make(chan *AuthToken)
|
|
|
|
q.startRequestChanListener()
|
|
|
|
q.startRequestChanListener()
|
|
|
|
|
|
|
|
q.startRequestMapCleaner()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (q *AuthenticationQueue) startRequestMapCleaner() {
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
|
|
|
|
for _ = range time.Tick(time.Second) {
|
|
|
|
|
|
|
|
for key, req := range q.requestMap {
|
|
|
|
|
|
|
|
// If the request has been queued for more than 30
|
|
|
|
|
|
|
|
// minutes, it's time to delete it.
|
|
|
|
|
|
|
|
if req.Queued.Add(30 * time.Minute).Before(time.Now()) {
|
|
|
|
|
|
|
|
(*q.app.Logger).Info("Deleting inactive request with id: ", req.ID)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
req.Cancel()
|
|
|
|
|
|
|
|
delete(q.requestMap, key)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (q *AuthenticationQueue) startRequestChanListener() {
|
|
|
|
func (q *AuthenticationQueue) startRequestChanListener() {
|
|
|
|