Back to / common

package common

Latest Go to latest
Published: Jun 3, 2019 | License: MIT | Module:


Package common contains common utilities that are shared among other packages. See each sub-package for detail.



var (
	// ErrNoClue is for the situation that existing information is not enough to make a decision. For example, Router may return this error when there is no suitable route.
	ErrNoClue = errors.New("not enough information for making a decision")

func Close

func Close(obj interface{}) error

Close closes the obj if it is a Closable.


func CreateObject

func CreateObject(ctx context.Context, config interface{}) (interface{}, error)

CreateObject creates an object by its config. The config type must be registered through RegisterConfig().

func Error2

func Error2(v interface{}, err error) error

Error2 returns the err from the 2nd parameter.

func Interrupt

func Interrupt(obj interface{}) error

Interrupt calls Interrupt() if object implements Interruptible interface, or Close() if the object implements Closable interface.


func Must

func Must(err error)

Must panics if err is not nil.

func Must2

func Must2(v interface{}, err error) interface{}

Must2 panics if the second parameter is not nil, otherwise returns the first parameter.

func RegisterConfig

func RegisterConfig(config interface{}, configCreator ConfigCreator) error

RegisterConfig registers a global config creator. The config can be nil but must have a type.

type ChainedClosable

type ChainedClosable []Closable

ChainedClosable is a Closable that consists of multiple Closable objects.

func (ChainedClosable) Close

func (cc ChainedClosable) Close() error

Close implements Closable.

type Closable

type Closable interface {
	// Close release all resources used by this object, including goroutines.
	Close() error

Closable is the interface for objects that can release its resources.


type ConfigCreator

type ConfigCreator func(ctx context.Context, config interface{}) (interface{}, error)

ConfigCreator is a function to create an object by a config.

type HasType

type HasType interface {
	// Type returns the type of the object.
	// Usually it returns (*Type)(nil) of the object.
	Type() interface{}

HasType is the interface for objects that knows its type.

type Interruptible

type Interruptible interface {

Interruptible is an interface for objects that can be stopped before its completion.


type Runnable

type Runnable interface {
	// Start starts the runnable object. Upon the method returning nil, the object begins to function properly.
	Start() error


Runnable is the interface for objects that can start to work and stop on demand.

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier