-
Notifications
You must be signed in to change notification settings - Fork 0
/
gen.go
33 lines (27 loc) · 761 Bytes
/
gen.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
package grpcConst
import "fmt"
//Merger is the interface of a type that can merge into itself
type Merger interface {
Merge(interface{})
}
type MessageMergerReducer struct {
ConstantMessage interface{}
}
func (m MessageMergerReducer) SetFields(msg interface{}) error {
if merger, ok := msg.(Merger); ok {
merger.Merge(m.ConstantMessage)
return nil
}
return fmt.Errorf("message %v is not a Merger", msg)
}
//Reducer is the interface of a type that can reduce itself from a reference
type Reducer interface {
Reduce(interface{})
}
func (m MessageMergerReducer) RemoveFields(msg interface{}) error {
if reducer, ok := msg.(Reducer); ok {
reducer.Reduce(m.ConstantMessage)
return nil
}
return fmt.Errorf("message %v is not a Reducer", msg)
}