Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package common contains common utilities that are shared among other packages. See each sub-package for detail.
Index ¶
- Variables
 - func Close(obj interface{}) error
 - func CreateObject(ctx context.Context, config interface{}) (interface{}, error)
 - func Error2(v interface{}, err error) error
 - func GetGOBIN() string
 - func GetGOPATH() string
 - func GetModuleName(pathToProjectRoot string) (string, error)
 - func GetRuntimeEnv(key string) (string, error)
 - func Interrupt(obj interface{}) error
 - func Must(err error)
 - func Must2(v interface{}, err error) interface{}
 - func RegisterConfig(config interface{}, configCreator ConfigCreator) error
 - type ChainedClosable
 - type Closable
 - type ConfigCreator
 - type HasType
 - type Interruptible
 - type Runnable
 
Constants ¶
This section is empty.
Variables ¶
var ErrNoClue = errors.New("not enough information for making a decision")
    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.
Functions ¶
func Close ¶
func Close(obj interface{}) error
    Close closes the obj if it is a Closable.
xray:api:beta
func CreateObject ¶
CreateObject creates an object by its config. The config type must be registered through RegisterConfig().
func GetGOBIN ¶
func GetGOBIN() string
GetGOBIN returns GOBIN environment variable as a string. It will NOT be empty.
func GetGOPATH ¶
func GetGOPATH() string
GetGOPATH returns GOPATH environment variable as a string. It will NOT be empty.
func GetModuleName ¶
GetModuleName returns the value of module in `go.mod` file.
func GetRuntimeEnv ¶
GetRuntimeEnv returns the value of runtime environment variable, that is set by running following command: `go env -w key=value`.
func Interrupt ¶
func Interrupt(obj interface{}) error
    Interrupt calls Interrupt() if object implements Interruptible interface, or Close() if the object implements Closable interface.
xray:api:beta
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.
Types ¶
type ChainedClosable ¶
type ChainedClosable []Closable
ChainedClosable is a Closable that consists of multiple Closable objects.
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.
xray:api:beta
type ConfigCreator ¶
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 {
	Interrupt()
}
    Interruptible is an interface for objects that can be stopped before its completion.
xray:api:beta
      
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| 
       Package buf provides a light-weight memory allocation mechanism. 
         | 
      Package buf provides a light-weight memory allocation mechanism. | 
| 
       Package crypto provides common crypto libraries for Xray. 
         | 
      Package crypto provides common crypto libraries for Xray. | 
| 
       Package dice contains common functions to generate random number. 
         | 
      Package dice contains common functions to generate random number. | 
| 
       Package errors is a drop-in replacement for Golang lib 'errors'. 
         | 
      Package errors is a drop-in replacement for Golang lib 'errors'. | 
| 
         
          
            errorgen
            
            command
          
          
         
       | 
      |
| 
       Package net is a drop-in replacement to Golang's net package, with some more functionalities. 
         | 
      Package net is a drop-in replacement to Golang's net package, with some more functionalities. | 
| 
       Package session provides functions for sessions of incoming requests. 
         | 
      Package session provides functions for sessions of incoming requests. |