service

package
v1.0.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2020 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthConfig = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowConfig   = fmt.Errorf("proto: integer overflow")
)
View Source
var (
	ErrInvalidLengthService = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowService   = fmt.Errorf("proto: integer overflow")
)
View Source
var ConfigJSONMarshaler = new(jsonpb.Marshaler)

ConfigJSONMarshaler describes the default jsonpb.Marshaler used by all instances of Config. This struct is safe to replace or modify but should not be done so concurrently.

View Source
var ConfigJSONUnmarshaler = new(jsonpb.Unmarshaler)

ConfigJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all instances of Config. This struct is safe to replace or modify but should not be done so concurrently.

View Source
var EndpointJSONMarshaler = new(jsonpb.Marshaler)

EndpointJSONMarshaler describes the default jsonpb.Marshaler used by all instances of Endpoint. This struct is safe to replace or modify but should not be done so concurrently.

View Source
var EndpointJSONUnmarshaler = new(jsonpb.Unmarshaler)

EndpointJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all instances of Endpoint. This struct is safe to replace or modify but should not be done so concurrently.

View Source
var Endpoint_State_name = map[int32]string{
	0: "UP",
	1: "DOWN",
	2: "UNKNOWN",
}
View Source
var Endpoint_State_value = map[string]int32{
	"UP":      0,
	"DOWN":    1,
	"UNKNOWN": 2,
}
View Source
var Endpoint_Type_name = map[int32]string{
	0: "MAIN",
	1: "BACKUP",
}
View Source
var Endpoint_Type_value = map[string]int32{
	"MAIN":   0,
	"BACKUP": 1,
}
View Source
var ListenerJSONMarshaler = new(jsonpb.Marshaler)

ListenerJSONMarshaler describes the default jsonpb.Marshaler used by all instances of Listener. This struct is safe to replace or modify but should not be done so concurrently.

View Source
var ListenerJSONUnmarshaler = new(jsonpb.Unmarshaler)

ListenerJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all instances of Listener. This struct is safe to replace or modify but should not be done so concurrently.

View Source
var LoadBalancePolicy_name = map[int32]string{
	0: "ROUND_ROBIN",
	1: "LEAST_CONNECTION",
	2: "RANDOM",
	3: "CLUSTER_PROVIDED",
}
View Source
var LoadBalancePolicy_value = map[string]int32{
	"ROUND_ROBIN":      0,
	"LEAST_CONNECTION": 1,
	"RANDOM":           2,
	"CLUSTER_PROVIDED": 3,
}
View Source
var ServiceJSONMarshaler = new(jsonpb.Marshaler)

ServiceJSONMarshaler describes the default jsonpb.Marshaler used by all instances of Service. This struct is safe to replace or modify but should not be done so concurrently.

View Source
var ServiceJSONUnmarshaler = new(jsonpb.Unmarshaler)

ServiceJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all instances of Service. This struct is safe to replace or modify but should not be done so concurrently.

Functions

This section is empty.

Types

type Config

