forked from xmidt-org/caduceus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
caduceus_type.go
69 lines (60 loc) · 1.92 KB
/
caduceus_type.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
* Copyright 2017 Comcast Cable Communications Management, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package main
import (
"time"
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/metrics"
"github.com/xmidt-org/webpa-common/logging"
"github.com/xmidt-org/wrp-go/wrp"
)
// Below is the struct we're using to contain the data from a provided config file
// TODO: Try to figure out how to make bucket ranges configurable
type CaduceusConfig struct {
AuthHeader []string
NumWorkerThreads int
JobQueueSize int
Sender SenderConfig
JWTValidators []JWTValidator
}
type SenderConfig struct {
NumWorkersPerSender int
QueueSizePerSender int
CutOffPeriod time.Duration
Linger time.Duration
ClientTimeout time.Duration
ResponseHeaderTimeout time.Duration
IdleConnTimeout time.Duration
DeliveryRetries int
DeliveryInterval time.Duration
}
type CaduceusMetricsRegistry interface {
NewCounter(name string) metrics.Counter
NewGauge(name string) metrics.Gauge
}
type RequestHandler interface {
HandleRequest(workerID int, msg *wrp.Message)
}
type CaduceusHandler struct {
senderWrapper SenderWrapper
log.Logger
}
func (ch *CaduceusHandler) HandleRequest(workerID int, msg *wrp.Message) {
logging.Info(ch).Log("workerID", workerID, logging.MessageKey(), "Worker received a request, now passing"+
" to sender")
ch.senderWrapper.Queue(msg)
}