utils

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Jan 17, 2023 License: Apache-2.0 Imports: 60 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxConnections             = 100000
	DefTaskPoolCount           = 200
	TaskSize                   = 1024
	ReadTimeOut                = 360             // in seconds
	WriteTimeOut               = 360             // in seconds
	HandshakeTimeOut           = 5               // in seconds
	MsgHeaderLen               = 24              // in bytes
	MessageBeatLen             = 4 * 1024 * 1024 // in bytes
	LatencyCheckSpListInterval = 1800            // in seconds
	LatencyCheckSpListTimeout  = 3               // in seconds
	StatusReportPunishInterval = 10000
)
View Source
const (
	DistrictIdBits = uint(5) // district id bits size
	NodeIdBits     = uint(9) // node id bits size

	DistrictIdShift = sequenceBits + NodeIdBits
)

Variables

View Source
var (
	ErrNotFoundCallBack = errors.New("not found callBack function")
	ErrServerClosed     = errors.New("server has been closed")
	ErrWouldBlock       = errors.New("would block")
)
View Source
var RpcLoggerMap = NewAutoCleanMap(60 * time.Minute)

Functions

func Absolute added in v0.5.0

func Absolute(path string) (string, error)

func ByteToString

func ByteToString(p []byte) string

ByteToString

func BytesToInt16

func BytesToInt16(b []byte) int16

BytesToInt16

func BytesToInt64 added in v0.9.0

func BytesToInt64(b []byte) int64

BytesToInt64

func BytesToUInt32

func BytesToUInt32(b []byte) uint32

BytesToUInt32

func BytesToUInt64 added in v0.5.0

func BytesToUInt64(b []byte) uint64

BytesToUInt64

func BytesToUint16

func BytesToUint16(b []byte) uint16

BytesToUint16

func CalcCRC32

func CalcCRC32(data []byte) uint32

CalcCRC32

func CalcFileCRC32

func CalcFileCRC32(filePath string) uint32

CalcFileCRC32

func CalcFileHash

func CalcFileHash(filePath, encryptionTag string) string

CalcFileHash @notice keccak256(md5(file))

func CalcFileMD5

func CalcFileMD5(filePath string) []byte

CalcFileMD5

func CalcHash

func CalcHash(data []byte) string

CalcHash

func CalcSliceHash

func CalcSliceHash(data []byte, fileHash string, sliceNumber uint64) string

CalcHash

func Camel2Snake

func Camel2Snake(s string) string

Camel2Snake eg. HelloWorld => hello_world

func ChangePassword

func ChangePassword(walletAddress, dir, auth string, key *AccountKey) error

ChangePassword

func CheckError

func CheckError(err error) bool

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 CheckStructField

func CheckStructField(field string, structName interface{}) (found bool, isString bool)

CheckStructField

func ClearRpcLogger added in v0.9.0

func ClearRpcLogger()

func ConvertCoronaryUtf8

func ConvertCoronaryUtf8(in string) string

ConvertCoronaryUtf8

func Crc32IEEE

func Crc32IEEE(data []byte) uint32

func CreateP2PKey

func CreateP2PKey(dir, nickname, password, hrp string) (types.Address, error)

CreateP2PKey creates a P2P key to be used by one of the SDS nodes, and saves the key data into the dir folder

func CreateWallet

func CreateWallet(dir, nickname, password, hrp, mnemonic, bip39Passphrase, hdPath string) (types.Address, error)

CreateWallet creates a new stratos-chain wallet with the given nickname and password, and saves the key data into the dir folder

func DebugLog

func DebugLog(v ...interface{})

DebugLog calls default logger and output debug log

func DebugLogf

func DebugLogf(template string, v ...interface{})

DebugLog calls default logger and output debug log

func DebugLogfWithCalldepth added in v0.9.0

func DebugLogfWithCalldepth(calldepth int, template string, v ...interface{})

DebugLog calls default logger and output debug log

func DetailLog added in v0.7.0

func DetailLog(v ...interface{})

DetailLog calls default logger and output detail log

func DetailLogf added in v0.7.0

func DetailLogf(template string, v ...interface{})