type Config struct {
	// Listener config, must be set.
	Listener *Listener `protobuf:"bytes,1,opt,name=listener,proto3" json:"listener,omitempty"`
	// Health check will be disabled when not defined.
	HealthCheck *hc.HealthCheck `protobuf:"bytes,2,opt,name=health_check,json=healthCheck,proto3" json:"health_check,omitempty"`
	// The maximum time to wait for a connection attempt to a server to succeed, default is 3s.
	ConnectTimeout *time.Duration `protobuf:"bytes,3,opt,name=connect_timeout,json=connectTimeout,proto3,stdduration" json:"connect_timeout,omitempty"`
	// The maximum inactivity time on the client side, default is 10min.
	IdleTimeout *time.Duration    `protobuf:"bytes,4,opt,name=idle_timeout,json=idleTimeout,proto3,stdduration" json:"idle_timeout,omitempty"`
	LbPolicy    LoadBalancePolicy `protobuf:"varint,5,opt,name=lb_policy,json=lbPolicy,proto3,enum=service.LoadBalancePolicy" json:"lb_policy,omitempty"`
	// Protocol of service, can not be UNKNOWN.
	Protocol protocol.Protocol `protobuf:"varint,6,opt,name=protocol,proto3,enum=protocol.Protocol" json:"protocol,omitempty"`
	// Types that are valid to be assigned to ProtocolOptions:
	//	*Config_TcpOption
	//	*Config_RedisOption
	//	*Config_MysqlOption
	ProtocolOptions      isConfig_ProtocolOptions `protobuf_oneof:"protocol_options"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

Configuration of service, contains configuration information required for the processor to run.

func (*Config) Descriptor

func (*Config) Descriptor() ([]byte, []int)

func (*Config) Equal

func (this *Config) Equal(that interface{}) bool

func (*Config) GetConnectTimeout

func (m *Config) GetConnectTimeout() *time.Duration

func (*Config) GetHealthCheck

func (m *Config) GetHealthCheck() *hc.HealthCheck

func (*Config) GetIdleTimeout

func (m *Config) GetIdleTimeout() *time.Duration

func (*Config) GetLbPolicy

func (m *Config) GetLbPolicy() LoadBalancePolicy

func (*Config) GetListener

func (m *Config) GetListener() *Listener

func (*Config) GetMysqlOption

func (m *Config) GetMysqlOption() *protocol.MySQLOption

func (*Config) GetProtocol

func (m *Config) GetProtocol() protocol.Protocol

func (*Config) GetProtocolOptions

func (m *Config) GetProtocolOptions() isConfig_ProtocolOptions

func (*Config) GetRedisOption

func (m *Config) GetRedisOption() *protocol.RedisOption

func (*Config) GetTcpOption

func (m *Config) GetTcpOption() *protocol.TCPOption

func (*Config) GoString

func (this *Config) GoString() string

func (*Config) Marshal

func (m *Config) Marshal() (dAtA []byte, err error)

func (*Config) MarshalJSON

func (m *Config) MarshalJSON() ([]byte, error)

MarshalJSON satisfies the encoding/json Marshaler interface. This method uses the more correct jsonpb package to correctly marshal the message.

func (*Config) MarshalTo

func (m *Config) MarshalTo(dAtA []byte) (int, error)

func (*Config) MarshalToSizedBuffer

func (m *Config) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Config) ProtoMessage

func (*Config) ProtoMessage()

func (*Config) Reset

func (m *Config) Reset()

func (*Config) Size

func (m *Config) Size() (n int)

func (*Config) String

func (m *Config) String() string

func (*Config) Unmarshal

func (m *Config) Unmarshal(dAtA []byte) error

func (*Config) UnmarshalJSON

func (m *Config) UnmarshalJSON(b []byte) error

UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method uses the more correct jsonpb package to correctly unmarshal the message.

func (*Config) Validate

func (m *Config) Validate() error

Validate checks the field values on Config with the rules defined in the proto definition for this message. If any rules are violated, an error is returned.

func (*Config) VerboseEqual

func (this *Config) VerboseEqual(that interface{}) error

func (*Config) XXX_DiscardUnknown

func (m *Config) XXX_DiscardUnknown()

func (*Config) XXX_Marshal

func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Config) XXX_Merge

func (m *Config) XXX_Merge(src proto.Message)

func (*Config) XXX_OneofWrappers

func (*Config) XXX_OneofWrappers() []interface{}

XXX_OneofWrappers is for the internal use of the proto package.

func (*Config) XXX_Size

func (m *Config) XXX_Size() int

func (*Config) XXX_Unmarshal

func (m *Config) XXX_Unmarshal(b []byte) error

type ConfigValidationError

type ConfigValidationError struct {
	// contains filtered or unexported fields
}

ConfigValidationError is the validation error returned by Config.Validate if the designated constraints aren't met.

func (ConfigValidationError) Cause

func (e ConfigValidationError) Cause() error

Cause function returns cause value.

func (ConfigValidationError) Error

func (e ConfigValidationError) Error() string

Error satisfies the builtin error interface

func (ConfigValidationError) ErrorName

func (e ConfigValidationError) ErrorName() string

ErrorName returns error name.

func (ConfigValidationError) Field

func (e ConfigValidationError) Field() string

Field function returns field value.

func (ConfigValidationError) Key

func (e ConfigValidationError) Key() bool

Key function returns key value.

func (ConfigValidationError) Reason

func (e ConfigValidationError) Reason() string

Reason function returns reason value.

type Config_MysqlOption

type Config_MysqlOption struct {
	MysqlOption *protocol.MySQLOption `protobuf:"bytes,9,opt,name=mysql_option,json=mysqlOption,proto3,oneof"`
}

func (*Config_MysqlOption) Equal

func (this *Config_MysqlOption) Equal(that interface{}) bool

func (*Config_MysqlOption) GoString

func (this *Config_MysqlOption) GoString() string

func (*Config_MysqlOption) MarshalTo

func (m *Config_MysqlOption) MarshalTo(dAtA []byte) (int, error)

func (*Config_MysqlOption) MarshalToSizedBuffer

func (m *Config_MysqlOption) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Config_MysqlOption) Size

func (m *Config_MysqlOption) Size() (n int)

func (*Config_MysqlOption) VerboseEqual

func (this *Config_MysqlOption) VerboseEqual(that interface{}) error

type Config_RedisOption

type Config_RedisOption struct {
	RedisOption *protocol.RedisOption `protobuf:"bytes,8,opt,name=redis_option,json=redisOption,proto3,oneof"`
}

func (*Config_RedisOption) Equal

func (this *Config_RedisOption) Equal(that interface{}) bool

func (*Config_RedisOption) GoString

func (this *Config_RedisOption) GoString() string

func (*Config_RedisOption) MarshalTo

func (m *Config_RedisOption) MarshalTo(dAtA []byte) (int, error)

func (*Config_RedisOption) MarshalToSizedBuffer

func (m *Config_RedisOption) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Config_RedisOption) Size

func (m *Config_RedisOption) Size() (n int)

func (*Config_RedisOption) VerboseEqual

func (this *Config_RedisOption) VerboseEqual(that interface{}) error

type Config_TcpOption

type Config_TcpOption struct {
	TcpOption *protocol.TCPOption `protobuf:"bytes,7,opt,name=tcp_option,json=tcpOption,proto3,oneof"`
}

func (*Config_TcpOption) Equal

func (this *Config_TcpOption) Equal(that interface{}) bool

func (*Config_TcpOption) GoString

func (this *Config_TcpOption) GoString() string

func (*Config_TcpOption) MarshalTo

func (m *Config_TcpOption) MarshalTo(dAtA []byte) (int, error)

func (*Config_TcpOption) MarshalToSizedBuffer

func (m *Config_TcpOption) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Config_TcpOption) Size

func (m *Config_TcpOption) Size() (n int)

func (*Config_TcpOption) VerboseEqual

func (this *Config_TcpOption) VerboseEqual(that interface{}) error

type Endpoint

type Endpoint struct {
	// Address of endpoint, must be set.
	Address *common.Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	// Healthy state of endpoint.
	// When state is DOWN, this host will not be selected for load balancing.
	State Endpoint_State `protobuf:"varint,2,opt,name=state,proto3,enum=service.Endpoint_State" json:"state,omitempty"`
	// Type of endpoints.
	// When all hosts whose type is main are in the DOWN state,
	// the host whose type is backup will be selected.
	Type                 Endpoint_Type `protobuf:"varint,3,opt,name=type,proto3,enum=service.Endpoint_Type" json:"type,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

Endpoint represents an endpoint of service.

func (*Endpoint) Descriptor

func (*Endpoint) Descriptor() ([]byte, []int)

func (*Endpoint) Equal

func (this *Endpoint) Equal(that interface{}) bool

func (*Endpoint) GetAddress

func (m *Endpoint) GetAddress() *common.Address

func (*Endpoint) GetState

func (m *Endpoint) GetState() Endpoint_State

func (*Endpoint) GetType

func (m *Endpoint) GetType() Endpoint_Type

func (*Endpoint) GoString

func (this *Endpoint) GoString() string

func (*Endpoint) Marshal

func (m *Endpoint) Marshal() (dAtA []byte, err error)

func (*Endpoint) MarshalJSON

func (m *Endpoint) MarshalJSON() ([]byte, error)

MarshalJSON satisfies the encoding/json Marshaler interface. This method uses the more correct jsonpb package to correctly marshal the message.

func (*Endpoint) MarshalTo

func (m *Endpoint) MarshalTo(dAtA []byte) (int, error)

func (*Endpoint) MarshalToSizedBuffer

func (m *Endpoint) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Endpoint) ProtoMessage

