meterpb

package
v0.0.0-...-ac0bb94 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2025 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithMeterApiClientFactory

func WithMeterApiClientFactory(f func(name string) (traits.MeterApiClient, error)) router.Option

WithMeterApiClientFactory instructs the router to create a new client the first time Get is called for that name.

func WithMeterInfoClientFactory

func WithMeterInfoClientFactory(f func(name string) (traits.MeterInfoClient, error)) router.Option

WithMeterInfoClientFactory instructs the router to create a new client the first time Get is called for that name.

Types

type ApiRouter

type ApiRouter struct {
	traits.UnimplementedMeterApiServer

	router.Router
}

ApiRouter is a traits.MeterApiServer that allows routing named requests to specific traits.MeterApiClient

func NewApiRouter

func NewApiRouter(opts ...router.Option) *ApiRouter

func (*ApiRouter) Add

func (r *ApiRouter) Add(name string, client any) any

Add extends Router.Add to panic if client is not of type traits.MeterApiClient.

func (*ApiRouter) AddMeterApiClient

func (r *ApiRouter) AddMeterApiClient(name string, client traits.MeterApiClient) traits.MeterApiClient

func (*ApiRouter) GetMeterApiClient

func (r *ApiRouter) GetMeterApiClient(name string) (traits.MeterApiClient, error)

func (*ApiRouter) GetMeterReading

func (r *ApiRouter) GetMeterReading(ctx context.Context, request *traits.GetMeterReadingRequest) (*traits.MeterReading, error)

func (*ApiRouter) HoldsType

func (r *ApiRouter) HoldsType(client any) bool

func (*ApiRouter) PullMeterReadings

func (*ApiRouter) Register

func (r *ApiRouter) Register(server grpc.ServiceRegistrar)

func (*ApiRouter) RemoveMeterApiClient

func (r *ApiRouter) RemoveMeterApiClient(name string) traits.MeterApiClient

type ApiWrapper

type ApiWrapper struct {
	traits.MeterApiClient
	// contains filtered or unexported fields
}

func WrapApi

func WrapApi(server traits.MeterApiServer) *ApiWrapper

WrapApi adapts a traits.MeterApiServer and presents it as a traits.MeterApiClient

func (*ApiWrapper) Unwrap

func (w *ApiWrapper) Unwrap() any

Unwrap implements wrap.Unwrapper and returns the underlying server instance as an unknown type.

func (*ApiWrapper) UnwrapServer

func (w *ApiWrapper) UnwrapServer() traits.MeterApiServer

UnwrapServer returns the underlying server instance.

func (*ApiWrapper) UnwrapService

func (w *ApiWrapper) UnwrapService() (grpc.ClientConnInterface, grpc.ServiceDesc)

type InfoRouter

type InfoRouter struct {
	traits.UnimplementedMeterInfoServer

	router.Router
}

InfoRouter is a traits.MeterInfoServer that allows routing named requests to specific traits.MeterInfoClient

func NewInfoRouter

func NewInfoRouter(opts ...router.Option) *InfoRouter

func (*InfoRouter) Add

func (r *InfoRouter) Add(name string, client any) any

Add extends Router.Add to panic if client is not of type traits.MeterInfoClient.

func (*InfoRouter) AddMeterInfoClient

func (r *InfoRouter) AddMeterInfoClient(name string, client traits.MeterInfoClient) traits.MeterInfoClient

func (*InfoRouter) DescribeMeterReading

func (r *InfoRouter) DescribeMeterReading(ctx context.Context, request *traits.DescribeMeterReadingRequest) (*traits.MeterReadingSupport, error)

func (*InfoRouter) GetMeterInfoClient

func (r *InfoRouter) GetMeterInfoClient(name string) (traits.MeterInfoClient, error)

func (*InfoRouter) HoldsType

func (r *InfoRouter) HoldsType(client any) bool

func (*InfoRouter) Register

func (r *InfoRouter) Register(server grpc.ServiceRegistrar)

func (*InfoRouter) RemoveMeterInfoClient

func (r *InfoRouter) RemoveMeterInfoClient(name string) traits.MeterInfoClient

type InfoServer

type InfoServer struct {
	traits.UnimplementedMeterInfoServer
	MeterReading *traits.MeterReadingSupport
}

type InfoWrapper

type InfoWrapper struct {
	traits.MeterInfoClient
	// contains filtered or unexported fields
}

func WrapInfo

func WrapInfo(server traits.MeterInfoServer) *InfoWrapper

WrapInfo adapts a traits.MeterInfoServer and presents it as a traits.MeterInfoClient

func (*InfoWrapper) Unwrap

func (w *InfoWrapper) Unwrap() any

Unwrap implements wrap.Unwrapper and returns the underlying server instance as an unknown type.

func (*InfoWrapper) UnwrapServer

func (w *InfoWrapper) UnwrapServer() traits.MeterInfoServer

UnwrapServer returns the underlying server instance.

func (*InfoWrapper) UnwrapService

func (w *InfoWrapper) UnwrapService() (grpc.ClientConnInterface, grpc.ServiceDesc)

type Model

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

func NewModel

func NewModel(opts ...resource.Option) *Model

func (*Model) GetMeterReading

func (m *Model) GetMeterReading(opts ...resource.ReadOption) (*traits.MeterReading, error)

func (*Model) PullMeterReadings

func (m *Model) PullMeterReadings(ctx context.Context, opts ...resource.ReadOption) <-chan PullMeterReadingChange

func (*Model) RecordReading

func (m *Model) RecordReading(val float32) (*traits.MeterReading, error)

RecordReading records a new usage value, updating end time to now.

func (*Model) Reset

func (m *Model) Reset() (*traits.MeterReading, error)

Reset resets the meter to zero, updating both start and end times to now.

func (*Model) UpdateMeterReading

func (m *Model) UpdateMeterReading(meterReading *traits.MeterReading, opts ...resource.WriteOption) (*traits.MeterReading, error)

type ModelServer

type ModelServer struct {
	traits.UnimplementedMeterApiServer
	// contains filtered or unexported fields
}

func NewModelServer

func NewModelServer(model *Model) *ModelServer

func (*ModelServer) GetMeterReading

func (m *ModelServer) GetMeterReading(_ context.Context, request *traits.GetMeterReadingRequest) (*traits.MeterReading, error)

func (*ModelServer) PullMeterReadings

func (*ModelServer) Register

func (m *ModelServer) Register(server *grpc.Server)

func (*ModelServer) Unwrap

func (m *ModelServer) Unwrap() any

type PullMeterReadingChange

type PullMeterReadingChange struct {
	Value      *traits.MeterReading
	ChangeTime time.Time
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL