diff options
Diffstat (limited to 'plugin/loadbalance/handler.go')
-rw-r--r-- | plugin/loadbalance/handler.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/plugin/loadbalance/handler.go b/plugin/loadbalance/handler.go new file mode 100644 index 000000000..da4cf1549 --- /dev/null +++ b/plugin/loadbalance/handler.go @@ -0,0 +1,23 @@ +// Package loadbalance is plugin for rewriting responses to do "load balancing" +package loadbalance + +import ( + "github.com/coredns/coredns/plugin" + + "github.com/miekg/dns" + "golang.org/x/net/context" +) + +// RoundRobin is plugin to rewrite responses for "load balancing". +type RoundRobin struct { + Next plugin.Handler +} + +// ServeDNS implements the plugin.Handler interface. +func (rr RoundRobin) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { + wrr := &RoundRobinResponseWriter{w} + return plugin.NextOrFailure(rr.Name(), rr.Next, ctx, wrr, r) +} + +// Name implements the Handler interface. +func (rr RoundRobin) Name() string { return "loadbalance" } |