Documentation ¶
Index ¶
- Constants
- Variables
- func Absolute(path string) (string, error)
- func AddRpcLogger(w io.Writer, id string)
- func ByteToString(p []byte) string
- func BytesToInt16(b []byte) int16
- func BytesToInt64(b []byte) int64
- func BytesToUInt32(b []byte) uint32
- func BytesToUInt64(b []byte) uint64
- func BytesToUint16(b []byte) uint16
- func Camel2Snake(s string) string
- func CheckError(err error) bool
- func ConvertCoronaryUtf8(in string) string
- func Crc32IEEE(data []byte) uint32
- func DebugLog(v ...interface{})
- func DebugLogf(template string, v ...interface{})
- func DebugLogfWithCalldepth(calldepth int, template string, v ...interface{})
- func DetailLog(v ...interface{})
- func DetailLogf(template string, v ...interface{})
- func DisableRpcLogger(id string)
- func DumpTraffic(v ...interface{})
- func ECCSign(text []byte, prk *ecdsa.PrivateKey) ([]byte, error)
- func ECCSignBytes(text, privateKey []byte) ([]byte, error)
- func ECCVerify(text []byte, signature []byte, key *ecdsa.PublicKey) bool
- func ECCVerifyBytes(text, signature, publicKey []byte) bool
- func ErrorLog(v ...interface{})
- func ErrorLogf(template string, v ...interface{})
- func FatalLogfAndExit(exitCode int, template string, v ...interface{})
- func FatalLogfAndTerminate(template string, v ...interface{})
- func FormatError(err error) string
- func GenerateRandomNumber(start int, end int, count int) []int
- func Get16MD5(data string) string
- func Get8BitUUID() string
- func GetDiskUsage(path string) (*disk.UsageStat, error)
- func GetLastLinesFromTrafficLog(path string, n uint64) []string
- func GetMD5(data string) string
- func GetRandomString(length int) string
- func GetSequenceNumberString(number uint64) string
- func ImageCommpress(pathStr string) (string, error)
- func InitBufferPool(bufferSize, poolSize int)
- func InitIdWorker(nodeid uint8) error
- func Int16ToBytes(n int16) []byte
- func Int64ToByte(n int64) []byte
- func IntToString(i int) string
- func IsPoolFull() bool
- func LcFirst(str string) string
- func LoadTomlConfig(s interface{}, path string) error
- func LoadYamlConfig(s interface{}, path string) error
- func Log(v ...interface{})
- func Logf(template string, v ...interface{})
- func MergeByte(b ...[]byte) []byte
- func MergeBytes(a, b []byte) []byte
- func NextSnowFlakeId() (int64, error)
- func ParseTomlValue(data string) (interface{}, error)
- func RandFromSeed(seed string) *rand.Rand
- func RegisterReqToLogger(reqId int64, terminalId string) bool
- func RegisterReqToParentReq(reqId, parentId int64) bool
- func ReleaseBuffer(buffer []byte)
- func RequestBuffer() []byte
- func Snake2Camel(s string) string
- func SplitHostPort(addr string) (net.IP, string, error)
- func StrInSlices(slices []string, key string) bool
- func StringToInt(s string) (int, error)
- func Struct2Map(obj interface{}) map[string]interface{}
- func UcFirst(str string) string
- func Uint16ToBytes(n uint16) []byte
- func Uint32ToBytes(n uint32) []byte
- func Uint64ToBytes(n uint64) []byte
- func Uint8ToBytes(n uint8) []byte
- func WarnLog(v ...interface{})
- func WriteTomlConfig(data interface{}, filePath string) error
- func ZeroId() int64
- type Action
- type AtomicInt32
- func (a *AtomicInt32) AddAndGetNew(delta int32) int32
- func (a *AtomicInt32) CompareAndSet(expect, update int32) bool
- func (a *AtomicInt32) DecrementAndGetNew() int32
- func (a *AtomicInt32) GetAndSetAtomic(newValue int32) int32
- func (a *AtomicInt32) GetAtomic() int32
- func (a *AtomicInt32) GetOldAndAdd(delta int32) int32
- func (a *AtomicInt32) GetOldAndDecrement() int32
- func (a *AtomicInt32) GetOldAndIncrement() int32
- func (a *AtomicInt32) IncrementAndGetNew() int32
- func (a *AtomicInt32) SetAtomic(newValue int32)
- func (a *AtomicInt32) String() string
- type AtomicInt64
- func (a *AtomicInt64) AddAndGetNew(delta int64) int64
- func (a *AtomicInt64) CompareAndSet(expect, update int64) bool
- func (a *AtomicInt64) DecrementAndGetNew() int64
- func (a *AtomicInt64) GetAndSetAtomic(newValue int64) int64
- func (a *AtomicInt64) GetAtomic() int64
- func (a *AtomicInt64) GetNewAndSetAtomic(newValue int64) int64
- func (a *AtomicInt64) GetOldAndAdd(delta int64) int64
- func (a *AtomicInt64) GetOldAndDecrement() int64
- func (a *AtomicInt64) GetOldAndIncrement() int64
- func (a *AtomicInt64) IncrementAndGetNew() int64
- func (a *AtomicInt64) SetAtomic(newValue int64)
- func (a *AtomicInt64) String() string
- type AutoCleanMap
- type AutoCleanUnsafeMap
- type CombinedLogger
- func (l *CombinedLogger) ErrorLog(v ...interface{})
- func (l *CombinedLogger) Log(level LogLevel, v ...interface{})
- func (l *CombinedLogger) LogDepth(level LogLevel, calldepth int, v ...interface{})
- func (l *CombinedLogger) SetEnablefile(b bool)
- func (l *CombinedLogger) SetEnablestd(b bool)
- func (l *CombinedLogger) SetLogLevel(lv LogLevel)
- type ErrUndefined
- type Event
- type Fsm
- type IdWorker
- type LimitRate
- type LogLevel
- type LogMsg
- type Logger
- type MyUnsafeValue
- type MyValue
- type State
- type SysInfo
- type TransitionItem
- type Url
- type WeightedItem
Constants ¶
const ( DefTaskPoolCount = 200 TaskSize = 1024 DefReadTimeOut = 360 // in seconds WriteTimeOut = 60 // in seconds HandshakeTimeOut = 5 // in seconds MessageBeatLen = 4 * 1024 * 1024 // in bytes PpMinTier = 0 PpMaxTier = 3 )
const ( SIZE_OF_INT8 = 1 SIZE_OF_UINT8 = 1 SIZE_OF_INT16 = 2 // in byte SIZE_OF_UINT16 = 2 // in byte SIZE_OF_INT32 = 4 // in byte SIZE_OF_UINT32 = 4 // in byte SIZE_OF_INT64 = 8 // in byte SIZE_OF_UINT64 = 8 // in byte )
const (
BufferPoolRefillInterval = 3 // in second
)
const (
NodeIdBits = uint(8) // node id bits size
)
Variables ¶
Functions ¶
func AddRpcLogger ¶
func ByteToString ¶
func BytesToInt16 ¶
func BytesToInt64 ¶
func BytesToUInt32 ¶
func BytesToUInt64 ¶
func BytesToUint16 ¶
func CheckError ¶
CheckError TODO This is a bad way to call error log, as you cannot know where this method is called in your error log This give log line like this : [ERROR]2021/04/13 22:39:11 log.go:150: Fatal error: address 127.0.0.1: missing port in address it always refer to this file and this line If time allows, a better logging tool like "zerolog" can be used to replace these methods.
func ConvertCoronaryUtf8 ¶
func DebugLogf ¶
func DebugLogf(template string, v ...interface{})
DebugLog calls default logger and output debug log
func DebugLogfWithCalldepth ¶
DebugLog calls default logger and output debug log
func DetailLog ¶
func DetailLog(v ...interface{})
DetailLog calls default logger and output detail log
func DetailLogf ¶
func DetailLogf(template string, v ...interface{})
DetailLog calls default logger and output detail log
func DisableRpcLogger ¶
func DisableRpcLogger(id string)
func DumpTraffic ¶
func DumpTraffic(v ...interface{})
DumpTraffic Log calls default logger and output info log
func ECCSign ¶
func ECCSign(text []byte, prk *ecdsa.PrivateKey) ([]byte, error)
ECCSign signs the given text
func ECCSignBytes ¶
ECCSignBytes converts the private key bytes to an ecdsa.PrivateKey and then signs the given text
func ECCVerifyBytes ¶
ECCVerifyBytes converts the public key bytes to an ecdsa.PublicKey and then verifies the given signature
func ErrorLogf ¶
func ErrorLogf(template string, v ...interface{})
ErrorLogf call default logger and output error log
func FatalLogfAndExit ¶
func FatalLogfAndTerminate ¶
func FatalLogfAndTerminate(template string, v ...interface{})
func FormatError ¶
func GenerateRandomNumber ¶
GenerateRandomNumber generate (count) random numbers without repetition in the interval [start, end)
func Get8BitUUID ¶
func Get8BitUUID() string
func GetSequenceNumberString ¶
func ImageCommpress ¶
func InitBufferPool ¶
func InitBufferPool(bufferSize, poolSize int)
func InitIdWorker ¶
func Int16ToBytes ¶
func Int64ToByte ¶
func IntToString ¶
func IsPoolFull ¶
func IsPoolFull() bool
func LoadTomlConfig ¶
func LoadYamlConfig ¶
func MergeBytes ¶
func NextSnowFlakeId ¶
func ParseTomlValue ¶
func RandFromSeed ¶
func RegisterReqToLogger ¶
func RegisterReqToParentReq ¶
func ReleaseBuffer ¶
func ReleaseBuffer(buffer []byte)
func RequestBuffer ¶
func RequestBuffer() []byte
func StrInSlices ¶
func StringToInt ¶
func Struct2Map ¶
func Struct2Map(obj interface{}) map[string]interface{}
func Uint16ToBytes ¶
func Uint32ToBytes ¶
func Uint64ToBytes ¶
func Uint8ToBytes ¶
func WriteTomlConfig ¶
Types ¶
type AtomicInt32 ¶
type AtomicInt32 int32
AtomicInt32
func (*AtomicInt32) AddAndGetNew ¶
func (a *AtomicInt32) AddAndGetNew(delta int32) int32
AddAndGetNew
func (*AtomicInt32) CompareAndSet ¶
func (a *AtomicInt32) CompareAndSet(expect, update int32) bool
CompareAndSet
func (*AtomicInt32) DecrementAndGetNew ¶
func (a *AtomicInt32) DecrementAndGetNew() int32
DecrementAndGetNew
func (*AtomicInt32) GetAndSetAtomic ¶
func (a *AtomicInt32) GetAndSetAtomic(newValue int32) int32
GetAndSetAtomic
func (*AtomicInt32) GetOldAndAdd ¶
func (a *AtomicInt32) GetOldAndAdd(delta int32) int32
GetOldAndAdd
func (*AtomicInt32) GetOldAndDecrement ¶
func (a *AtomicInt32) GetOldAndDecrement() int32
GetOldAndDecrement
func (*AtomicInt32) GetOldAndIncrement ¶
func (a *AtomicInt32) GetOldAndIncrement() int32
GetOldAndIncrement
func (*AtomicInt32) IncrementAndGetNew ¶
func (a *AtomicInt32) IncrementAndGetNew() int32
IncrementAndGetNew
func (*AtomicInt32) String ¶
func (a *AtomicInt32) String() string
type AtomicInt64 ¶
type AtomicInt64 int64
AtomicInt64
func CreateAtomicInt64 ¶
func CreateAtomicInt64(initialValue int64) *AtomicInt64
CreateAtomicInt64 with initial value
func (*AtomicInt64) AddAndGetNew ¶
func (a *AtomicInt64) AddAndGetNew(delta int64) int64
AddAndGetNew
func (*AtomicInt64) CompareAndSet ¶
func (a *AtomicInt64) CompareAndSet(expect, update int64) bool
CompareAndSet
func (*AtomicInt64) DecrementAndGetNew ¶
func (a *AtomicInt64) DecrementAndGetNew() int64
DecrementAndGetNew
func (*AtomicInt64) GetAndSetAtomic ¶
func (a *AtomicInt64) GetAndSetAtomic(newValue int64) int64
GetAndSetAtomic return current and set new
func (*AtomicInt64) GetNewAndSetAtomic ¶
func (a *AtomicInt64) GetNewAndSetAtomic(newValue int64) int64
GetNewAndSetAtomic set new and return new
func (*AtomicInt64) GetOldAndAdd ¶
func (a *AtomicInt64) GetOldAndAdd(delta int64) int64
GetOldAndAdd return current and add delta to atomic
func (*AtomicInt64) GetOldAndDecrement ¶
func (a *AtomicInt64) GetOldAndDecrement() int64
GetOldAndDecrement return current and minus 1 to atomic
func (*AtomicInt64) GetOldAndIncrement ¶
func (a *AtomicInt64) GetOldAndIncrement() int64
GetOldAndIncrement return current and add 1 to atomic
func (*AtomicInt64) IncrementAndGetNew ¶
func (a *AtomicInt64) IncrementAndGetNew() int64
IncrementAndGetNew
func (*AtomicInt64) String ¶
func (a *AtomicInt64) String() string
type AutoCleanMap ¶
type AutoCleanMap struct {
// contains filtered or unexported fields
}
func NewAutoCleanMap ¶
func NewAutoCleanMap(delay time.Duration) *AutoCleanMap
func (*AutoCleanMap) Delete ¶
func (m *AutoCleanMap) Delete(key interface{})
func (*AutoCleanMap) HashKey ¶
func (m *AutoCleanMap) HashKey(key interface{}) bool
func (*AutoCleanMap) Load ¶
func (m *AutoCleanMap) Load(key interface{}) (interface{}, bool)
func (*AutoCleanMap) LoadWithoutPushDelete ¶
func (m *AutoCleanMap) LoadWithoutPushDelete(key interface{}) (interface{}, bool)
func (*AutoCleanMap) Store ¶
func (m *AutoCleanMap) Store(key, value interface{})
type AutoCleanUnsafeMap ¶
type AutoCleanUnsafeMap struct {
// contains filtered or unexported fields
}
func NewAutoCleanUnsafeMap ¶
func NewAutoCleanUnsafeMap(delay time.Duration) *AutoCleanUnsafeMap
func (*AutoCleanUnsafeMap) Delete ¶
func (m *AutoCleanUnsafeMap) Delete(key interface{})
func (*AutoCleanUnsafeMap) HashKey ¶
func (m *AutoCleanUnsafeMap) HashKey(key interface{}) bool
func (*AutoCleanUnsafeMap) Len ¶
func (m *AutoCleanUnsafeMap) Len() int
func (*AutoCleanUnsafeMap) Load ¶
func (m *AutoCleanUnsafeMap) Load(key interface{}) (interface{}, bool)
func (*AutoCleanUnsafeMap) Store ¶
func (m *AutoCleanUnsafeMap) Store(key, value interface{})
type CombinedLogger ¶
type CombinedLogger struct {
// contains filtered or unexported fields
}
var MyLogger *CombinedLogger
var TrafficLogger *CombinedLogger
func NewDefaultLogger ¶
func NewDefaultLogger(filepath string, enableStd, enableFile bool) *CombinedLogger
func NewLogger ¶
func NewLogger(filepath string, enableStd, enableFile bool) *CombinedLogger
func NewTrafficLogger ¶
func NewTrafficLogger(filePath string, enableStd, enableFile bool) *CombinedLogger
func (*CombinedLogger) ErrorLog ¶
func (l *CombinedLogger) ErrorLog(v ...interface{})
func (*CombinedLogger) Log ¶
func (l *CombinedLogger) Log(level LogLevel, v ...interface{})
func (*CombinedLogger) LogDepth ¶
func (l *CombinedLogger) LogDepth(level LogLevel, calldepth int, v ...interface{})
func (*CombinedLogger) SetEnablefile ¶
func (l *CombinedLogger) SetEnablefile(b bool)
func (*CombinedLogger) SetEnablestd ¶
func (l *CombinedLogger) SetEnablestd(b bool)
type ErrUndefined ¶
type ErrUndefined int32
ErrUndefined
func (ErrUndefined) Error ¶
func (e ErrUndefined) Error() string
type Fsm ¶
type Fsm struct { StateTransTable [][]TransitionItem // contains filtered or unexported fields }
type IdWorker ¶
type IdWorker struct {
// contains filtered or unexported fields
}
var MyIdWorker *IdWorker
func NewIdWorker ¶
NewIdWorker new a snowflake id generator object.
type Logger ¶
type Logger struct {
// contains filtered or unexported fields
}
func GetRpcLoggerByReqId ¶
func (*Logger) SetEnabled ¶
type MyUnsafeValue ¶
type MyUnsafeValue struct {
// contains filtered or unexported fields
}
type SysInfo ¶
type SysInfo struct { DiskSize uint64 FreeDisk uint64 MemorySize uint64 OSInfo string CPUInfo string MacAddress string }
SysInfo
type TransitionItem ¶
type WeightedItem ¶
type WeightedItem interface {
Weight() float64
}
func WeightedRandomSelect ¶
func WeightedRandomSelect(items []WeightedItem, seed string) (int, WeightedItem)
WeightedRandomSelect selects a random item from the list (with probability proportional to item weight). If the seed is empty, it will use a cryptographically secure random seed
func WeightedRandomSelectMultiple ¶
func WeightedRandomSelectMultiple(items []WeightedItem, count int, seed string) ([]int, []WeightedItem)
WeightedRandomSelectMultiple selects random items from the list (with probability proportional to item weight). If the seed is empty, it will use a cryptographically secure random seed