common

package
Version: v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2020 License: Apache-2.0 Imports: 27 Imported by: 47

Documentation

Overview

Package common contains various helper functions.

Index

Constants

View Source
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

View Source
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

View Source
var (
	BigInt0 = NewBigInt(0)
	BigInt1 = NewBigInt(1)
)

Common used BigInt numbers

View Source
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

func AbsolutePath(datadir string, filename string) string

AbsolutePath returns datadir + filename, or filename if it is absolute.

func Bytes2Hex

func Bytes2Hex(d []byte) string

Bytes2Hex returns the hexadecimal encoding of d.

func BytesToUint64

func BytesToUint64(b []byte) uint64

BytesToUint64 convert the byte slice to uint64. If the byte slice has length smaller than 8, 0 is returned

func CopyBytes

func CopyBytes(b []byte) (copiedBytes []byte)

CopyBytes returns an exact copy of the provided bytes.

func ErrCompose

func ErrCompose(errs ...error) error

ErrCompose composes multiple errors into one error set follows the input orders

func ErrContains

func ErrContains(src, tar error) bool

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

func ErrExtend(err, extension error) error

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 FileExist

func FileExist(filePath string) bool

FileExist checks if a file exists at filePath.

func FromHex

func FromHex(s string) []byte

FromHex returns the bytes represented by the hexadecimal string s. s may be prefixed with "0x".

func Hex2Bytes

func Hex2Bytes(str string) []byte

Hex2Bytes returns the bytes represented by the hexadecimal string str.

func Hex2BytesFixed

func Hex2BytesFixed(str string, flen int) []byte

Hex2BytesFixed returns bytes of a specified fixed length flen.

func IsHexAddress

func IsHexAddress(s string) bool

IsHexAddress verifies whether a string can represent a valid hex-encoded Ethereum address or not.

func LeftPadBytes

func LeftPadBytes(slice []byte, l int) []byte

LeftPadBytes zero-pads slice to the left up to length l.

func LoadDxJSON

func LoadDxJSON(meta Metadata, filename string, val interface{}) error

LoadDxJSON reads the given file and unmarshal its content. It adds compatibility comparing to original file

func LoadJSON

func LoadJSON(file string, val interface{}) error

LoadJSON reads the given file and unmarshals its content.

func Lock

func Lock(locks ...*TryLock)

Lock locks all locks at once. The Lock will not cause dead lock

func MakeName

func MakeName(name, version string) string

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

func RightPadBytes(slice []byte, l int) []byte

RightPadBytes zero-pads slice to the right up to length l.

func SaveDxJSON

func SaveDxJSON(meta Metadata, filename string, val interface{}) error

SaveDxJSON saves the metadata, data hash, and data into a file ended with .json and .json_temp

func ToHex deprecated

This function has been deprecated.
func ToHex(b []byte) string

ToHex returns the hex representation of b, prefixed with '0x'. For empty slices, the return value is "0x0".

Deprecated: use hexutil.Encode instead.

func ToHexArray

func ToHexArray(b [][]byte) []string

ToHexArray creates a array of hex-string based on []byte

func Uint64ToByte

func Uint64ToByte(num uint64) []byte

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

func BigToAddress(b *big.Int) Address

BigToAddress returns Address with byte values of b. If b is larger than len(h), b will be cropped from the left.

func BytesToAddress

func BytesToAddress(b []byte) Address

BytesToAddress returns Address with value b. If b is larger than len(h), b will be cropped from the left.

func HexToAddress

func HexToAddress(s string) Address

HexToAddress returns Address with byte values of s. If s is larger than len(h), s will be cropped from the left.

func (Address) Big

func (a Address) Big() *big.Int

Big converts an address to a big integer.

func (Address) Bytes

func (a Address) Bytes() []byte

Bytes gets the string representation of the underlying address.

func (Address) Format

func (a Address) Format(s fmt.State, c rune)

Format implements fmt.Formatter, forcing the byte slice to be formatted as is, without going through the stringer interface used for logging.

func (Address) Hash

func (a Address) Hash() Hash

Hash converts an address to a hash by left-padding it with zeros.

func (Address) Hex

func (a Address) Hex() string

Hex returns an EIP55-compliant hex string representation of the address.

func (Address) MarshalText

func (a Address) MarshalText() ([]byte, error)

MarshalText returns the hex representation of a.

func (*Address) Scan

func (a *Address) Scan(src interface{}) error

Scan implements Scanner for database/sql.

func (*Address) SetBytes

func (a *Address) SetBytes(b []byte)

SetBytes sets the address to the value of b. If b is larger than len(a) it will panic.