DetailLog calls default logger and output detail log

func DumpTraffic added in v0.5.0

func DumpTraffic(v ...interface{})

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

func ECCSignBytes(text, privateKey []byte) ([]byte, error)

ECCSignBytes converts the private key bytes to an ecdsa.PrivateKey and then signs the given text

func ECCVerify

func ECCVerify(text []byte, signature []byte, key *ecdsa.PublicKey) bool

ECCVerify verifies the given signature

func ECCVerifyBytes

func ECCVerifyBytes(text, signature, publicKey []byte) bool

ECCVerifyBytes converts the public key bytes to an ecdsa.PublicKey and then verifies the given signature

func EncryptKey

func EncryptKey(key *AccountKey, auth string) ([]byte, error)

EncryptKey encrypts a key using the specified scrypt parameters into a json blob that can be decrypted later on.

func ErrorLog

func ErrorLog(v ...interface{})

ErrorLog call default logger and output error log

func ErrorLogf

func ErrorLogf(template string, v ...interface{})

ErrorLogf call default logger and output error log

func FatalLogfAndExit added in v0.9.0

func FatalLogfAndExit(exitCode int, template string, v ...interface{})

func FormatError added in v0.9.0

func FormatError(err error) string

func GenerateRandomNumber

func GenerateRandomNumber(start int, end int, count int) []int

GenerateRandomNumber generate (count) random numbers between (start) to (end).

func Get16MD5

func Get16MD5(data string) string

func Get8BitUUID

func Get8BitUUID() string

Get8BitUUID

func GetDiskUsage added in v0.5.0

func GetDiskUsage(path string) (*disk.UsageStat, error)

func GetElement

func GetElement(key string, themap map[interface{}]interface{}) string

GetElement

func GetFileDownloadShareNodeSignMessage added in v0.9.0

func GetFileDownloadShareNodeSignMessage(p2pAddr, shareLink, msgTypeStr string) string

GetFileDownloadShareNodeSignMessage share: node sign message for download shared file request, between pp to sp

func GetFileDownloadShareWalletSignMessage added in v0.9.0

func GetFileDownloadShareWalletSignMessage(fileHash, walletAddr string) string

GetFileDownloadShareWalletSignMessage share: wallet sign message for download shared file request from the (rpc or cmd) user this message must be the same as GetFileDownloadWalletSignMessage()

func GetFileDownloadWalletSignMessage added in v0.9.0

func GetFileDownloadWalletSignMessage(fileHash, walletAddr string) string

GetFileDownloadWalletSignMessage download: wallet sign message for download request from the (rpc or cmd) user

func GetFileUploadWalletSignMessage added in v0.9.0

func GetFileUploadWalletSignMessage(fileHash, walletAddr string) string

GetFileUploadWalletSignMessage upload: wallet sign message for file upload request from the (rpc or cmd) user

func GetLastLinesFromTrafficLog added in v0.9.0

func GetLastLinesFromTrafficLog(path string, n uint64) []string

func GetMD5

func GetMD5(data string) string

func GetRandomString

func GetRandomString(length int) string

GetRandomString between [0-9a-zA-Z]

func GetReportDownloadSliceResultPpNodeSignMessage added in v0.9.0

func GetReportDownloadSliceResultPpNodeSignMessage(p2pAdress, sliceHash, msgTypeStr string) string

GetReportDownloadSliceResultPpNodeSignMessage download: node sign message for download slice request, between downloader pp to storage pp

func GetReportUploadSliceResultPpNodeSignMessage added in v0.9.0

func GetReportUploadSliceResultPpNodeSignMessage(p2pAddr, fileHash, msgTypeStr string) string

GetReportUploadSliceResultPpNodeSignMessage upload: node sign message for report upload slice result, between storage pp and sp, or uploader pp and sp

func GetReqDownloadSlicePpNodeSignMessage added in v0.9.0

func GetReqDownloadSlicePpNodeSignMessage(srcPpP2pAddr, destPpP2pAddr, sliceHash, msgTypeStr string) string

GetReqDownloadSlicePpNodeSignMessage download: node sign message for download slice request, between downloader pp to storage pp

