go-srvc / mods / tickermod

github.com/go-srvc/mods/tickermod

pkg.go.dev source
go get github.com/go-srvc/mods/tickermod@v1.0.2

README

tickermod

tickermod runs a function on a fixed interval. The ticker stops when the function returns a non-nil error.

package main

import (
	"log/slog"
	"os"
	"time"

	"github.com/go-srvc/mods/logmod"
	"github.com/go-srvc/mods/sigmod"
	"github.com/go-srvc/mods/tickermod"
	"github.com/go-srvc/srvc"
)

func main() {
	srvc.RunAndExit(
		logmod.New(),
		sigmod.New(os.Interrupt),
		tickermod.New(
			tickermod.WithInterval(5*time.Second),
			tickermod.WithFunc(func() error {
				slog.Info("tick")
				return nil
			}),
		),
	)
}

Overview

Package tickermod provides ticker functionality as a module.

Constants

const (
	ErrMissingInterval = errStr("interval not set")
	ErrMissingTickFunc = errStr("tick function not set")
)
const ID = "tickermod"

Types

type Opt

type Opt func(*Ticker) error

type Ticker

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

func (*Ticker) ID

func (t *Ticker) ID() string

func (*Ticker) Init

func (t *Ticker) Init() error

func (*Ticker) Run

func (t *Ticker) Run() error

func (*Ticker) Stop

func (t *Ticker) Stop() error

Examples

ExampleNew

package main

import (
	"errors"
	"log/slog"
	"time"

	"github.com/go-srvc/mods/tickermod"
	"github.com/go-srvc/srvc"
)

func main() {
	srvc.RunAndExit(
		tickermod.New(
			tickermod.WithInterval(time.Second),
			tickermod.WithFunc(func() error {
				slog.Info("Hello from ticker")
				return errors.New("ticker error")
			}),
		),
	)
}