func (*Endpoint) ProtoMessage()

func (*Endpoint) Reset

func (m *Endpoint) Reset()

func (*Endpoint) Size

func (m *Endpoint) Size() (n int)

func (*Endpoint) String

func (m *Endpoint) String() string

func (*Endpoint) Unmarshal

func (m *Endpoint) Unmarshal(dAtA []byte) error

func (*Endpoint) UnmarshalJSON

func (m *Endpoint) UnmarshalJSON(b []byte) error

UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method uses the more correct jsonpb package to correctly unmarshal the message.

func (*Endpoint) Validate

func (m *Endpoint) Validate() error

Validate checks the field values on Endpoint with the rules defined in the proto definition for this message. If any rules are violated, an error is returned.

func (*Endpoint) VerboseEqual

func (this *Endpoint) VerboseEqual(that interface{}) error

func (*Endpoint) XXX_DiscardUnknown

func (m *Endpoint) XXX_DiscardUnknown()

func (*Endpoint) XXX_Marshal

func (m *Endpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Endpoint) XXX_Merge

func (m *Endpoint) XXX_Merge(src proto.Message)

func (*Endpoint) XXX_Size

func (m *Endpoint) XXX_Size() int

func (*Endpoint) XXX_Unmarshal

func (m *Endpoint) XXX_Unmarshal(b []byte) error

type EndpointValidationError

type EndpointValidationError struct {
	// contains filtered or unexported fields
}

EndpointValidationError is the validation error returned by Endpoint.Validate if the designated constraints aren't met.

func (EndpointValidationError) Cause

func (e EndpointValidationError) Cause() error

Cause function returns cause value.

func (EndpointValidationError) Error

func (e EndpointValidationError) Error() string

Error satisfies the builtin error interface

func (EndpointValidationError) ErrorName

func (e EndpointValidationError) ErrorName() string

ErrorName returns error name.

func (EndpointValidationError) Field

func (e EndpointValidationError) Field() string

Field function returns field value.

func (EndpointValidationError) Key

func (e EndpointValidationError) Key() bool

Key function returns key value.

func (EndpointValidationError) Reason

func (e EndpointValidationError) Reason() string

Reason function returns reason value.

type Endpoint_State

type Endpoint_State int32
const (
	// healthy
	Endpoint_UP Endpoint_State = 0
	// unhealthy
	Endpoint_DOWN Endpoint_State = 1
	// unknown
	Endpoint_UNKNOWN Endpoint_State = 2
)

func (Endpoint_State) EnumDescriptor

func (Endpoint_State) EnumDescriptor() ([]byte, []int)

func (Endpoint_State) String

func (x Endpoint_State) String() string

type Endpoint_Type

type Endpoint_Type int32
const (
	// main
	Endpoint_MAIN Endpoint_Type = 0
	// backup
	Endpoint_BACKUP Endpoint_Type = 1
)

func (Endpoint_Type) EnumDescriptor

func (Endpoint_Type) EnumDescriptor() ([]byte, []int)

func (Endpoint_Type) String

func (x Endpoint_Type) String() string

type Listener

