forked from cloudfoundry/route-emitter
/
service_client.go
34 lines (26 loc) · 999 Bytes
/
service_client.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
package route_emitter
import (
"time"
"github.com/cloudfoundry-incubator/consuladapter"
"github.com/cloudfoundry-incubator/locket"
"github.com/pivotal-golang/clock"
"github.com/pivotal-golang/lager"
"github.com/tedsuo/ifrit"
)
const RouteEmitterLockSchemaKey = "route_emitter_lock"
func RouteEmitterLockSchemaPath() string {
return locket.LockSchemaPath(RouteEmitterLockSchemaKey)
}
type ServiceClient interface {
NewRouteEmitterLockRunner(logger lager.Logger, bulkerID string, retryInterval time.Duration) ifrit.Runner
}
type serviceClient struct {
session *consuladapter.Session
clock clock.Clock
}
func NewServiceClient(session *consuladapter.Session, clock clock.Clock) ServiceClient {
return serviceClient{session, clock}
}
func (c serviceClient) NewRouteEmitterLockRunner(logger lager.Logger, emitterID string, retryInterval time.Duration) ifrit.Runner {
return locket.NewLock(c.session, RouteEmitterLockSchemaPath(), []byte(emitterID), c.clock, retryInterval, logger)
}