func GetReqDownloadSliceSpNodeSignMessage added in v0.9.0

func GetReqDownloadSliceSpNodeSignMessage(ppP2pAddr, spP2pAddr, sliceHash, msgTypeStr string) string

GetReqDownloadSliceSpNodeSignMessage download: node sign message for download slice request, between sp and storage pp through downloader pp

func GetReqFileStorageInfoNodeSignMessage added in v0.9.0

func GetReqFileStorageInfoNodeSignMessage(ppP2pAddr, filePath, msgTypeStr string) string

GetReqFileStorageInfoNodeSignMessage download: node sign message for download file request, between downloader pp and sp

func GetReqUploadFileNodeSignMessage added in v0.9.0

func GetReqUploadFileNodeSignMessage(p2pAddr, fileHash, msgTypeStr string) string

GetReqUploadFileNodeSignMessage upload: node sign message for upload file request, between uploader pp and sp

func GetReqUploadFileSlicePpNodeSignMessage added in v0.9.0

func GetReqUploadFileSlicePpNodeSignMessage(srcPpP2pAddr, destPpP2pAddr, msgTypeStr string) string

GetReqUploadFileSlicePpNodeSignMessage upload: node sign message for upload slice request, between uploader pp and storage pp

func GetReqUploadFileSliceSpNodeSignMessage added in v0.9.0

func GetReqUploadFileSliceSpNodeSignMessage(ppP2pAddr, spP2PAddress, fileHash, msgTypeStr string) string

GetReqUploadFileSliceSpNodeSignMessage upload: node sign message for upload slice request, between sp and storage pp through uploader pp

func GetRspFileStorageInfoNodeSignMessage added in v0.9.0

func GetRspFileStorageInfoNodeSignMessage(ppP2pAddr, spP2PAddress, fileHash, msgTypeStr string) string

GetRspFileStorageInfoNodeSignMessage download: node sign message for download file response, between sp and downloader pp

func GetRspUploadFileSliceNodeSignMessage added in v0.9.0

func GetRspUploadFileSliceNodeSignMessage(srcP2pAddr, destP2pAddr, msgTypeStr string) string

GetRspUploadFileSliceNodeSignMessage upload: node sign message for upload slice response, between storage pp and uploader pp

func GetRspUploadFileSpNodeSignMessage added in v0.9.0

func GetRspUploadFileSpNodeSignMessage(ppP2pAddr, spP2PAddress, fileHash, msgTypeStr string) string

GetRspUploadFileSpNodeSignMessage upload: node sign message for upload file response, between sp and uploader pp

func GetYamlConfig

func GetYamlConfig(path string) map[interface{}]interface{}

GetYamlConfig

func ImageCommpress

func ImageCommpress(pathStr string) (string, error)

ImageCommpress ImageCommpress

func InitIdWorker added in v0.7.0

func InitIdWorker() error

func Int16ToBytes

func Int16ToBytes(n int16) []byte

Int16ToBytes

func Int64ToByte

func Int64ToByte(n int64) []byte

Int64ToByte

func IntToString

func IntToString(i int) string

IntToString

func LcFirst

func LcFirst(str string) string

LcFirst first letter lower case

func LoadTomlConfig added in v0.8.0

func LoadTomlConfig(s interface{}, path string) error

LoadTomlConfig

func LoadYamlConfig

func LoadYamlConfig(s interface{}, path string) error

LoadYamlConfig

func Log

func Log(v ...interface{})

Log calls default logger and output info log

func Logf added in v0.5.0

func Logf(template string, v ...interface{})

func MergeByte

func MergeByte(b ...[]byte) []byte

MergeByte

func MergeBytes

func MergeBytes(a, b []byte) []byte

func NewMnemonic

func NewMnemonic() (string, error)

func NextSnowFlakeId added in v0.9.0

func NextSnowFlakeId() (int64, error)

func SetRpcLogger added in v0.9.0

func SetRpcLogger(rpc io.Writer)

func SetupWallet added in v0.9.0

func SetupWallet(accountDir, defaultHDPath string, updateConfig func(walletKeyAddressString, password string)) error

func Snake2Camel

func Snake2Camel(s string) string

