registry/zookeeper/types.go (92 lines of code) (raw):
// Copyright (c) 2022 Alibaba Group Holding Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package zookeeper
import (
"errors"
"time"
)
const (
DEFAULT_REG_TIMEOUT = "10s"
DUBBO = "/dubbo/"
SPRING_CLOUD_SERVICES = "/services"
DUBBO_SERVICES = "/dubbo"
PROVIDERS = "/providers"
CONFIG = "config"
MAPPING = "mapping"
METADATA = "metadata"
DUBBO_PROTOCOL = "dubbo"
HTTP_PROTOCOL = "http"
VERSION = "version"
PROTOCOL = "protocol"
)
type ServiceType int
const (
DubboService ServiceType = iota
SpringCloudService
)
type EventType int
type Event struct {
Path string
Action EventType
Content []byte
InterfaceName string
ServiceType ServiceType
}
const (
// ConnDelay connection delay interval
ConnDelay = 3
// MaxFailTimes max fail times
MaxFailTimes = 3
)
var DefaultTTL = 10 * time.Minute
type InterfaceConfig struct {
Host string
Endpoints []Endpoint
Protocol string
ServiceType ServiceType
}
type Endpoint struct {
Ip string
Port string
Metadata map[string]string
}
var ErrNilChildren = errors.New("has none children")
func WithType(t string) WatcherOption {
return func(w *watcher) {
w.Type = t
}
}
func WithName(name string) WatcherOption {
return func(w *watcher) {
w.Name = name
}
}
func WithDomain(domain string) WatcherOption {
return func(w *watcher) {
w.Domain = domain
}
}
func WithPort(port uint32) WatcherOption {
return func(w *watcher) {
w.Port = port
}
}
type DataListener interface {
DataChange(eventType Event) bool // bool is return for interface implement is interesting
}
const (
// EventTypeAdd means add event
EventTypeAdd = iota
// EventTypeDel means del event
EventTypeDel
// EventTypeUpdate means update event
EventTypeUpdate
)
type ListServiceConfig struct {
UrlIndex string
InterfaceName string
Exit chan struct{}
ServiceType ServiceType
}
type SpringCloudInstancePayload struct {
Metadata map[string]string `json:"metadata"`
}
type SpringCloudInstance struct {
Name string `json:"name"`
Address string `json:"address"`
Port int `json:"port"`
Payload SpringCloudInstancePayload `json:"payload"`
}