func (Address) String

func (a Address) String() string

String implements fmt.Stringer.

func (*Address) UnmarshalJSON

func (a *Address) UnmarshalJSON(input []byte) error

UnmarshalJSON parses a hash in hex syntax.

func (*Address) UnmarshalText

func (a *Address) UnmarshalText(input []byte) error

UnmarshalText parses a hash in hex syntax.

func (Address) Value

func (a Address) Value() (driver.Value, error)

Value implements valuer for database/sql.

type BigInt

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

func NewBigInt

func NewBigInt(x int64) BigInt

NewBigInt will be used to convert the int64 data type into BigInt data type

func NewBigIntFloat64

func NewBigIntFloat64(x float64) BigInt

NewBigIntFloat64 will be used to convert the float64 data type into BigInt data type

func NewBigIntUint64

func NewBigIntUint64(x uint64) BigInt

NewBigIntUint64 will be used to convert the uint64 data type into BigInt data type

func PtrBigInt

func PtrBigInt(x *big.Int) (y BigInt)

PtrBigInt convert the pointer version of big.Int to BigInt type

func RandomBigInt

func RandomBigInt() BigInt

RandomBigInt will randomly return a BigInt data between 0-1000

func RandomBigIntRange

func RandomBigIntRange(x BigInt) (random BigInt, err error)

RandomBigIntRange will randomly return a BigInt data based on the range provided the input must be greater than 0

func (BigInt) Add

func (x BigInt) Add(y BigInt) (sum BigInt)

Add will perform the addition operation for BigInt data

func (BigInt) AddInt64

func (x BigInt) AddInt64(y int64) (sum BigInt)

AddInt64 will perform the addition operation for BigInt and int64 data

func (BigInt) AddUint64

func (x BigInt) AddUint64(y uint64) (sum BigInt)

AddUint64 will perform the addition operation for BigInt and uint64 data

func (BigInt) BigIntPtr

func (x BigInt) BigIntPtr() *big.Int

BigIntPtr will return the pointer version of the big.Int

func (BigInt) Cmp

func (x BigInt) Cmp(y BigInt) (result int)

Cmp will compare two BigInt Data x == y 0 x > y 1 x < y -1

func (BigInt) CmpUint64

func (x BigInt) CmpUint64(y uint64) (result int)

CmpUint64 will compare BigInt data with Uint64 data

func (*BigInt) DecodeRLP

func (x *BigInt) DecodeRLP(st *rlp.Stream) error

DecodeRLP decode rlp bytes to a BigInt

func (BigInt) Div

func (x BigInt) Div(y BigInt) (quotient BigInt)

Div will perform the division operation between BigInt data

func (BigInt) DivNoRemaining

func (x BigInt) DivNoRemaining(y uint64) (noRemaining bool)

DivNoRemaining will check if the division will give any remainders

func (BigInt) DivUint64

func (x BigInt) DivUint64(y uint64) (quotient BigInt)

DivUint64 will perform the division operation between BigInt data and uint64 data

func (BigInt) DivWithFloatResult

func (x BigInt) DivWithFloatResult(y BigInt) (quotient float64)

DivWithFloatResult specifies division between two BigInt values and return with float64 result

func (BigInt) DivWithFloatResultUint64

func (x BigInt) DivWithFloatResultUint64(y uint64) (quotient float64)

DivWithFloatResultUint64 specifies division between BigInt and uint64 values and return with float64 result

func (BigInt) EncodeRLP

func (x BigInt) EncodeRLP(w io.Writer) error

EncodeRLP encode a BigInt to rlp bytes

func (BigInt) Float64

func (x BigInt) Float64() (result float64)

float64 will convert the BigInt data type into float64 data type

func (BigInt) IsEqual

func (x BigInt) IsEqual(y BigInt) bool

IsEqual will be used to indicate if two BigInt data are equivalent to each other. Return true if two BigInt are equivalent

func (BigInt) IsNeg

func (x BigInt) IsNeg() bool

IsNeg will be used to check if the BigInt is negative

func (BigInt) MarshalJSON

func (x BigInt) MarshalJSON() ([]byte, error)

MarshalJSON provided JSON encoding rules for BigInt data type

func (BigInt) Mult

func (x BigInt) Mult(y BigInt) (prod BigInt)

Mult will perform the multiplication operation for BigInt data

func (BigInt) MultFloat64

func (x BigInt) MultFloat64(y float64) (prod BigInt)

MultFloat64 will perform the multiplication operation between BigInt data and float64 data

func (BigInt) MultInt64

func (x BigInt) MultInt64(y int64) (prod BigInt)

