Documentation
¶
Index ¶
- Constants
- Variables
- type AsyncCallback
- type CallOption
- type CallOptions
- type CallResponse
- type CallType
- type Client
- func (c *Client) AsyncCall(typ CodecType, addr, service, method string, args interface{}, ...) error
- func (c *Client) Call(typ CodecType, addr, service, method string, args, reply interface{}, ...) error
- func (c *Client) CallOneway(typ CodecType, addr, service, method string, args interface{}, ...) error
- func (c *Client) Close()
- type ClientConfig
- type Codec
- type CodecType
- type ErrorCode
- type GettyPackage
- type GettyPackageHeader
- type GettyRPCHeaderLenType
- type GettyRPCRequest
- type GettyRPCRequestHeader
- func (*GettyRPCRequestHeader) Descriptor() ([]byte, []int)
- func (this *GettyRPCRequestHeader) Equal(that interface{}) bool
- func (this *GettyRPCRequestHeader) GoString() string
- func (m *GettyRPCRequestHeader) Marshal() (dAtA []byte, err error)
- func (m *GettyRPCRequestHeader) MarshalTo(dAtA []byte) (int, error)
- func (*GettyRPCRequestHeader) ProtoMessage()
- func (m *GettyRPCRequestHeader) Reset()
- func (m *GettyRPCRequestHeader) Size() (n int)
- func (this *GettyRPCRequestHeader) String() string
- func (m *GettyRPCRequestHeader) Unmarshal(dAtA []byte) error
- func (this *GettyRPCRequestHeader) VerboseEqual(that interface{}) error
- func (m *GettyRPCRequestHeader) XXX_DiscardUnknown()
- func (m *GettyRPCRequestHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *GettyRPCRequestHeader) XXX_Merge(src proto.Message)
- func (m *GettyRPCRequestHeader) XXX_Size() int
- func (m *GettyRPCRequestHeader) XXX_Unmarshal(b []byte) error
- type GettyRPCRequestPackage
- type GettyRPCResponse
- type GettyRPCResponseHeader
- func (*GettyRPCResponseHeader) Descriptor() ([]byte, []int)
- func (this *GettyRPCResponseHeader) Equal(that interface{}) bool
- func (this *GettyRPCResponseHeader) GoString() string
- func (m *GettyRPCResponseHeader) Marshal() (dAtA []byte, err error)
- func (m *GettyRPCResponseHeader) MarshalTo(dAtA []byte) (int, error)
- func (*GettyRPCResponseHeader) ProtoMessage()
- func (m *GettyRPCResponseHeader) Reset()
- func (m *GettyRPCResponseHeader) Size() (n int)
- func (this *GettyRPCResponseHeader) String() string
- func (m *GettyRPCResponseHeader) Unmarshal(dAtA []byte) error
- func (this *GettyRPCResponseHeader) VerboseEqual(that interface{}) error
- func (m *GettyRPCResponseHeader) XXX_DiscardUnknown()
- func (m *GettyRPCResponseHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *GettyRPCResponseHeader) XXX_Merge(src proto.Message)
- func (m *GettyRPCResponseHeader) XXX_Size() int
- func (m *GettyRPCResponseHeader) XXX_Unmarshal(b []byte) error
- type GettyRPCResponsePackage
- type GettyRPCService
- type GettySessionParam
- type JSONCodec
- type LogIDType
- type MagicType
- type PBCodec
- type PendingResponse
- type PkgLenType
- type RPCClientMap
- func (m *RPCClientMap) Delete(key string)
- func (m *RPCClientMap) Load(key string) (value *rpcClientArray, ok bool)
- func (m *RPCClientMap) LoadOrStore(key string, value *rpcClientArray) (actual *rpcClientArray, loaded bool)
- func (m *RPCClientMap) Range(f func(key string, value *rpcClientArray) bool)
- func (m *RPCClientMap) Store(key string, value *rpcClientArray)
- type RPCPackage
- type RpcClientHandler
- func (h *RpcClientHandler) OnClose(session getty.Session)
- func (h *RpcClientHandler) OnCron(session getty.Session)
- func (h *RpcClientHandler) OnError(session getty.Session, err error)
- func (h *RpcClientHandler) OnMessage(session getty.Session, pkg interface{})
- func (h *RpcClientHandler) OnOpen(session getty.Session) error
- type RpcClientPackageHandler
- type RpcServerHandler
- func (h *RpcServerHandler) OnClose(session getty.Session)
- func (h *RpcServerHandler) OnCron(session getty.Session)
- func (h *RpcServerHandler) OnError(session getty.Session, err error)
- func (h *RpcServerHandler) OnMessage(session getty.Session, pkg interface{})
- func (h *RpcServerHandler) OnOpen(session getty.Session) error
- type RpcServerPackageHandler
- type SequenceType
- type Server
- type ServerConfig
- type ServiceIDType
Constants ¶
const ( GettyOK = ErrorCode(0x00) GettyFail = ErrorCode(0x01) )
const ( CodecUnknown = CodecType(0x00) CodecJson = CodecType(0x01) CodecProtobuf = CodecType(0x02) )
Variables ¶
var ( ErrNotEnoughStream = jerrors.New("packet stream is not enough") ErrTooLargePackage = jerrors.New("package length is exceed the getty package's legal maximum length.") ErrInvalidPackage = jerrors.New("invalid rpc package") ErrIllegalMagic = jerrors.New("package magic is not right.") )
var ( ErrInvalidLengthCodec = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowCodec = fmt.Errorf("proto: integer overflow") )
var CallType_name = map[int32]string{
0: "CT_UNKNOWN",
1: "CT_OneWay",
2: "CT_TwoWay",
3: "CT_TwoWayNoReply",
}
var CallType_value = map[string]int32{
"CT_UNKNOWN": 0,
"CT_OneWay": 1,
"CT_TwoWay": 2,
"CT_TwoWayNoReply": 3,
}
var ( Codecs = map[CodecType]Codec{ CodecJson: &JSONCodec{}, CodecProtobuf: &PBCodec{}, } )
Functions ¶
This section is empty.
Types ¶
type AsyncCallback ¶ added in v1.0.3
type AsyncCallback func(response CallResponse)
type CallOption ¶ added in v1.0.3
type CallOption func(*CallOptions)
func WithCallMeta ¶ added in v1.0.3
func WithCallMeta(k, v interface{}) CallOption
func WithCallRequestTimeout ¶ added in v1.0.3
func WithCallRequestTimeout(d time.Duration) CallOption
func WithCallResponseTimeout ¶ added in v1.0.3
func WithCallResponseTimeout(d time.Duration) CallOption
type CallOptions ¶ added in v1.0.3
type CallResponse ¶ added in v1.0.3
type CallType ¶ added in v0.9.3
type CallType int32
func (CallType) EnumDescriptor ¶ added in v0.9.3
func (CallType) MarshalJSON ¶ added in v0.9.3
func (*CallType) UnmarshalJSON ¶ added in v0.9.3
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func NewClient ¶
func NewClient(conf *ClientConfig) (*Client, error)
func (*Client) AsyncCall ¶ added in v1.0.3
func (c *Client) AsyncCall(typ CodecType, addr, service, method string, args interface{}, callback AsyncCallback, reply interface{}, opts ...CallOption) error
func (*Client) Call ¶
func (c *Client) Call(typ CodecType, addr, service, method string, args, reply interface{}, opts ...CallOption) error
if @reply is nil, the transport layer will get the response without notify the invoker.
func (*Client) CallOneway ¶ added in v1.0.3
func (c *Client) CallOneway(typ CodecType, addr, service, method string, args interface{}, opts ...CallOption) error
call one way
type ClientConfig ¶
type ClientConfig struct { // local address AppName string `default:"rpc-client" yaml:"app_name" json:"app_name,omitempty"` Host string `default:"127.0.0.1" yaml:"host" json:"host,omitempty"` ProfilePort int `default:"10086" yaml:"profile_port" json:"profile_port,omitempty"` // session pool ConnectionNum int `default:"16" yaml:"connection_number" json:"connection_number,omitempty"` // heartbeat HeartbeatPeriod string `default:"15s" yaml:"heartbeat_period" json:"heartbeat_period,omitempty"` // session SessionTimeout string `default:"60s" yaml:"session_timeout" json:"session_timeout,omitempty"` // app FailFastTimeout string `default:"5s" yaml:"fail_fast_timeout" json:"fail_fast_timeout,omitempty"` // Connection Pool PoolSize int `default:"2" yaml:"pool_size" json:"pool_size,omitempty"` PoolTTL int `default:"180" yaml:"pool_ttl" json:"pool_ttl,omitempty"` // session tcp parameters GettySessionParam GettySessionParam `required:"true" yaml:"getty_session_param" json:"getty_session_param,omitempty"` // contains filtered or unexported fields }
Config holds supported types by the multiconfig package
func (*ClientConfig) CheckValidity ¶ added in v0.9.3
func (c *ClientConfig) CheckValidity() error
type CodecType ¶ added in v0.9.3
type CodecType int16
func GetCodecType ¶ added in v0.9.3
func (CodecType) CheckValidity ¶ added in v0.9.3
type GettyPackage ¶
type GettyPackage struct { H GettyPackageHeader B RPCPackage }
func (GettyPackage) String ¶
func (p GettyPackage) String() string
type GettyPackageHeader ¶
type GettyPackageHeader struct { Magic MagicType // magic number Command gettyCommand // operation command code ServiceID ServiceIDType // service id Sequence SequenceType // request/response sequence LogID LogIDType // log id Code ErrorCode // error code CodecType CodecType // codec type PkgLen PkgLenType // package body length }
type GettyRPCHeaderLenType ¶
type GettyRPCHeaderLenType uint16
type GettyRPCRequest ¶
type GettyRPCRequest struct {
// contains filtered or unexported fields
}
func (*GettyRPCRequest) GetBody ¶
func (req *GettyRPCRequest) GetBody() []byte
func (*GettyRPCRequest) GetHeader ¶
func (req *GettyRPCRequest) GetHeader() interface{}
type GettyRPCRequestHeader ¶
type GettyRPCRequestHeader struct { Service string `protobuf:"bytes,1,opt,name=Service" json:"Service"` Method string `protobuf:"bytes,2,opt,name=Method" json:"Method"` CallType CallType `protobuf:"varint,3,opt,name=CallType,enum=rpc.CallType" json:"CallType"` }
func (*GettyRPCRequestHeader) Descriptor ¶ added in v0.9.3
func (*GettyRPCRequestHeader) Descriptor() ([]byte, []int)
func (*GettyRPCRequestHeader) Equal ¶ added in v0.9.3
func (this *GettyRPCRequestHeader) Equal(that interface{}) bool
func (*GettyRPCRequestHeader) GoString ¶ added in v0.9.3
func (this *GettyRPCRequestHeader) GoString() string
func (*GettyRPCRequestHeader) Marshal ¶ added in v0.9.3
func (m *GettyRPCRequestHeader) Marshal() (dAtA []byte, err error)
func (*GettyRPCRequestHeader) MarshalTo ¶ added in v0.9.3
func (m *GettyRPCRequestHeader) MarshalTo(dAtA []byte) (int, error)
func (*GettyRPCRequestHeader) ProtoMessage ¶ added in v0.9.3
func (*GettyRPCRequestHeader) ProtoMessage()
func (*GettyRPCRequestHeader) Reset ¶ added in v0.9.3
func (m *GettyRPCRequestHeader) Reset()
func (*GettyRPCRequestHeader) Size ¶ added in v0.9.3
func (m *GettyRPCRequestHeader) Size() (n int)
func (*GettyRPCRequestHeader) String ¶ added in v0.9.3
func (this *GettyRPCRequestHeader) String() string
func (*GettyRPCRequestHeader) Unmarshal ¶ added in v0.9.3
func (m *GettyRPCRequestHeader) Unmarshal(dAtA []byte) error
func (*GettyRPCRequestHeader) VerboseEqual ¶ added in v0.9.3
func (this *GettyRPCRequestHeader) VerboseEqual(that interface{}) error
func (*GettyRPCRequestHeader) XXX_DiscardUnknown ¶ added in v1.2.2
func (m *GettyRPCRequestHeader) XXX_DiscardUnknown()
func (*GettyRPCRequestHeader) XXX_Marshal ¶ added in v1.2.2
func (m *GettyRPCRequestHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*GettyRPCRequestHeader) XXX_Merge ¶ added in v1.2.2
func (m *GettyRPCRequestHeader) XXX_Merge(src proto.Message)
func (*GettyRPCRequestHeader) XXX_Size ¶ added in v1.2.2
func (m *GettyRPCRequestHeader) XXX_Size() int
func (*GettyRPCRequestHeader) XXX_Unmarshal ¶ added in v1.2.2
func (m *GettyRPCRequestHeader) XXX_Unmarshal(b []byte) error
type GettyRPCRequestPackage ¶
type GettyRPCRequestPackage struct { H GettyPackageHeader // contains filtered or unexported fields }
type GettyRPCResponse ¶
type GettyRPCResponse struct {
// contains filtered or unexported fields
}
func (*GettyRPCResponse) GetBody ¶
func (resp *GettyRPCResponse) GetBody() []byte
func (*GettyRPCResponse) GetHeader ¶
func (resp *GettyRPCResponse) GetHeader() interface{}
type GettyRPCResponseHeader ¶
type GettyRPCResponseHeader struct {
Error string `protobuf:"bytes,1,opt,name=Error" json:"Error"`
}
func (*GettyRPCResponseHeader) Descriptor ¶ added in v0.9.3
func (*GettyRPCResponseHeader) Descriptor() ([]byte, []int)
func (*GettyRPCResponseHeader) Equal ¶ added in v0.9.3
func (this *GettyRPCResponseHeader) Equal(that interface{}) bool
func (*GettyRPCResponseHeader) GoString ¶ added in v0.9.3
func (this *GettyRPCResponseHeader) GoString() string
func (*GettyRPCResponseHeader) Marshal ¶ added in v0.9.3
func (m *GettyRPCResponseHeader) Marshal() (dAtA []byte, err error)
func (*GettyRPCResponseHeader) MarshalTo ¶ added in v0.9.3
func (m *GettyRPCResponseHeader) MarshalTo(dAtA []byte) (int, error)
func (*GettyRPCResponseHeader) ProtoMessage ¶ added in v0.9.3
func (*GettyRPCResponseHeader) ProtoMessage()
func (*GettyRPCResponseHeader) Reset ¶ added in v0.9.3
func (m *GettyRPCResponseHeader) Reset()
func (*GettyRPCResponseHeader) Size ¶ added in v0.9.3
func (m *GettyRPCResponseHeader) Size() (n int)
func (*GettyRPCResponseHeader) String ¶ added in v0.9.3
func (this *GettyRPCResponseHeader) String() string
func (*GettyRPCResponseHeader) Unmarshal ¶ added in v0.9.3
func (m *GettyRPCResponseHeader) Unmarshal(dAtA []byte) error
func (*GettyRPCResponseHeader) VerboseEqual ¶ added in v0.9.3
func (this *GettyRPCResponseHeader) VerboseEqual(that interface{}) error
func (*GettyRPCResponseHeader) XXX_DiscardUnknown ¶ added in v1.2.2
func (m *GettyRPCResponseHeader) XXX_DiscardUnknown()
func (*GettyRPCResponseHeader) XXX_Marshal ¶ added in v1.2.2
func (m *GettyRPCResponseHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*GettyRPCResponseHeader) XXX_Merge ¶ added in v1.2.2
func (m *GettyRPCResponseHeader) XXX_Merge(src proto.Message)
func (*GettyRPCResponseHeader) XXX_Size ¶ added in v1.2.2
func (m *GettyRPCResponseHeader) XXX_Size() int
func (*GettyRPCResponseHeader) XXX_Unmarshal ¶ added in v1.2.2
func (m *GettyRPCResponseHeader) XXX_Unmarshal(b []byte) error
type GettyRPCResponsePackage ¶
type GettyRPCResponsePackage struct { H GettyPackageHeader // contains filtered or unexported fields }
type GettyRPCService ¶ added in v0.9.3
type GettySessionParam ¶
type GettySessionParam struct { CompressEncoding bool `default:"false" yaml:"compress_encoding" json:"compress_encoding,omitempty"` TcpNoDelay bool `default:"true" yaml:"tcp_no_delay" json:"tcp_no_delay,omitempty"` TcpKeepAlive bool `default:"true" yaml:"tcp_keep_alive" json:"tcp_keep_alive,omitempty"` KeepAlivePeriod string `default:"180s" yaml:"keep_alive_period" json:"keep_alive_period,omitempty"` TcpRBufSize int `default:"262144" yaml:"tcp_r_buf_size" json:"tcp_r_buf_size,omitempty"` TcpWBufSize int `default:"65536" yaml:"tcp_w_buf_size" json:"tcp_w_buf_size,omitempty"` PkgWQSize int `default:"1024" yaml:"pkg_wq_size" json:"pkg_wq_size,omitempty"` TcpReadTimeout string `default:"1s" yaml:"tcp_read_timeout" json:"tcp_read_timeout,omitempty"` TcpWriteTimeout string `default:"5s" yaml:"tcp_write_timeout" json:"tcp_write_timeout,omitempty"` WaitTimeout string `default:"7s" yaml:"wait_timeout" json:"wait_timeout,omitempty"` MaxMsgLen int `default:"1024" yaml:"max_msg_len" json:"max_msg_len,omitempty"` SessionName string `default:"rpc" yaml:"session_name" json:"session_name,omitempty"` // contains filtered or unexported fields }
func (*GettySessionParam) CheckValidity ¶ added in v0.9.3
func (c *GettySessionParam) CheckValidity() error
type PBCodec ¶
type PBCodec struct{}
type PendingResponse ¶
type PendingResponse struct {
// contains filtered or unexported fields
}
func NewPendingResponse ¶
func NewPendingResponse() *PendingResponse
func (PendingResponse) GetCallResponse ¶ added in v1.0.3
func (r PendingResponse) GetCallResponse() CallResponse
type PkgLenType ¶ added in v0.9.3
type PkgLenType int32
type RPCClientMap ¶ added in v1.1.0
type RPCClientMap struct {
// contains filtered or unexported fields
}
Map is like a Go map[interface{}]interface{} but is safe for concurrent use by multiple goroutines without additional locking or coordination. Loads, stores, and deletes run in amortized constant time.
The Map type is specialized. Most code should use a plain Go map instead, with separate locking or coordination, for better type safety and to make it easier to maintain other invariants along with the map content.
The Map type is optimized for two common use cases: (1) when the entry for a given key is only ever written once but read many times, as in caches that only grow, or (2) when multiple goroutines read, write, and overwrite entries for disjoint sets of keys. In these two cases, use of a Map may significantly reduce lock contention compared to a Go map paired with a separate Mutex or RWMutex.
The zero Map is empty and ready for use. A Map must not be copied after first use.
func (*RPCClientMap) Delete ¶ added in v1.1.0
func (m *RPCClientMap) Delete(key string)
Delete deletes the value for a key.
func (*RPCClientMap) Load ¶ added in v1.1.0
func (m *RPCClientMap) Load(key string) (value *rpcClientArray, ok bool)
Load returns the value stored in the map for a key, or nil if no value is present. The ok result indicates whether value was found in the map.
func (*RPCClientMap) LoadOrStore ¶ added in v1.1.0
func (m *RPCClientMap) LoadOrStore(key string, value *rpcClientArray) (actual *rpcClientArray, loaded bool)
LoadOrStore returns the existing value for the key if present. Otherwise, it stores and returns the given value. The loaded result is true if the value was loaded, false if stored.
func (*RPCClientMap) Range ¶ added in v1.1.0
func (m *RPCClientMap) Range(f func(key string, value *rpcClientArray) bool)
Range calls f sequentially for each key and value present in the map. If f returns false, range stops the iteration.
Range does not necessarily correspond to any consistent snapshot of the Map's contents: no key will be visited more than once, but if the value for any key is stored or deleted concurrently, Range may reflect any mapping for that key from any point during the Range call.
Range may be O(N) with the number of elements in the map even if f returns false after a constant number of calls.
func (*RPCClientMap) Store ¶ added in v1.1.0
func (m *RPCClientMap) Store(key string, value *rpcClientArray)
Store sets the value for a key.
type RPCPackage ¶
type RPCPackage interface { Marshal(CodecType, *bytes.Buffer) (int, error) // @buf length should be equal to GettyPkg.GettyPackageHeader.Len Unmarshal(sz CodecType, buf *bytes.Buffer) error GetBody() []byte GetHeader() interface{} }
func NewGettyRPCRequest ¶
func NewGettyRPCRequest() RPCPackage
func NewGettyRPCResponse ¶
func NewGettyRPCResponse() RPCPackage
type RpcClientHandler ¶
type RpcClientHandler struct {
// contains filtered or unexported fields
}
func NewRpcClientHandler ¶
func NewRpcClientHandler(client *gettyRPCClient) *RpcClientHandler
func (*RpcClientHandler) OnClose ¶
func (h *RpcClientHandler) OnClose(session getty.Session)
func (*RpcClientHandler) OnCron ¶
func (h *RpcClientHandler) OnCron(session getty.Session)
func (*RpcClientHandler) OnError ¶
func (h *RpcClientHandler) OnError(session getty.Session, err error)
func (*RpcClientHandler) OnMessage ¶
func (h *RpcClientHandler) OnMessage(session getty.Session, pkg interface{})
func (*RpcClientHandler) OnOpen ¶
func (h *RpcClientHandler) OnOpen(session getty.Session) error
type RpcClientPackageHandler ¶
type RpcClientPackageHandler struct{}
func (*RpcClientPackageHandler) Read ¶
func (p *RpcClientPackageHandler) Read(ss getty.Session, data []byte) (interface{}, int, error)
func (*RpcClientPackageHandler) Write ¶
func (p *RpcClientPackageHandler) Write(ss getty.Session, pkg interface{}) ([]byte, error)
type RpcServerHandler ¶
type RpcServerHandler struct {
// contains filtered or unexported fields
}
func NewRpcServerHandler ¶
func NewRpcServerHandler(maxSessionNum int, sessionTimeout time.Duration) *RpcServerHandler
func (*RpcServerHandler) OnClose ¶
func (h *RpcServerHandler) OnClose(session getty.Session)
func (*RpcServerHandler) OnCron ¶
func (h *RpcServerHandler) OnCron(session getty.Session)
func (*RpcServerHandler) OnError ¶
func (h *RpcServerHandler) OnError(session getty.Session, err error)
func (*RpcServerHandler) OnMessage ¶
func (h *RpcServerHandler) OnMessage(session getty.Session, pkg interface{})
func (*RpcServerHandler) OnOpen ¶
func (h *RpcServerHandler) OnOpen(session getty.Session) error
type RpcServerPackageHandler ¶
type RpcServerPackageHandler struct {
// contains filtered or unexported fields
}
func NewRpcServerPackageHandler ¶
func NewRpcServerPackageHandler(server *Server) *RpcServerPackageHandler
func (*RpcServerPackageHandler) Read ¶
func (p *RpcServerPackageHandler) Read(ss getty.Session, data []byte) (interface{}, int, error)
func (*RpcServerPackageHandler) Write ¶
func (p *RpcServerPackageHandler) Write(ss getty.Session, pkg interface{}) ([]byte, error)
type SequenceType ¶ added in v0.9.3
type SequenceType uint64
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
func NewServer ¶
func NewServer(conf *ServerConfig) (*Server, error)
func (*Server) Register ¶
func (s *Server) Register(rcvr GettyRPCService) error
type ServerConfig ¶
type ServerConfig struct { // local address AppName string `default:"rpc-server" yaml:"app_name" json:"app_name,omitempty"` Host string `default:"127.0.0.1" yaml:"host" json:"host,omitempty"` Ports []string `yaml:"ports" json:"ports,omitempty"` // `default:["10000"]` ProfilePort int `default:"10086" yaml:"profile_port" json:"profile_port,omitempty"` // session SessionTimeout string `default:"60s" yaml:"session_timeout" json:"session_timeout,omitempty"` SessionNumber int `default:"1000" yaml:"session_number" json:"session_number,omitempty"` // app FailFastTimeout string `default:"5s" yaml:"fail_fast_timeout" json:"fail_fast_timeout,omitempty"` // session tcp parameters GettySessionParam GettySessionParam `required:"true" yaml:"getty_session_param" json:"getty_session_param,omitempty"` // contains filtered or unexported fields }
Config holds supported types by the multiconfig package
func (*ServerConfig) CheckValidity ¶ added in v0.9.3
func (c *ServerConfig) CheckValidity() error
type ServiceIDType ¶ added in v0.9.3
type ServiceIDType int16