Snake2Camel eg. hello_world => HelloWorld

func SplitHostPort added in v0.9.0

func SplitHostPort(addr string) (net.IP, string, error)

func StrInSlices

func StrInSlices(slices []string, key string) bool

StrInSlices

func StringToInt

func StringToInt(s string) (int, error)

StringToInt

func Struct2Map

func Struct2Map(obj interface{}) map[string]interface{}

Struct2Map

func UcFirst

func UcFirst(str string) string

UcFirst first letter upper case

func Uint16ToBytes

func Uint16ToBytes(n uint16) []byte

Uint16ToBytes

func Uint32ToBytes

func Uint32ToBytes(n uint32) []byte

Uint32ToBytes

func Uint64ToBytes added in v0.5.0

func Uint64ToBytes(n uint64) []byte

Uint64ToBytes

func VerifyHash added in v0.5.0

func VerifyHash(hash string) bool

func WarnLog added in v0.5.0

func WarnLog(v ...interface{})

func WriteConfig

func WriteConfig(data interface{}, filePath string) error

func WriteKeyFile

func WriteKeyFile(file string, content []byte) error

func WriteTomlConfig added in v0.8.0

func WriteTomlConfig(data interface{}, filePath string) error

func ZeroId added in v0.7.0

func ZeroId() int64

Types

type AccountKey

type AccountKey struct {
	Id uuid.UUID // Version 4 "random" for unique id not derived from key data
	// to simplify lookups we also store the address
	Address types.Address
	// The HD path to use to derive this key
	HdPath string
	// The mnemonic for the underlying HD wallet
	Mnemonic string
	// a nickname
	Name string
	// The bip39 passphrase for the underlying HD wallet
	Passphrase string
	// we only store privkey as pubkey/address can be derived from it
	// privkey in this struct is always in plaintext
	PrivateKey []byte
}

func DecryptKey

func DecryptKey(keyjson []byte, auth string) (*AccountKey, error)

DecryptKey decrypts a key from a json blob, returning the private key itself.

type AtomicInt32

type AtomicInt32 int32

AtomicInt32

func CreateAtomicInt32

func CreateAtomicInt32(initialValue int32) *AtomicInt32

CreateAtomicInt32

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) GetAtomic

func (a *AtomicInt32) GetAtomic() int32

GetAtomic

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) SetAtomic

func (a *AtomicInt32) SetAtomic(newValue int32)

SetAtomic

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) GetAtomic

func (a *AtomicInt64) GetAtomic() int64

GetAtomic

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) SetAtomic

func (a *AtomicInt64) SetAtomic(newValue int64)

SetAtomic

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 added in v0.8.0

func (m *AutoCleanMap) HashKey(key interface{}) bool

func (*AutoCleanMap) Load

func (m *AutoCleanMap) Load(key interface{}) (interface{}, bool)

func (*AutoCleanMap) Store

func (m *AutoCleanMap) Store(key, value interface{})

type AutoCleanUnsafeMap added in v0.9.0

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

func NewAutoCleanUnsafeMap added in v0.9.0

func NewAutoCleanUnsafeMap(delay time.Duration) *AutoCleanUnsafeMap

func (*AutoCleanUnsafeMap) Delete added in v0.9.0

func (m *AutoCleanUnsafeMap) Delete(key interface{})

func (*AutoCleanUnsafeMap) HashKey added in v0.9.0

func (m *AutoCleanUnsafeMap) HashKey(key interface{}) bool

func (*AutoCleanUnsafeMap) Load added in v0.9.0

func (m *AutoCleanUnsafeMap) Load(key interface{}) (interface{}, bool)

func (*AutoCleanUnsafeMap) Store added in v0.9.0

func (m *AutoCleanUnsafeMap) Store(key, value interface{})

type CombinedLogger added in v0.9.0

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 added in v0.5.0

func NewTrafficLogger(filePath string, enableStd, enableFile bool) *CombinedLogger

func (*CombinedLogger) ErrorLog added in v0.9.0

func (l *CombinedLogger) ErrorLog(v ...interface{})

func (*CombinedLogger) Log added in v0.9.0

