mosn

Форк
0
/
factory.go 
71 строка · 2.3 Кб
1
package lib
2

3
import (
4
	"mosn.io/api"
5
	"mosn.io/mosn/pkg/protocol"
6
	"mosn.io/mosn/pkg/protocol/xprotocol"
7
	"mosn.io/mosn/pkg/protocol/xprotocol/bolt"
8
	"mosn.io/mosn/pkg/protocol/xprotocol/boltv2"
9
	"mosn.io/mosn/pkg/protocol/xprotocol/dubbo"
10
	"mosn.io/mosn/pkg/protocol/xprotocol/dubbothrift"
11
	"mosn.io/mosn/pkg/protocol/xprotocol/tars"
12
	xstream "mosn.io/mosn/pkg/stream/xprotocol"
13
	"mosn.io/mosn/pkg/trace"
14
	tracehttp "mosn.io/mosn/pkg/trace/sofa/http"
15
	xtrace "mosn.io/mosn/pkg/trace/sofa/xprotocol"
16
	tracebolt "mosn.io/mosn/pkg/trace/sofa/xprotocol/bolt"
17
	"mosn.io/mosn/test/lib/types"
18
)
19

20
type CreateMockServer func(config interface{}) types.MockServer
21

22
type CreateMockClient func(config interface{}) types.MockClient
23

24
// protoco: CreateFunc
25
var clientFactory map[string]CreateMockClient = map[string]CreateMockClient{}
26
var serverFactory map[string]CreateMockServer = map[string]CreateMockServer{}
27

28
func RegisterCreateClient(protocol string, f CreateMockClient) {
29
	clientFactory[protocol] = f
30
}
31

32
func RegisterCreateServer(protocol string, f CreateMockServer) {
33
	serverFactory[protocol] = f
34
}
35

36
func CreateServer(protocol string, config interface{}) types.MockServer {
37
	f, ok := serverFactory[protocol]
38
	if !ok {
39
		return nil
40
	}
41
	return f(config)
42
}
43

44
func CreateClient(protocol string, config interface{}) types.MockClient {
45
	f, ok := clientFactory[protocol]
46
	if !ok {
47
		return nil
48
	}
49
	return f(config)
50
}
51

52
// init for clients
53
func init() {
54
	// tracer driver register
55
	trace.RegisterDriver("SOFATracer", trace.NewDefaultDriverImpl())
56
	// xprotocol action register
57
	xprotocol.RegisterXProtocolAction(xstream.NewConnPool, xstream.NewStreamFactory, func(codec api.XProtocolCodec) {
58
		name := codec.ProtocolName()
59
		trace.RegisterTracerBuilder("SOFATracer", name, xtrace.NewTracer)
60
	})
61
	// xprotocol register
62
	_ = xprotocol.RegisterXProtocolCodec(&bolt.XCodec{})
63
	_ = xprotocol.RegisterXProtocolCodec(&boltv2.XCodec{})
64
	_ = xprotocol.RegisterXProtocolCodec(&dubbo.XCodec{})
65
	_ = xprotocol.RegisterXProtocolCodec(&dubbothrift.XCodec{})
66
	_ = xprotocol.RegisterXProtocolCodec(&tars.XCodec{})
67
	// trace register
68
	xtrace.RegisterDelegate(bolt.ProtocolName, tracebolt.Boltv1Delegate)
69
	xtrace.RegisterDelegate(boltv2.ProtocolName, tracebolt.Boltv1Delegate)
70
	trace.RegisterTracerBuilder("SOFATracer", protocol.HTTP1, tracehttp.NewTracer)
71
}
72

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.