| Index: filter/featureBreaker/mail.go
|
| diff --git a/filter/featureBreaker/mail.go b/filter/featureBreaker/mail.go
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d5023c59802285f38f904da8dd2d34678a065b91
|
| --- /dev/null
|
| +++ b/filter/featureBreaker/mail.go
|
| @@ -0,0 +1,34 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package featureBreaker
|
| +
|
| +import (
|
| + "github.com/luci/gae/service/mail"
|
| + "golang.org/x/net/context"
|
| +)
|
| +
|
| +type mailState struct {
|
| + *state
|
| +
|
| + mail.Interface
|
| +}
|
| +
|
| +var _ mail.Interface = (*mailState)(nil)
|
| +
|
| +func (m *mailState) Send(msg *mail.Message) error {
|
| + return m.run(func() error { return m.Interface.Send(msg) })
|
| +}
|
| +
|
| +func (m *mailState) SendToAdmins(msg *mail.Message) error {
|
| + return m.run(func() error { return m.Interface.SendToAdmins(msg) })
|
| +}
|
| +
|
| +// FilterMail installs a counter mail filter in the context.
|
| +func FilterMail(c context.Context, defaultError error) (context.Context, FeatureBreaker) {
|
| + state := newState(defaultError)
|
| + return mail.AddFilters(c, func(ic context.Context, i mail.Interface) mail.Interface {
|
| + return &mailState{state, i}
|
| + }), state
|
| +}
|
|
|