func (l *CombinedLogger) Log(level LogLevel, v ...interface{})

func (*CombinedLogger) LogDepth added in v0.9.0

func (l *CombinedLogger) LogDepth(level LogLevel, calldepth int, v ...interface{})

func (*CombinedLogger) SetEnablefile added in v0.9.0

func (l *CombinedLogger) SetEnablefile(b bool)

func (*CombinedLogger) SetEnablestd added in v0.9.0

func (l *CombinedLogger) SetEnablestd(b bool)

func (*CombinedLogger) SetLogLevel added in v0.9.0

func (l *CombinedLogger) SetLogLevel(lv LogLevel)

SetLogLevel

type ErrUndefined

type ErrUndefined int32

ErrUndefined

func (ErrUndefined) Error

func (e ErrUndefined) Error() string

type IdWorker

type IdWorker struct {
	// contains filtered or unexported fields
}
var MyIdWorker *IdWorker

func NewIdWorker

func NewIdWorker(NodeId int64) (*IdWorker, error)

NewIdWorker new a snowflake id generator object.

func (*IdWorker) NextId

func (id *IdWorker) NextId() (int64, error)

NextId get a snowflake id.

func (*IdWorker) NextIds

func (id *IdWorker) NextIds(num int) ([]int64, error)

NextIds get snowflake ids.

type KeyStorePassphrase

type KeyStorePassphrase struct {
	KeysDirPath string
	ScryptN     int
	ScryptP     int
}

func GetKeyStorePassphrase added in v0.5.0

func GetKeyStorePassphrase(keysDirPath string) KeyStorePassphrase

func (KeyStorePassphrase) StoreKey

func (ks KeyStorePassphrase) StoreKey(filename string, key *AccountKey, auth string) error

type LimitRate

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

LimitRate

func (*LimitRate) GetRate

func (l *LimitRate) GetRate() uint64

GetRate

func (*LimitRate) Limit

func (l *LimitRate) Limit() bool

func (*LimitRate) SetRate

func (l *LimitRate) SetRate(r uint64)

SetRate

type LogLevel

type LogLevel int
const (
	Detail LogLevel = 1
	Debug  LogLevel = 10
	Info   LogLevel = 20
	Warn   LogLevel = 30
	Error  LogLevel = 40
	Fatal  LogLevel = 50
)

log level

type Logger

type Logger struct {
	// contains filtered or unexported fields
}
var RpcLogger *Logger

func (*Logger) GetLevelString added in v0.9.0

func (l *Logger) GetLevelString(lv LogLevel) string

GetLevelString

func (*Logger) Log

func (l *Logger) Log(level LogLevel, v ...interface{})

func (*Logger) LogDepth added in v0.9.0

func (l *Logger) LogDepth(level LogLevel, calldepth int, v ...interface{})

func (*Logger) SetEnabled added in v0.9.0

func (l *Logger) SetEnabled(b bool)

func (*Logger) SetLogLevel

func (l *Logger) SetLogLevel(lv LogLevel)

SetLogLevel

type MyUnsafeValue added in v0.9.0

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

type MyValue

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

type SysInfo

type SysInfo struct {
	DiskSize   uint64
	FreeDisk   uint64
	MemorySize uint64
	OSInfo     string
	CPUInfo    string
	MacAddress string
}

SysInfo

func GetSysInfo

func GetSysInfo(diskPath string) *SysInfo

GetSysInfo

type Url added in v0.5.0

type Url struct {
	Scheme   string
	Host     string
	Port     string
	Path     string
	RawQuery string
}

func ParseUrl added in v0.5.0

func ParseUrl(url string) (*Url, error)

func (*Url) String added in v0.5.0

func (url *Url) String(withScheme, withPort, withPath, withRawQuery bool) string

Directories

Path Synopsis
math
Package math provides integer math utilities.
Package math provides integer math utilities.
rlp
Package rlp implements the RLP serialization format.
Package rlp implements the RLP serialization format.
sha3
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
Package sha3 implements the SHA-3 fixed-output-length hash functions and the SHAKE variable-output-length hash functions defined by FIPS-202.
sql

Jump to

Keyboard shortcuts

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