Hunter0x7c7
2022-08-11 b8230139fb40edea387617b6accd8371e37eda58
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
package multiobservatory
 
import (
    "context"
 
    "github.com/golang/protobuf/jsonpb"
    "github.com/golang/protobuf/proto"
 
    "github.com/v2fly/v2ray-core/v5/common"
    "github.com/v2fly/v2ray-core/v5/common/taggedfeatures"
    "github.com/v2fly/v2ray-core/v5/features"
    "github.com/v2fly/v2ray-core/v5/features/extension"
)
 
type Observer struct {
    features.TaggedFeatures
    config *Config
    ctx    context.Context
}
 
func (o Observer) GetObservation(ctx context.Context) (proto.Message, error) {
    return common.Must2(o.GetFeaturesByTag("")).(extension.Observatory).GetObservation(ctx)
}
 
func (o Observer) Type() interface{} {
    return extension.ObservatoryType()
}
 
func New(ctx context.Context, config *Config) (*Observer, error) {
    holder, err := taggedfeatures.NewHolderFromConfig(ctx, config.Holders, extension.ObservatoryType())
    if err != nil {
        return nil, err
    }
    return &Observer{config: config, ctx: ctx, TaggedFeatures: holder}, nil
}
 
func (x *Config) UnmarshalJSONPB(unmarshaler *jsonpb.Unmarshaler, bytes []byte) error {
    var err error
    x.Holders, err = taggedfeatures.LoadJSONConfig(context.TODO(), "service", "background", bytes)
    return err
}
 
func init() {
    common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, config interface{}) (interface{}, error) {
        return New(ctx, config.(*Config))
    }))
}