Documentation ¶
Overview ¶
Package common contains various helper functions.
Index ¶
- Constants
- Variables
- func AbsolutePath(datadir string, filename string) string
- func Bytes2Hex(d []byte) string
- func BytesToUint64(b []byte) uint64
- func CopyBytes(b []byte) (copiedBytes []byte)
- func ErrCompose(errs ...error) error
- func ErrContains(src, tar error) bool
- func ErrExtend(err, extension error) error
- func FileExist(filePath string) bool
- func FromHex(s string) []byte
- func Hex2Bytes(str string) []byte
- func Hex2BytesFixed(str string, flen int) []byte
- func IsHexAddress(s string) bool
- func LeftPadBytes(slice []byte, l int) []byte
- func LoadDxJSON(meta Metadata, filename string, val interface{}) error
- func LoadJSON(file string, val interface{}) error
- func Lock(locks ...*TryLock)
- func MakeName(name, version string) string
- func PrintDepricationWarning(str string)
- func Report(extra ...interface{})
- func RightPadBytes(slice []byte, l int) []byte
- func SaveDxJSON(meta Metadata, filename string, val interface{}) error
- func ToHex(b []byte) stringdeprecated
- func ToHexArray(b [][]byte) []string
- func Uint64ToByte(num uint64) []byte
- type Address
- func (a Address) Big() *big.Int
- func (a Address) Bytes() []byte
- func (a Address) Format(s fmt.State, c rune)
- func (a Address) Hash() Hash
- func (a Address) Hex() string
- func (a Address) MarshalText() ([]byte, error)
- func (a *Address) Scan(src interface{}) error
- func (a *Address) SetBytes(b []byte)
- func (a Address) String() string
- func (a *Address) UnmarshalJSON(input []byte) error
- func (a *Address) UnmarshalText(input []byte) error
- func (a Address) Value() (driver.Value, error)
- type BigInt
- func (x BigInt) Add(y BigInt) (sum BigInt)
- func (x BigInt) AddInt64(y int64) (sum BigInt)
- func (x BigInt) AddUint64(y uint64) (sum BigInt)
- func (x BigInt) BigIntPtr() *big.Int
- func (x BigInt) Cmp(y BigInt) (result int)
- func (x BigInt) CmpUint64(y uint64) (result int)
- func (x *BigInt) DecodeRLP(st *rlp.Stream) error
- func (x BigInt) Div(y BigInt) (quotient BigInt)
- func (x BigInt) DivNoRemaining(y uint64) (noRemaining bool)
- func (x BigInt) DivUint64(y uint64) (quotient BigInt)
- func (x BigInt) DivWithFloatResult(y BigInt) (quotient float64)
- func (x BigInt) DivWithFloatResultUint64(y uint64) (quotient float64)
- func (x BigInt) EncodeRLP(w io.Writer) error
- func (x BigInt) Float64() (result float64)
- func (x BigInt) IsEqual(y BigInt) bool
- func (x BigInt) IsNeg() bool
- func (x BigInt) MarshalJSON() ([]byte, error)
- func (x BigInt) Mult(y BigInt) (prod BigInt)
- func (x BigInt) MultFloat64(y float64) (prod BigInt)
- func (x BigInt) MultInt64(y int64) (prod BigInt)
- func (x BigInt) MultUint64(y uint64) (prod BigInt)
- func (x BigInt) SetInt64(y int64) BigInt
- func (x BigInt) Sign() int
- func (x BigInt) String() string
- func (x BigInt) Sub(y BigInt) (diff BigInt)
- func (x BigInt) SubInt64(y int64) (diff BigInt)
- func (x BigInt) SubUint64(y uint64) (diff BigInt)
- func (x *BigInt) UnmarshalJSON(val []byte) error
- type ErrorSet
- type Hash
- func (h Hash) Big() *big.Int
- func (h Hash) Bytes() []byte
- func (h Hash) Format(s fmt.State, c rune)
- func (h Hash) Generate(rand *rand.Rand, size int) reflect.Value
- func (h Hash) Hex() string
- func (h Hash) MarshalText() ([]byte, error)
- func (h *Hash) Scan(src interface{}) error
- func (h *Hash) SetBytes(b []byte)
- func (h Hash) String() string
- func (h Hash) TerminalString() string
- func (h *Hash) UnmarshalJSON(input []byte) error
- func (h *Hash) UnmarshalText(input []byte) error
- func (h Hash) Value() (driver.Value, error)
- type Metadata
- type MixedcaseAddress
- func (ma *MixedcaseAddress) Address() Address
- func (ma *MixedcaseAddress) MarshalJSON() ([]byte, error)
- func (ma *MixedcaseAddress) Original() string
- func (ma *MixedcaseAddress) String() string
- func (ma *MixedcaseAddress) UnmarshalJSON(input []byte) error
- func (ma *MixedcaseAddress) ValidChecksum() bool
- type PrettyAge
- type PrettyDuration
- type StorageSize
- type TryLock
- type UnprefixedAddress
- type UnprefixedHash
- type WPLock
Constants ¶
const ( // HashLength is the expected length of the hash HashLength = 32 // AddressLength is the expected length of the address AddressLength = 20 )
Lengths of hashes and addresses in bytes.
Variables ¶
var ( Big1 = big.NewInt(1) Big2 = big.NewInt(2) Big3 = big.NewInt(3) Big0 = big.NewInt(0) Big32 = big.NewInt(32) Big256 = big.NewInt(256) Big257 = big.NewInt(257) )
Common big integers often used
var ( BigInt0 = NewBigInt(0) BigInt1 = NewBigInt(1) )
Common used BigInt numbers
var ( ErrBadFilenameSuffix = errors.New("filename suffix '_temp' is not allowed") ErrFileInUse = errors.New("another routine is saving or loading this file") ErrBadHeader = errors.New("wrong header") ErrBadVersion = errors.New("incompatible file version") ErrFileOpen = errors.New("failed to open the file") ErrBadHash = errors.New("hashVal -- loading file with bad hash value") ErrCorrupted = errors.New("failed to read the JSON file from the disk: hashVal -- loading file with bad hash value") )
Error Collection
Functions ¶
func AbsolutePath ¶
AbsolutePath returns datadir + filename, or filename if it is absolute.
func BytesToUint64 ¶
BytesToUint64 convert the byte slice to uint64. If the byte slice has length smaller than 8, 0 is returned
func ErrCompose ¶
ErrCompose composes multiple errors into one error set follows the input orders
func ErrContains ¶
ErrContains check if the target error can be found in source error return true if the error can be found, else, return false
func ErrExtend ¶
ErrExtend combine multiple errors into one error set The input can either be error or errorset, where the extension will be located on the end
func FromHex ¶
FromHex returns the bytes represented by the hexadecimal string s. s may be prefixed with "0x".
func Hex2BytesFixed ¶
Hex2BytesFixed returns bytes of a specified fixed length flen.
func IsHexAddress ¶
IsHexAddress verifies whether a string can represent a valid hex-encoded Ethereum address or not.
func LeftPadBytes ¶
LeftPadBytes zero-pads slice to the left up to length l.
func LoadDxJSON ¶
LoadDxJSON reads the given file and unmarshal its content. It adds compatibility comparing to original file
func Lock ¶
func Lock(locks ...*TryLock)
Lock locks all locks at once. The Lock will not cause dead lock
func MakeName ¶
MakeName creates a node name that follows the ethereum convention for such names. It adds the operation system name and Go runtime version the name.
func PrintDepricationWarning ¶
func PrintDepricationWarning(str string)
PrintDepricationWarning prinst the given string in a box using fmt.Println.
func Report ¶
func Report(extra ...interface{})
Report gives off a warning requesting the user to submit an issue to the github tracker.
func RightPadBytes ¶
RightPadBytes zero-pads slice to the right up to length l.
func SaveDxJSON ¶
SaveDxJSON saves the metadata, data hash, and data into a file ended with .json and .json_temp
func ToHexArray ¶
ToHexArray creates a array of hex-string based on []byte
func Uint64ToByte ¶
Uint64ToByte convert the uint64 number to byte.
Types ¶
type Address ¶
type Address [AddressLength]byte
Address represents the 20 byte address of an Ethereum account.
func BigToAddress ¶
BigToAddress returns Address with byte values of b. If b is larger than len(h), b will be cropped from the left.
func BytesToAddress ¶
BytesToAddress returns Address with value b. If b is larger than len(h), b will be cropped from the left.
func HexToAddress ¶
HexToAddress returns Address with byte values of s. If s is larger than len(h), s will be cropped from the left.
func (Address) Format ¶
Format implements fmt.Formatter, forcing the byte slice to be formatted as is, without going through the stringer interface used for logging.
func (Address) MarshalText ¶
MarshalText returns the hex representation of a.
func (*Address) SetBytes ¶
SetBytes sets the address to the value of b. If b is larger than len(a) it will panic.
func (*Address) UnmarshalJSON ¶
UnmarshalJSON parses a hash in hex syntax.
func (*Address) UnmarshalText ¶
UnmarshalText parses a hash in hex syntax.
type BigInt ¶
type BigInt struct {
// contains filtered or unexported fields
}
func NewBigIntFloat64 ¶
NewBigIntFloat64 will be used to convert the float64 data type into BigInt data type
func NewBigIntUint64 ¶
NewBigIntUint64 will be used to convert the uint64 data type into BigInt data type
func RandomBigInt ¶
func RandomBigInt() BigInt
RandomBigInt will randomly return a BigInt data between 0-1000
func RandomBigIntRange ¶
RandomBigIntRange will randomly return a BigInt data based on the range provided the input must be greater than 0
func (BigInt) DivNoRemaining ¶
DivNoRemaining will check if the division will give any remainders
func (BigInt) DivUint64 ¶
DivUint64 will perform the division operation between BigInt data and uint64 data
func (BigInt) DivWithFloatResult ¶
DivWithFloatResult specifies division between two BigInt values and return with float64 result
func (BigInt) DivWithFloatResultUint64 ¶
DivWithFloatResultUint64 specifies division between BigInt and uint64 values and return with float64 result
func (BigInt) IsEqual ¶
IsEqual will be used to indicate if two BigInt data are equivalent to each other. Return true if two BigInt are equivalent
func (BigInt) MarshalJSON ¶
MarshalJSON provided JSON encoding rules for BigInt data type
func (BigInt) MultFloat64 ¶
MultFloat64 will perform the multiplication operation between BigInt data and float64 data
func (BigInt) MultInt64 ¶
MultInt will perform the multiplication operation between BigInt data and int64 data
func (BigInt) MultUint64 ¶
MultUint64 will perform the multiplication operation between BigInt data and uint64 data
func (BigInt) SubUint64 ¶
SubUint64 will perform the subtraction operation for BigInt and uint64 data`
func (*BigInt) UnmarshalJSON ¶
UnmarshalJSON provided JSON decoding rules for BigInt data type
type Hash ¶
type Hash [HashLength]byte
Hash represents the 32 byte Keccak256 hash of arbitrary data.
func BigToHash ¶
BigToHash sets byte representation of b to hash. If b is larger than len(h), b will be cropped from the left.
func BytesToHash ¶
BytesToHash sets b to hash. If b is larger than len(h), b will be cropped from the left.
func HexToHash ¶
HexToHash sets byte representation of s to hash. If b is larger than len(h), b will be cropped from the left.
func (Hash) Format ¶
Format implements fmt.Formatter, forcing the byte slice to be formatted as is, without going through the stringer interface used for logging.
func (Hash) MarshalText ¶
MarshalText returns the hex representation of h.
func (*Hash) SetBytes ¶
SetBytes sets the hash to the value of b. If b is larger than len(h), b will be cropped from the left.
func (Hash) String ¶
String implements the stringer interface and is used also by the logger when doing full logging into a file.
func (Hash) TerminalString ¶
TerminalString implements log.TerminalStringer, formatting a string for console output during logging.
func (*Hash) UnmarshalJSON ¶
UnmarshalJSON parses a hash in hex syntax.
func (*Hash) UnmarshalText ¶
UnmarshalText parses a hash in hex syntax.
type Metadata ¶
type Metadata struct {
Header, Version string
}
Metadata defines the data file header and version
type MixedcaseAddress ¶
type MixedcaseAddress struct {
// contains filtered or unexported fields
}
MixedcaseAddress retains the original string, which may or may not be correctly checksummed
func NewMixedcaseAddress ¶
func NewMixedcaseAddress(addr Address) MixedcaseAddress
NewMixedcaseAddress constructor (mainly for testing)
func NewMixedcaseAddressFromString ¶
func NewMixedcaseAddressFromString(hexaddr string) (*MixedcaseAddress, error)
NewMixedcaseAddressFromString is mainly meant for unit-testing
func (*MixedcaseAddress) Address ¶
func (ma *MixedcaseAddress) Address() Address
Address returns the address
func (*MixedcaseAddress) MarshalJSON ¶
func (ma *MixedcaseAddress) MarshalJSON() ([]byte, error)
MarshalJSON marshals the original value
func (*MixedcaseAddress) Original ¶
func (ma *MixedcaseAddress) Original() string
Original returns the mixed-case input string
func (*MixedcaseAddress) String ¶
func (ma *MixedcaseAddress) String() string
String implements fmt.Stringer
func (*MixedcaseAddress) UnmarshalJSON ¶
func (ma *MixedcaseAddress) UnmarshalJSON(input []byte) error
UnmarshalJSON parses MixedcaseAddress
func (*MixedcaseAddress) ValidChecksum ¶
func (ma *MixedcaseAddress) ValidChecksum() bool
ValidChecksum returns true if the address has valid checksum
type PrettyAge ¶
PrettyAge is a pretty printed version of a time.Duration value that rounds the values up to a single most significant unit, days/weeks/years included.
type PrettyDuration ¶
PrettyDuration is a pretty printed version of a time.Duration value that cuts the unnecessary precision off from the formatted textual representation.
func (PrettyDuration) String ¶
func (d PrettyDuration) String() string
String implements the Stringer interface, allowing pretty printing of duration values rounded to three decimals.
type StorageSize ¶
type StorageSize float64
StorageSize is a wrapper around a float value that supports user friendly formatting.
func (StorageSize) String ¶
func (s StorageSize) String() string
String implements the stringer interface.
func (StorageSize) TerminalString ¶
func (s StorageSize) TerminalString() string
TerminalString implements log.TerminalStringer, formatting a string for console output during logging.
type TryLock ¶
type TryLock struct {
// contains filtered or unexported fields
}
TryLock provides TryLock method in addition to sync.Mutex
type UnprefixedAddress ¶
type UnprefixedAddress Address
UnprefixedAddress allows marshaling an Address without 0x prefix.
func (UnprefixedAddress) MarshalText ¶
func (a UnprefixedAddress) MarshalText() ([]byte, error)
MarshalText encodes the address as hex.
func (*UnprefixedAddress) UnmarshalText ¶
func (a *UnprefixedAddress) UnmarshalText(input []byte) error
UnmarshalText decodes the address from hex. The 0x prefix is optional.
type UnprefixedHash ¶
type UnprefixedHash Hash
UnprefixedHash allows marshaling a Hash without 0x prefix.
func (UnprefixedHash) MarshalText ¶
func (h UnprefixedHash) MarshalText() ([]byte, error)
MarshalText encodes the hash as hex.
func (*UnprefixedHash) UnmarshalText ¶
func (h *UnprefixedHash) UnmarshalText(input []byte) error
UnmarshalText decodes the hash from hex. The 0x prefix is optional.
type WPLock ¶
type WPLock struct {
// contains filtered or unexported fields
}
WP lock, write Prior lock is a lock built based on sync.WRLock. Just as WRLock, Write is an exclusive lock, and Read is a shared lock. WP adds an extra behaviour that read lock is also blocked while a write is waiting. So that an exclusive lock will not be starving when read lock is acquired extremely intensive
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package bitutil implements fast bitwise operations.
|
Package bitutil implements fast bitwise operations. |
Package hexutil implements hex encoding with 0x prefix.
|
Package hexutil implements hex encoding with 0x prefix. |
Package math provides integer math utilities.
|
Package math provides integer math utilities. |
Package mclock is a wrapper for a monotonic clock source
|
Package mclock is a wrapper for a monotonic clock source |
Package ThreadManager provides a utility for performing organized clean shutdown and quick shutdown of long running groups of threads, such as networking threads, background threads, or resources like databases.
|
Package ThreadManager provides a utility for performing organized clean shutdown and quick shutdown of long running groups of threads, such as networking threads, background threads, or resources like databases. |