MultInt will perform the multiplication operation between BigInt data and int64 data

func (BigInt) MultUint64

func (x BigInt) MultUint64(y uint64) (prod BigInt)

MultUint64 will perform the multiplication operation between BigInt data and uint64 data

func (BigInt) SetInt64

func (x BigInt) SetInt64(y int64) BigInt

func (BigInt) Sign

func (x BigInt) Sign() int

func (BigInt) String

func (x BigInt) String() string

String will return the string version of the BigInt

func (BigInt) Sub

func (x BigInt) Sub(y BigInt) (diff BigInt)

Sub will perform the subtraction operation for BigInt data

func (BigInt) SubInt64

func (x BigInt) SubInt64(y int64) (diff BigInt)

SubInt64 will perform the subtraction operation for BigInt and int64 data

func (BigInt) SubUint64

func (x BigInt) SubUint64(y uint64) (diff BigInt)

SubUint64 will perform the subtraction operation for BigInt and uint64 data`

func (*BigInt) UnmarshalJSON

func (x *BigInt) UnmarshalJSON(val []byte) error

UnmarshalJSON provided JSON decoding rules for BigInt data type

type ErrorSet

type ErrorSet struct {
	ErrSet []error
}

ErrorSet defines a collection of errors

func (ErrorSet) Error

func (es ErrorSet) Error() string

Error implements the error interface convert error into a string

type Hash

type Hash [HashLength]byte

Hash represents the 32 byte Keccak256 hash of arbitrary data.

func BigToHash

func BigToHash(b *big.Int) Hash

BigToHash sets byte representation of b to hash. If b is larger than len(h), b will be cropped from the left.

func BytesToHash

func BytesToHash(b []byte) Hash

BytesToHash sets b to hash. If b is larger than len(h), b will be cropped from the left.

func HexToHash

func HexToHash(s string) Hash

HexToHash sets byte representation of s to hash. If b is larger than len(h), b will be cropped from the left.

func (Hash) Big

func (h Hash) Big() *big.Int

Big converts a hash to a big integer.

func (Hash) Bytes

func (h Hash) Bytes() []byte

Bytes gets the byte representation of the underlying hash.

func (Hash) Format

func (h Hash) Format(s fmt.State, c rune)

Format implements fmt.Formatter, forcing the byte slice to be formatted as is, without going through the stringer interface used for logging.

func (Hash) Generate

func (h Hash) Generate(rand *rand.Rand, size int) reflect.Value

Generate implements testing/quick.Generator.

func (Hash) Hex

func (h Hash) Hex() string

Hex converts a hash to a hex string.

func (Hash) MarshalText

func (h Hash) MarshalText() ([]byte, error)

MarshalText returns the hex representation of h.

func (*Hash) Scan

func (h *Hash) Scan(src interface{}) error

Scan implements Scanner for database/sql.

func (*Hash) SetBytes

func (h *Hash) SetBytes(b []byte)

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

func (h Hash) String() string

String implements the stringer interface and is used also by the logger when doing full logging into a file.

func (Hash) TerminalString

func (h Hash) TerminalString() string

TerminalString implements log.TerminalStringer, formatting a string for console output during logging.

func (*Hash) UnmarshalJSON

func (h *Hash) UnmarshalJSON(input []byte) error

UnmarshalJSON parses a hash in hex syntax.

func (*Hash) UnmarshalText

func (h *Hash) UnmarshalText(input []byte) error

UnmarshalText parses a hash in hex syntax.

func (Hash) Value

func (h Hash) Value() (driver.Value, error)

Value implements valuer for database/sql.

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

type PrettyAge time.Time

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.

func (PrettyAge) String

func (t PrettyAge) String() string

String implements the Stringer interface, allowing pretty printing of duration values rounded to the most significant time unit.

type PrettyDuration

type PrettyDuration time.Duration

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

func (*TryLock) Lock

func (tl *TryLock) Lock()

Lock lock the TryLock

func (*TryLock) TryLock

func (tl *TryLock) TryLock() bool

TryLock try to lock the lock. if succeed, return true. Else return false immediately

func (*TryLock) Unlock

func (tl *TryLock) Unlock()

Unlock unlock the TryLock

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

func (*WPLock) Lock

func (wp *WPLock) Lock()

Lock is the exclusive lock

func (*WPLock) RLock

func (wp *WPLock) RLock()

RLock locks for read

func (*WPLock) RUnlock

func (wp *WPLock) RUnlock()

RUnlock unlocks the read

func (*WPLock) Unlock

func (wp *WPLock) Unlock()

Unlock release the exclusive lock

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL