bernos / go-retry

Simple pkg for creating retryable funcs in go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

go-retry

Build Status GoDoc

go get github.com/bernos/go-retry

Simple pkg for creating retryable funcs in go. See simple example below. For more detail, check the go docs

package main

import (
	"fmt"
	"math/rand"
	"time"

	"github.com/bernos/go-retry"
)

func main() {
	r := retry.Retry(
		numberOrBust(128, 255),
		retry.MaxRetries(5),
		retry.BaseDelay(time.Millisecond))

	value, err := r()

	if err != nil {
		fmt.Printf("Bad luck! %s\n", err.Error())
	} else {
		fmt.Printf("Jackpot! You rolled a %d\n", value)
	}
}

// numberOrBust creates a func that chooses a random number between 0 and maxNumber
// and returns an error if that random number does not match the value of magicNumber
func numberOrBust(magicNumber int, maxNumber int) func() (interface{}, error) {
	return func() (interface{}, error) {
		guess := rand.Intn(maxNumber)

		if guess == magicNumber {
			return "Got it!", nil
		}

		return nil, fmt.Errorf("Want %d, got %d", magicNumber, guess)
	}
}

About

Simple pkg for creating retryable funcs in go


Languages

Language:Go 100.0%