Documentation ¶
Overview ¶
Package common is a generated protocol buffer package.
It is generated from these files:
common/types.proto
It has these top-level messages:
KVPair KI64Pair
nolint: gas
Index ¶
- Constants
- Variables
- func ASCIITrim(s string) string
- func Arr(items ...interface{}) []interface{}
- func Black(args ...interface{}) string
- func Blue(args ...interface{}) string
- func ColoredBytes(data []byte, textColor, bytesColor func(...interface{}) string) string
- func Connect(protoAddr string) (net.Conn, error)
- func Cyan(args ...interface{}) string
- func EnsureDir(dir string, mode os.FileMode) error
- func Exit(s string)
- func ExpUint64(a, b uint64) uint64
- func FileExists(filePath string) bool
- func Fingerprint(slice []byte) []byte
- func GetInt64BE(src []byte) int64
- func GetInt64LE(src []byte) int64
- func GetUint64BE(src []byte) uint64
- func GetUint64LE(src []byte) uint64
- func GoPath() string
- func Green(args ...interface{}) string
- func Int64FromWord256(word Word256) int64
- func IntInSlice(a int, list []int) bool
- func IsASCIIText(s string) bool
- func IsDirEmpty(name string) (bool, error)
- func IsEmpty(o interface{}) bool
- func IsHex(s string) bool
- func IsTypedNil(o interface{}) bool
- func IsZeros(slice []byte) bool
- func Kill() error
- func LeftPadBytes(slice []byte, l int) []byte
- func Magenta(args ...interface{}) string
- func MaxInt(a, b int) int
- func MaxInt16(a, b int16) int16
- func MaxInt32(a, b int32) int32
- func MaxInt64(a, b int64) int64
- func MaxInt8(a, b int8) int8
- func MaxUint(a, b uint) uint
- func MaxUint16(a, b uint16) uint16
- func MaxUint32(a, b uint32) uint32
- func MaxUint64(a, b uint64) uint64
- func MaxUint8(a, b uint8) uint8
- func MinInt(a, b int) int
- func MinInt16(a, b int16) int16
- func MinInt32(a, b int32) int32
- func MinInt64(a, b int64) int64
- func MinInt8(a, b int8) int8
- func MinUint(a, b uint) uint
- func MinUint16(a, b uint16) uint16
- func MinUint32(a, b uint32) uint32
- func MinUint64(a, b uint64) uint64
- func MinUint8(a, b uint8) uint8
- func MustReadFile(filePath string) []byte
- func MustWriteFile(filePath string, contents []byte, mode os.FileMode)
- func PanicConsensus(v interface{})
- func PanicCrisis(v interface{})
- func PanicQ(v interface{})
- func PanicSanity(v interface{})
- func ParseDateRange(dateRange string) (startDate, endDate time.Time, err error)
- func PrefixEndBytes(prefix []byte) []byte
- func Prompt(prompt string, defaultValue string) (string, error)
- func ProtocolAndAddress(listenAddr string) (string, string)
- func PutInt64BE(dest []byte, i int64)
- func PutInt64LE(dest []byte, i int64)
- func PutUint64BE(dest []byte, i uint64)
- func PutUint64LE(dest []byte, i uint64)
- func RandBytes(n int) []byte
- func RandFloat32() float32
- func RandFloat64() float64
- func RandInt() int
- func RandInt16() int16
- func RandInt31() int32
- func RandInt31n(n int32) int32
- func RandInt32() int32
- func RandInt63() int64
- func RandInt63n(n int64) int64
- func RandInt64() int64
- func RandIntn(n int) int
- func RandPerm(n int) []int
- func RandStr(length int) string
- func RandTime() time.Time
- func RandUint() uint
- func RandUint16() uint16
- func RandUint16Exp() uint16
- func RandUint32() uint32
- func RandUint32Exp() uint32
- func RandUint64() uint64
- func RandUint64Exp() uint64
- func ReadFile(filePath string) ([]byte, error)
- func Red(args ...interface{}) string
- func RightPadBytes(slice []byte, l int) []byte
- func SearchUint64s(a []uint64, x uint64) int
- func Seed(seed int64)
- func SplitAndTrim(s, sep, cutset string) []string
- func StringInSlice(a string, list []string) bool
- func StripHex(s string) string
- func Tempdir(prefix string) (*os.File, string)
- func Tempfile(prefix string) (*os.File, string)
- func TrapSignal(cb func())
- func TrimmedString(b []byte) string
- func Tuple256Split(t Tuple256) (Word256, Word256)
- func Uint64FromWord256(word Word256) uint64
- func White(args ...interface{}) string
- func WriteFile(filePath string, contents []byte, mode os.FileMode) error
- func WriteFileAtomic(filename string, data []byte, perm os.FileMode) error
- func Yellow(args ...interface{}) string
- type BaseService
- func (bs *BaseService) IsRunning() bool
- func (bs *BaseService) OnReset() error
- func (bs *BaseService) OnStart() error
- func (bs *BaseService) OnStop()
- func (bs *BaseService) Quit() <-chan struct{}
- func (bs *BaseService) Reset() error
- func (bs *BaseService) SetLogger(l log.Logger)
- func (bs *BaseService) Start() error
- func (bs *BaseService) Stop() error
- func (bs *BaseService) String() string
- func (bs *BaseService) Wait()
- type BitArray
- func (bA *BitArray) And(o *BitArray) *BitArray
- func (bA *BitArray) Bytes() []byte
- func (bA *BitArray) Copy() *BitArray
- func (bA *BitArray) GetIndex(i int) bool
- func (bA *BitArray) IsEmpty() bool
- func (bA *BitArray) IsFull() bool
- func (bA *BitArray) MarshalJSON() ([]byte, error)
- func (bA *BitArray) Not() *BitArray
- func (bA *BitArray) Or(o *BitArray) *BitArray
- func (bA *BitArray) PickRandom() (int, bool)
- func (bA *BitArray) SetIndex(i int, v bool) bool
- func (bA *BitArray) Size() int
- func (bA *BitArray) String() string
- func (bA *BitArray) StringIndented(indent string) string
- func (bA *BitArray) Sub(o *BitArray) *BitArray
- func (bA *BitArray) UnmarshalJSON(bz []byte) error
- func (bA *BitArray) Update(o *BitArray)
- type BufferCloser
- type CMap
- type Comparable
- type Error
- type FmtError
- type Heap
- func (h *Heap) Len() int64
- func (h *Heap) Peek() interface{}
- func (h *Heap) Pop() interface{}
- func (h *Heap) Push(value interface{}, priority int)
- func (h *Heap) PushBytes(value interface{}, priority []byte)
- func (h *Heap) PushComparable(value interface{}, priority Comparable)
- func (h *Heap) Update(value interface{}, priority Comparable)
- type HexBytes
- func (bz HexBytes) Bytes() []byte
- func (bz HexBytes) Format(s fmt.State, verb rune)
- func (bz HexBytes) Marshal() ([]byte, error)
- func (bz HexBytes) MarshalJSON() ([]byte, error)
- func (bz HexBytes) String() string
- func (bz *HexBytes) Unmarshal(data []byte) error
- func (bz *HexBytes) UnmarshalJSON(data []byte) error
- type KI64Pair
- type KI64Pairs
- type KVPair
- type KVPairs
- type PrefixedReader
- type Rand
- func (r *Rand) Bytes(n int) []byte
- func (r *Rand) Float32() float32
- func (r *Rand) Float64() float64
- func (r *Rand) Int() int
- func (r *Rand) Int16() int16
- func (r *Rand) Int31() int32
- func (r *Rand) Int31n(n int32) int32
- func (r *Rand) Int32() int32
- func (r *Rand) Int63() int64
- func (r *Rand) Int63n(n int64) int64
- func (r *Rand) Int64() int64
- func (r *Rand) Intn(n int) int
- func (r *Rand) Perm(n int) []int
- func (r *Rand) Seed(seed int64)
- func (r *Rand) Str(length int) string
- func (r *Rand) Time() time.Time
- func (r *Rand) Uint() uint
- func (r *Rand) Uint16() uint16
- func (r *Rand) Uint16Exp() uint16
- func (r *Rand) Uint32() uint32
- func (r *Rand) Uint32Exp() uint32
- func (r *Rand) Uint64() uint64
- func (r *Rand) Uint64Exp() uint64
- type RepeatTimer
- type Service
- type Task
- type TaskResult
- type TaskResultCh
- type TaskResultSet
- func (trs *TaskResultSet) Channels() []TaskResultCh
- func (trs *TaskResultSet) FirstError() error
- func (trs *TaskResultSet) FirstValue() interface{}
- func (trs *TaskResultSet) LatestResult(index int) (TaskResult, bool)
- func (trs *TaskResultSet) Reap() *TaskResultSet
- func (trs *TaskResultSet) Wait() *TaskResultSet
- type ThrottleTimer
- type Ticker
- type TickerMaker
- type Tuple256
- type Tuple256Slice
- type Uint64Slice
- type Word256
Constants ¶
const ( ANSIReset = "\x1b[0m" ANSIBright = "\x1b[1m" ANSIDim = "\x1b[2m" ANSIUnderscore = "\x1b[4m" ANSIBlink = "\x1b[5m" ANSIReverse = "\x1b[7m" ANSIHidden = "\x1b[8m" ANSIFgBlack = "\x1b[30m" ANSIFgRed = "\x1b[31m" ANSIFgGreen = "\x1b[32m" ANSIFgYellow = "\x1b[33m" ANSIFgBlue = "\x1b[34m" ANSIFgMagenta = "\x1b[35m" ANSIFgCyan = "\x1b[36m" ANSIFgWhite = "\x1b[37m" ANSIBgBlack = "\x1b[40m" ANSIBgRed = "\x1b[41m" ANSIBgGreen = "\x1b[42m" ANSIBgYellow = "\x1b[43m" ANSIBgBlue = "\x1b[44m" ANSIBgMagenta = "\x1b[45m" ANSIBgCyan = "\x1b[46m" ANSIBgWhite = "\x1b[47m" )
Variables ¶
var ( ErrAlreadyStarted = errors.New("already started") ErrAlreadyStopped = errors.New("already stopped") )
var ( Zero256 = Word256{0} One256 = Word256{1} )
var Fmt = func(format string, a ...interface{}) string { if len(a) == 0 { return format } return fmt.Sprintf(format, a...) }
Like fmt.Sprintf, but skips formatting if args are empty.
var TimeLayout = "2006-01-02" //this represents YYYY-MM-DD
TimeLayout helps to parse a date string of the format YYYY-MM-DD
Intended to be used with the following function: time.Parse(TimeLayout, date)
Functions ¶
func ASCIITrim ¶ added in v0.8.3
NOTE: Assumes that s is ASCII as per IsASCIIText(), otherwise panics.
func ColoredBytes ¶ added in v0.9.0
func Connect ¶
Connect dials the given address and returns a net.Conn. The protoAddr argument should be prefixed with the protocol, eg. "tcp://127.0.0.1:8080" or "unix:///tmp/test.sock"
func FileExists ¶
func Fingerprint ¶
Fingerprint returns the first 6 bytes of a byte slice. If the slice is less than 6 bytes, the fingerprint contains trailing zeroes.
func GetInt64BE ¶
func GetInt64LE ¶
func GetUint64BE ¶
func GetUint64LE ¶
func GoPath ¶
func GoPath() string
GoPath returns GOPATH env variable value. If it is not set, this function will try to call `go env GOPATH` subcommand.
func Int64FromWord256 ¶
func IntInSlice ¶
IntInSlice returns true if a is found in the list.
func IsASCIIText ¶ added in v0.8.2
Returns true if s is a non-empty printable non-tab ascii character.
func IsDirEmpty ¶
func IsTypedNil ¶ added in v0.8.0
func IsTypedNil(o interface{}) bool
Go lacks a simple and safe way to see if something is a typed nil. See:
func LeftPadBytes ¶
func MustReadFile ¶
func PanicConsensus ¶
func PanicConsensus(v interface{})
Indicates a failure of consensus. Someone was malicious or something has gone horribly wrong. These should really boot us into an "emergency-recover" mode XXX DEPRECATED
func PanicCrisis ¶
func PanicCrisis(v interface{})
A panic here means something has gone horribly wrong, in the form of data corruption or failure of the operating system. In a correct/healthy system, these should never fire. If they do, it's indicative of a much more serious problem. XXX DEPRECATED
func PanicQ ¶
func PanicQ(v interface{})
For those times when we're not sure if we should panic XXX DEPRECATED
func PanicSanity ¶
func PanicSanity(v interface{})
A panic resulting from a sanity check means there is a programmer error and some guarantee is not satisfied. XXX DEPRECATED
func ParseDateRange ¶
ParseDateRange parses a date range string of the format start:end
where the start and end date are of the format YYYY-MM-DD. The parsed dates are time.Time and will return the zero time for unbounded dates, ex: unbounded start: :2000-12-31 unbounded end: 2000-12-31:
func PrefixEndBytes ¶ added in v0.8.2
PrefixEndBytes returns the end byteslice for a noninclusive range that would include all byte slices for which the input is the prefix
func ProtocolAndAddress ¶
ProtocolAndAddress splits an address into the protocol and address components. For instance, "tcp://127.0.0.1:8080" will be split into "tcp" and "127.0.0.1:8080". If the address has no protocol prefix, the default is "tcp".
func PutInt64BE ¶
func PutInt64LE ¶
func PutUint64BE ¶
func PutUint64LE ¶
func RandFloat32 ¶
func RandFloat32() float32
func RandFloat64 ¶ added in v0.8.0
func RandFloat64() float64
func RandInt31n ¶ added in v0.8.0
func RandInt63n ¶ added in v0.8.0
func RandUint16 ¶
func RandUint16() uint16
func RandUint16Exp ¶
func RandUint16Exp() uint16
func RandUint32 ¶
func RandUint32() uint32
func RandUint32Exp ¶
func RandUint32Exp() uint32
func RandUint64 ¶
func RandUint64() uint64
func RandUint64Exp ¶
func RandUint64Exp() uint64
func RightPadBytes ¶
func SearchUint64s ¶
func SplitAndTrim ¶ added in v0.8.0
SplitAndTrim slices s into all subslices separated by sep and returns a slice of the string s with all leading and trailing Unicode code points contained in cutset removed. If sep is empty, SplitAndTrim splits after each UTF-8 sequence. First part is equivalent to strings.SplitN with a count of -1.
func StringInSlice ¶
StringInSlice returns true if a is found the list.
func TrapSignal ¶
func TrapSignal(cb func())
TrapSignal catches the SIGTERM and executes cb function. After that it exits with code 1.
func TrimmedString ¶
func Tuple256Split ¶
func Uint64FromWord256 ¶
func WriteFileAtomic ¶
WriteFileAtomic creates a temporary file with data and the perm given and swaps it atomically with filename if successful.
Types ¶
type BaseService ¶
Classical-inheritance-style service declarations. Services can be started, then stopped, then optionally restarted.
Users can override the OnStart/OnStop methods. In the absence of errors, these methods are guaranteed to be called at most once. If OnStart returns an error, service won't be marked as started, so the user can call Start again.
A call to Reset will panic, unless OnReset is overwritten, allowing OnStart/OnStop to be called again.
The caller must ensure that Start and Stop are not called concurrently.
It is ok to call Stop without calling Start first.
Typical usage:
type FooService struct { BaseService // private fields } func NewFooService() *FooService { fs := &FooService{ // init } fs.BaseService = *NewBaseService(log, "FooService", fs) return fs } func (fs *FooService) OnStart() error { fs.BaseService.OnStart() // Always call the overridden method. // initialize private fields // start subroutines, etc. } func (fs *FooService) OnStop() error { fs.BaseService.OnStop() // Always call the overridden method. // close/destroy private fields // stop subroutines, etc. }
func NewBaseService ¶
func NewBaseService(logger log.Logger, name string, impl Service) *BaseService
NewBaseService creates a new BaseService.
func (*BaseService) IsRunning ¶
func (bs *BaseService) IsRunning() bool
IsRunning implements Service by returning true or false depending on the service's state.
func (*BaseService) OnReset ¶
func (bs *BaseService) OnReset() error
OnReset implements Service by panicking.
func (*BaseService) OnStart ¶
func (bs *BaseService) OnStart() error
OnStart implements Service by doing nothing. NOTE: Do not put anything in here, that way users don't need to call BaseService.OnStart()
func (*BaseService) OnStop ¶
func (bs *BaseService) OnStop()
OnStop implements Service by doing nothing. NOTE: Do not put anything in here, that way users don't need to call BaseService.OnStop()
func (*BaseService) Quit ¶
func (bs *BaseService) Quit() <-chan struct{}
Quit Implements Service by returning a quit channel.
func (*BaseService) Reset ¶
func (bs *BaseService) Reset() error
Reset implements Service by calling OnReset callback (if defined). An error will be returned if the service is running.
func (*BaseService) SetLogger ¶
func (bs *BaseService) SetLogger(l log.Logger)
SetLogger implements Service by setting a logger.
func (*BaseService) Start ¶
func (bs *BaseService) Start() error
Start implements Service by calling OnStart (if defined). An error will be returned if the service is already running or stopped. Not to start the stopped service, you need to call Reset.
func (*BaseService) Stop ¶
func (bs *BaseService) Stop() error
Stop implements Service by calling OnStop (if defined) and closing quit channel. An error will be returned if the service is already stopped.
func (*BaseService) String ¶
func (bs *BaseService) String() string
String implements Servce by returning a string representation of the service.
type BitArray ¶
type BitArray struct { Bits int `json:"bits"` // NOTE: persisted via reflect, must be exported Elems []uint64 `json:"elems"` // NOTE: persisted via reflect, must be exported // contains filtered or unexported fields }
func NewBitArray ¶
There is no BitArray whose Size is 0. Use nil instead.
func (*BitArray) MarshalJSON ¶ added in v0.8.2
MarshalJSON implements json.Marshaler interface by marshaling bit array using a custom format: a string of '-' or 'x' where 'x' denotes the 1 bit.
func (*BitArray) PickRandom ¶
func (*BitArray) String ¶
String returns a string representation of BitArray: BA{<bit-string>}, where <bit-string> is a sequence of 'x' (1) and '_' (0). The <bit-string> includes spaces and newlines to help people. For a simple sequence of 'x' and '_' characters with no spaces or newlines, see the MarshalJSON() method. Example: "BA{_x_}" or "nil-BitArray" for nil.
func (*BitArray) StringIndented ¶
func (*BitArray) UnmarshalJSON ¶ added in v0.8.2
UnmarshalJSON implements json.Unmarshaler interface by unmarshaling a custom JSON description.
type BufferCloser ¶
NOTE: Not goroutine safe
func NewBufferCloser ¶
func NewBufferCloser(buf []byte) *BufferCloser
func (*BufferCloser) Close ¶
func (bc *BufferCloser) Close() error
func (*BufferCloser) WriteByte ¶
func (bc *BufferCloser) WriteByte(c byte) error
func (*BufferCloser) WriteString ¶
func (bc *BufferCloser) WriteString(s string) (n int, err error)
type CMap ¶
type CMap struct {
// contains filtered or unexported fields
}
CMap is a goroutine-safe map
type Comparable ¶
type Comparable interface {
Less(o interface{}) bool
}
type Error ¶ added in v0.8.0
type Error interface { Error() string Stacktrace() Error Trace(offset int, format string, args ...interface{}) Error Data() interface{} }
Usage with arbitrary error data:
```go
// Error construction type MyError struct{} var err1 error = NewErrorWithData(MyError{}, "my message") ... // Wrapping var err2 error = ErrorWrap(err1, "another message") if (err1 != err2) { panic("should be the same") ... // Error handling switch err2.Data().(type){ case MyError: ... default: ... }
```
func NewError ¶ added in v0.8.0
New Error with formatted message. The Error's Data will be a FmtError type.
func NewErrorWithData ¶ added in v0.9.0
func NewErrorWithData(data interface{}) Error
New Error with specified data.
type FmtError ¶ added in v0.9.0
type FmtError struct {
// contains filtered or unexported fields
}
FmtError is the data type for NewError() (e.g. NewError().Data().(FmtError)) Theoretically it could be used to switch on the format string.
```go
// Error construction var err1 error = NewError("invalid username %v", "BOB") var err2 error = NewError("another kind of error") ... // Error handling switch err1.Data().(cmn.FmtError).Format() { case "invalid username %v": ... case "another kind of error": ... default: ... }
```
type Heap ¶
type Heap struct {
// contains filtered or unexported fields
}
Example usage:
``` h := NewHeap()
h.Push("msg1", 1) h.Push("msg3", 3) h.Push("msg2", 2)
fmt.Println(h.Pop()) // msg1 fmt.Println(h.Pop()) // msg2 fmt.Println(h.Pop()) // msg3 ```
func (*Heap) PushComparable ¶ added in v0.7.0
func (h *Heap) PushComparable(value interface{}, priority Comparable)
func (*Heap) Update ¶
func (h *Heap) Update(value interface{}, priority Comparable)
type HexBytes ¶ added in v0.7.0
type HexBytes []byte
The main purpose of HexBytes is to enable HEX-encoding for json/encoding.
func (HexBytes) Bytes ¶ added in v0.7.0
Allow it to fulfill various interfaces in light-client, etc...
func (HexBytes) MarshalJSON ¶ added in v0.7.0
This is the point of Bytes.
func (*HexBytes) UnmarshalJSON ¶ added in v0.7.0
This is the point of Bytes.
type KI64Pair ¶ added in v0.7.0
type KI64Pair struct { Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Value int64 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"` }
Define these here for compatibility but use tmlibs/common.KI64Pair.
func (*KI64Pair) Descriptor ¶ added in v0.7.0
func (*KI64Pair) ProtoMessage ¶ added in v0.7.0
func (*KI64Pair) ProtoMessage()
type KVPair ¶ added in v0.7.0
type KVPair struct { Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` }
Define these here for compatibility but use tmlibs/common.KVPair.
func (*KVPair) Descriptor ¶ added in v0.7.0
func (*KVPair) ProtoMessage ¶ added in v0.7.0
func (*KVPair) ProtoMessage()
type PrefixedReader ¶
type PrefixedReader struct { Prefix []byte // contains filtered or unexported fields }
func NewPrefixedReader ¶
func NewPrefixedReader(prefix []byte, reader io.Reader) *PrefixedReader
type Rand ¶ added in v0.8.0
func (*Rand) Bytes ¶ added in v0.8.0
RandBytes returns n random bytes from the OS's source of entropy ie. via crypto/rand. It is not safe for cryptographic usage.
func (*Rand) Intn ¶ added in v0.8.0
RandIntn returns, as an int, a non-negative pseudo-random number in [0, n). It panics if n <= 0. It is not safe for cryptographic usage.
func (*Rand) Perm ¶ added in v0.8.0
RandPerm returns a pseudo-random permutation of n integers in [0, n). It is not safe for cryptographic usage.
func (*Rand) Str ¶ added in v0.8.0
Constructs an alphanumeric string of given length. It is not safe for cryptographic usage.
func (*Rand) Uint16Exp ¶ added in v0.8.0
Distributed pseudo-exponentially to test for various cases It is not safe for cryptographic usage.
func (*Rand) Uint32Exp ¶ added in v0.8.0
Distributed pseudo-exponentially to test for various cases It is not safe for cryptographic usage.
type RepeatTimer ¶
type RepeatTimer struct {
// contains filtered or unexported fields
}
RepeatTimer repeatedly sends a struct{}{} to `.Chan()` after each `dur` period. (It's good for keeping connections alive.) A RepeatTimer must be stopped, or it will keep a goroutine alive.
func NewRepeatTimer ¶
func NewRepeatTimer(name string, dur time.Duration) *RepeatTimer
NewRepeatTimer returns a RepeatTimer with a defaultTicker.
func NewRepeatTimerWithTickerMaker ¶ added in v0.6.0
func NewRepeatTimerWithTickerMaker(name string, dur time.Duration, tm TickerMaker) *RepeatTimer
NewRepeatTimerWithTicker returns a RepeatTimer with the given ticker maker.
func (*RepeatTimer) Chan ¶ added in v0.6.0
func (t *RepeatTimer) Chan() <-chan time.Time
func (*RepeatTimer) Stop ¶
func (t *RepeatTimer) Stop()
type Service ¶
type Service interface { // Start the service. // If it's already started or stopped, will return an error. // If OnStart() returns an error, it's returned by Start() Start() error OnStart() error // Stop the service. // If it's already stopped, will return an error. // OnStop must never error. Stop() error OnStop() // Reset the service. // Panics by default - must be overwritten to enable reset. Reset() error OnReset() error // Return true if the service is running IsRunning() bool // Quit returns a channel, which is closed once service is stopped. Quit() <-chan struct{} // String representation of the service String() string // SetLogger sets a logger. SetLogger(log.Logger) }
Service defines a service that can be started, stopped, and reset.
type Task ¶ added in v0.8.0
val: the value returned after task execution. err: the error returned during task completion. abort: tells Parallel to return, whether or not all tasks have completed.
type TaskResult ¶ added in v0.8.0
type TaskResult struct { Value interface{} Error error }
type TaskResultCh ¶ added in v0.8.0
type TaskResultCh <-chan TaskResult
type TaskResultSet ¶ added in v0.8.0
type TaskResultSet struct {
// contains filtered or unexported fields
}
func Parallel ¶
func Parallel(tasks ...Task) (trs *TaskResultSet, ok bool)
Run tasks in parallel, with ability to abort early. Returns ok=false iff any of the tasks returned abort=true. NOTE: Do not implement quit features here. Instead, provide convenient concurrent quit-like primitives, passed implicitly via Task closures. (e.g. it's not Parallel's concern how you quit/abort your tasks).
func (*TaskResultSet) Channels ¶ added in v0.8.0
func (trs *TaskResultSet) Channels() []TaskResultCh
func (*TaskResultSet) FirstError ¶ added in v0.8.0
func (trs *TaskResultSet) FirstError() error
Returns the firstmost (by task index) error as discovered by all previous Reap() calls.
func (*TaskResultSet) FirstValue ¶ added in v0.8.0
func (trs *TaskResultSet) FirstValue() interface{}
Returns the firstmost (by task index) error as discovered by all previous Reap() calls.
func (*TaskResultSet) LatestResult ¶ added in v0.8.0
func (trs *TaskResultSet) LatestResult(index int) (TaskResult, bool)
func (*TaskResultSet) Reap ¶ added in v0.8.0
func (trs *TaskResultSet) Reap() *TaskResultSet
NOTE: Not concurrency safe. Writes results to trs.results without waiting for all tasks to complete.
func (*TaskResultSet) Wait ¶ added in v0.8.2
func (trs *TaskResultSet) Wait() *TaskResultSet
NOTE: Not concurrency safe. Like Reap() but waits until all tasks have returned or panic'd.
type ThrottleTimer ¶
type ThrottleTimer struct { Name string Ch chan struct{} // contains filtered or unexported fields }
ThrottleTimer fires an event at most "dur" after each .Set() call. If a short burst of .Set() calls happens, ThrottleTimer fires once. If a long continuous burst of .Set() calls happens, ThrottleTimer fires at most once every "dur".
func NewThrottleTimer ¶
func NewThrottleTimer(name string, dur time.Duration) *ThrottleTimer
func (*ThrottleTimer) Set ¶
func (t *ThrottleTimer) Set()
func (*ThrottleTimer) Stop ¶
func (t *ThrottleTimer) Stop() bool
For ease of .Stop()'ing services before .Start()'ing them, we ignore .Stop()'s on nil ThrottleTimers
func (*ThrottleTimer) Unset ¶
func (t *ThrottleTimer) Unset()
type Ticker ¶ added in v0.6.0
type Ticker interface { // Never changes, never closes. Chan() <-chan time.Time // Stopping a stopped Ticker will panic. Stop() }
Ticker is a basic ticker interface.
type TickerMaker ¶ added in v0.6.0
Used by RepeatTimer the first time, and every time it's Reset() after Stop().
func NewLogicalTickerMaker ¶ added in v0.6.0
func NewLogicalTickerMaker(source chan time.Time) TickerMaker
Construct a TickerMaker that always uses `source`. It's useful for simulating a deterministic clock.
type Tuple256Slice ¶
type Tuple256Slice []Tuple256
func (Tuple256Slice) Len ¶
func (p Tuple256Slice) Len() int
func (Tuple256Slice) Less ¶
func (p Tuple256Slice) Less(i, j int) bool
func (Tuple256Slice) Sort ¶
func (p Tuple256Slice) Sort()
func (Tuple256Slice) Swap ¶
func (p Tuple256Slice) Swap(i, j int)
type Uint64Slice ¶
type Uint64Slice []uint64
func (Uint64Slice) Len ¶
func (p Uint64Slice) Len() int
func (Uint64Slice) Less ¶
func (p Uint64Slice) Less(i, j int) bool
func (Uint64Slice) Search ¶
func (p Uint64Slice) Search(x uint64) int
func (Uint64Slice) Sort ¶
func (p Uint64Slice) Sort()
func (Uint64Slice) Swap ¶
func (p Uint64Slice) Swap(i, j int)
type Word256 ¶
type Word256 [32]byte