type Listener struct {
	// The address that the listener should listen on, must be set.
	Address *common.Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	// The limit of connections, new connections that exceed this value are immediately be closed.
	// Default value is 0 that the limit will be disable.
	ConnectionLimit      uint32   `protobuf:"varint,2,opt,name=connection_limit,json=connectionLimit,proto3" json:"connection_limit,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

Listener configuration.

func (*Listener) Descriptor

func (*Listener) Descriptor() ([]byte, []int)

func (*Listener) Equal

func (this *Listener) Equal(that interface{}) bool

func (*Listener) GetAddress

func (m *Listener) GetAddress() *common.Address

func (*Listener) GetConnectionLimit

func (m *Listener) GetConnectionLimit() uint32

func (*Listener) GoString

func (this *Listener) GoString() string

func (*Listener) Marshal

func (m *Listener) Marshal() (dAtA []byte, err error)

func (*Listener) MarshalJSON

func (m *Listener) MarshalJSON() ([]byte, error)

MarshalJSON satisfies the encoding/json Marshaler interface. This method uses the more correct jsonpb package to correctly marshal the message.

func (*Listener) MarshalTo

func (m *Listener) MarshalTo(dAtA []byte) (int, error)

func (*Listener) MarshalToSizedBuffer

func (m *Listener) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Listener) ProtoMessage

func (*Listener) ProtoMessage()

func (*Listener) Reset

func (m *Listener) Reset()

func (*Listener) Size

func (m *Listener) Size() (n int)

func (*Listener) String

func (m *Listener) String() string

func (*Listener) Unmarshal

func (m *Listener) Unmarshal(dAtA []byte) error

func (*Listener) UnmarshalJSON

func (m *Listener) UnmarshalJSON(b []byte) error

UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method uses the more correct jsonpb package to correctly unmarshal the message.

func (*Listener) Validate

func (m *Listener) Validate() error

Validate checks the field values on Listener with the rules defined in the proto definition for this message. If any rules are violated, an error is returned.

func (*Listener) VerboseEqual

func (this *Listener) VerboseEqual(that interface{}) error

func (*Listener) XXX_DiscardUnknown

func (m *Listener) XXX_DiscardUnknown()

func (*Listener) XXX_Marshal

func (m *Listener) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Listener) XXX_Merge

func (m *Listener) XXX_Merge(src proto.Message)

func (*Listener) XXX_Size

func (m *Listener) XXX_Size() int

func (*Listener) XXX_Unmarshal

func (m *Listener) XXX_Unmarshal(b []byte) error

type ListenerValidationError

type ListenerValidationError struct {
	// contains filtered or unexported fields
}

ListenerValidationError is the validation error returned by Listener.Validate if the designated constraints aren't met.

func (ListenerValidationError) Cause

func (e ListenerValidationError) Cause() error

Cause function returns cause value.

func (ListenerValidationError) Error

func (e ListenerValidationError) Error() string

Error satisfies the builtin error interface

func (ListenerValidationError) ErrorName

func (e ListenerValidationError) ErrorName() string

ErrorName returns error name.

func (ListenerValidationError) Field

func (e ListenerValidationError) Field() string

Field function returns field value.

func (ListenerValidationError) Key

func (e ListenerValidationError) Key() bool

Key function returns key value.

func (ListenerValidationError) Reason

func (e ListenerValidationError) Reason() string

Reason function returns reason value.

type LoadBalancePolicy

type LoadBalancePolicy int32

Load balance policy.

const (
	// RoundRobin
	LoadBalancePolicy_ROUND_ROBIN LoadBalancePolicy = 0
	// LeastConnection
	LoadBalancePolicy_LEAST_CONNECTION LoadBalancePolicy = 1
	// Random
	LoadBalancePolicy_RANDOM LoadBalancePolicy = 2
	// Provided by redis cluster
	LoadBalancePolicy_CLUSTER_PROVIDED LoadBalancePolicy = 3
)

func (LoadBalancePolicy) EnumDescriptor

func (LoadBalancePolicy) EnumDescriptor() ([]byte, []int)

func (LoadBalancePolicy) String

func (x LoadBalancePolicy) String() string

type Service

type Service struct {
	// Name of service.
	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

Service represents a service.

func (*Service) Descriptor

func (*Service) Descriptor() ([]byte, []int)

func (*Service) Equal

func (this *Service) Equal(that interface{}) bool

func (*Service) GetName

func (m *Service) GetName() string

func (*Service) GoString

func (this *Service) GoString() string

func (*Service) Marshal

func (m *Service) Marshal() (dAtA []byte, err error)

func (*Service) MarshalJSON

func (m *Service) MarshalJSON() ([]byte, error)

MarshalJSON satisfies the encoding/json Marshaler interface. This method uses the more correct jsonpb package to correctly marshal the message.

func (*Service) MarshalTo

func (m *Service) MarshalTo(dAtA []byte) (int, error)

func (*Service) MarshalToSizedBuffer

func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Service) ProtoMessage

func (*Service) ProtoMessage()

func (*Service) Reset

func (m *Service) Reset()

func (*Service) Size

func (m *Service) Size() (n int)

func (*Service) String

func (m *Service) String() string

func (*Service) Unmarshal

func (m *Service) Unmarshal(dAtA []byte) error

func (*Service) UnmarshalJSON

func (m *Service) UnmarshalJSON(b []byte) error

UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method uses the more correct jsonpb package to correctly unmarshal the message.

func (*Service) Validate

func (m *Service) Validate() error

Validate checks the field values on Service with the rules defined in the proto definition for this message. If any rules are violated, an error is returned.

func (*Service) VerboseEqual

func (this *Service) VerboseEqual(that interface{}) error

func (*Service) XXX_DiscardUnknown

func (m *Service) XXX_DiscardUnknown()

func (*Service) XXX_Marshal

func (m *Service) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Service) XXX_Merge

func (m *Service) XXX_Merge(src proto.Message)

func (*Service) XXX_Size

func (m *Service) XXX_Size() int

func (*Service) XXX_Unmarshal

func (m *Service) XXX_Unmarshal(b []byte) error

type ServiceValidationError

type ServiceValidationError struct {
	// contains filtered or unexported fields
}

ServiceValidationError is the validation error returned by Service.Validate if the designated constraints aren't met.

func (ServiceValidationError) Cause

func (e ServiceValidationError) Cause() error

Cause function returns cause value.

func (ServiceValidationError) Error

func (e ServiceValidationError) Error() string

Error satisfies the builtin error interface

func (ServiceValidationError) ErrorName

func (e ServiceValidationError) ErrorName() string

ErrorName returns error name.

func (ServiceValidationError) Field

func (e ServiceValidationError) Field() string

Field function returns field value.

func (ServiceValidationError) Key

func (e ServiceValidationError) Key() bool

Key function returns key value.

func (ServiceValidationError) Reason

func (e ServiceValidationError) Reason() string

Reason function returns reason value.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL