core/base/resource.go (47 lines of code) (raw):
// Copyright 1999-2020 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 base
import "fmt"
// ResourceType represents classification of the resources
type ResourceType int32
const (
ResTypeCommon ResourceType = iota
ResTypeWeb
ResTypeRPC
ResTypeAPIGateway
ResTypeDBSQL
ResTypeCache
ResTypeMQ
)
// TrafficType describes the traffic type: Inbound or Outbound
type TrafficType int32
const (
// Inbound represents the inbound traffic (e.g. provider)
Inbound TrafficType = iota
// Outbound represents the outbound traffic (e.g. consumer)
Outbound
)
func (t TrafficType) String() string {
switch t {
case Inbound:
return "Inbound"
case Outbound:
return "Outbound"
default:
return fmt.Sprintf("%d", t)
}
}
// ResourceWrapper represents the invocation
type ResourceWrapper struct {
// global unique resource name
name string
// resource classification
classification ResourceType
// Inbound or Outbound
flowType TrafficType
}
func (r *ResourceWrapper) String() string {
return fmt.Sprintf("ResourceWrapper{name=%s, flowType=%s, classification=%d}", r.name, r.flowType, r.classification)
}
func (r *ResourceWrapper) Name() string {
return r.name
}
func (r *ResourceWrapper) Classification() ResourceType {
return r.classification
}
func (r *ResourceWrapper) FlowType() TrafficType {
return r.flowType
}
func NewResourceWrapper(name string, classification ResourceType, flowType TrafficType) *ResourceWrapper {
return &ResourceWrapper{name: name, classification: classification, flowType: flowType}
}