mosn

Форк
0
/
route_handler.go 
44 строки · 1005.0 Байт
1
package main
2

3
import (
4
	"context"
5

6
	"mosn.io/api"
7
	"mosn.io/mosn/pkg/router"
8
	"mosn.io/mosn/pkg/types"
9
)
10

11
type extendHandler struct {
12
	headers api.HeaderMap
13
	routers types.Routers
14
	route   api.Route
15
}
16

17
func (h *extendHandler) IsAvailable(ctx context.Context, manager types.ClusterManager) (types.ClusterSnapshot, types.HandlerStatus) {
18
	rs := h.routers.MatchAllRoutes(ctx, h.headers)
19
	for _, r := range rs {
20
		name := r.RouteRule().ClusterName(ctx)
21
		snap := manager.GetClusterSnapshot(ctx, name)
22
		// Verify is cluster config exists hosts
23
		if snap.IsExistsHosts(nil) {
24
			h.route = r
25
			return snap, types.HandlerAvailable
26
		}
27
	}
28
	return nil, types.HandlerNotAvailable
29
}
30

31
func (h *extendHandler) Route() api.Route {
32
	return h.route
33
}
34

35
func MakeExtendHandler(ctx context.Context, headers api.HeaderMap, routers types.Routers) types.RouteHandler {
36
	return &extendHandler{
37
		headers: headers,
38
		routers: routers,
39
	}
40
}
41

42
func init() {
43
	router.RegisterMakeHandler("check-handler", MakeExtendHandler, false)
44
}
45

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

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

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

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