correlationID

package
v0.10.1 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2023 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package "correlationID" provides primitives to interact with the AsyncAPI specification.

Code generated by github.com/lerenn/asyncapi-codegen version (devel) DO NOT EDIT.

Index

Constants

View Source
const (
	// CorrelationIDField is the name of the field that will contain the correlation ID
	CorrelationIDField = "correlation_id"
)

Variables

View Source
var (
	// Generic error for AsyncAPI generated code
	ErrAsyncAPI = errors.New("error when using AsyncAPI")

	// ErrContextCanceled is given when a given context is canceled
	ErrContextCanceled = fmt.Errorf("%w: context canceled", ErrAsyncAPI)

	// ErrNilBrokerController is raised when a nil broker controller is user
	ErrNilBrokerController = fmt.Errorf("%w: nil broker controller has been used", ErrAsyncAPI)

	// ErrNilAppSubscriber is raised when a nil app subscriber is user
	ErrNilAppSubscriber = fmt.Errorf("%w: nil app subscriber has been used", ErrAsyncAPI)

	// ErrNilClientSubscriber is raised when a nil client subscriber is user
	ErrNilClientSubscriber = fmt.Errorf("%w: nil client subscriber has been used", ErrAsyncAPI)

	// ErrAlreadySubscribedChannel is raised when a subscription is done twice
	// or more without unsubscribing
	ErrAlreadySubscribedChannel = fmt.Errorf("%w: the channel has already been subscribed", ErrAsyncAPI)

	// ErrSubscriptionCanceled is raised when expecting something and the subscription has been canceled before it happens
	ErrSubscriptionCanceled = fmt.Errorf("%w: the subscription has been canceled", ErrAsyncAPI)
)

Functions

This section is empty.

Types

type AppController

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

AppController is the structure that provides publishing capabilities to the developer and and connect the broker with the App

func NewAppController

func NewAppController(bs BrokerController) (*AppController, error)

NewAppController links the App to the broker

func (*AppController) Close

func (c *AppController) Close()

Close will clean up any existing resources on the controller

func (AppController) Errors

func (c AppController) Errors() <-chan Error

Errors will give back the channel that contains errors and that you can listen to handle errors Please take a look at Error struct form information on error

func (*AppController) PublishSmartylightingStreetlights10ActionStreetlightIDDim

func (c *AppController) PublishSmartylightingStreetlights10ActionStreetlightIDDim(params SmartylightingStreetlights10ActionStreetlightIDDimParameters, msg DimLightMessage) error

PublishSmartylightingStreetlights10ActionStreetlightIDDim will publish messages to 'smartylighting/streetlights/1/0/action/{streetlightId}/dim' channel

func (*AppController) SubscribeAll

func (c *AppController) SubscribeAll(as AppSubscriber) error

SubscribeAll will subscribe to channels without parameters on which the app is expecting messages. For channels with parameters, they should be subscribed independently.

func (*AppController) SubscribeSmartylightingStreetlights10EventStreetlightIDLightingMeasured

func (c *AppController) SubscribeSmartylightingStreetlights10EventStreetlightIDLightingMeasured(params SmartylightingStreetlights10EventStreetlightIDLightingMeasuredParameters, fn func(msg LightMeasuredMessage, done bool)) error

SubscribeSmartylightingStreetlights10EventStreetlightIDLightingMeasured will subscribe to new messages from 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured' channel.

Callback function 'fn' will be called each time a new message is received. The 'done' argument indicates when the subscription is canceled and can be used to clean up resources.

func (*AppController) UnsubscribeAll

func (c *AppController) UnsubscribeAll()

UnsubscribeAll will unsubscribe all remaining subscribed channels

func (*AppController) UnsubscribeSmartylightingStreetlights10EventStreetlightIDLightingMeasured

func (c *AppController) UnsubscribeSmartylightingStreetlights10EventStreetlightIDLightingMeasured(params SmartylightingStreetlights10EventStreetlightIDLightingMeasuredParameters)

UnsubscribeSmartylightingStreetlights10EventStreetlightIDLightingMeasured will unsubscribe messages from 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured' channel

type AppSubscriber

type AppSubscriber interface {
	// SmartylightingStreetlights10EventStreetlightIDLightingMeasured
	SmartylightingStreetlights10EventStreetlightIDLightingMeasured(msg LightMeasuredMessage, done bool)
}

AppSubscriber represents all handlers that are expecting messages for App

type BrokerController

type BrokerController interface {
	// Publish a message to the broker
	Publish(channel string, mw UniversalMessage) error

	// Subscribe to messages from the broker
	Subscribe(channel string) (msgs chan UniversalMessage, stop chan interface{}, err error)
}

BrokerController represents the functions that should be implemented to connect the broker to the application or the client

type ClientController

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

ClientController is the structure that provides publishing capabilities to the developer and and connect the broker with the Client

func NewClientController

func NewClientController(bs BrokerController) (*ClientController, error)

NewClientController links the Client to the broker

func (*ClientController) Close

func (c *ClientController) Close()

Close will clean up any existing resources on the controller

func (ClientController) Errors

func (c ClientController) Errors() <-chan Error

Errors will give back the channel that contains errors and that you can listen to handle errors Please take a look at Error struct form information on error

func (*ClientController) PublishSmartylightingStreetlights10EventStreetlightIDLightingMeasured

func (c *ClientController) PublishSmartylightingStreetlights10EventStreetlightIDLightingMeasured(params SmartylightingStreetlights10EventStreetlightIDLightingMeasuredParameters, msg LightMeasuredMessage) error

PublishSmartylightingStreetlights10EventStreetlightIDLightingMeasured will publish messages to 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured' channel

func (*ClientController) SubscribeAll

func (c *ClientController) SubscribeAll(as ClientSubscriber) error

SubscribeAll will subscribe to channels without parameters on which the app is expecting messages. For channels with parameters, they should be subscribed independently.

func (*ClientController) SubscribeSmartylightingStreetlights10ActionStreetlightIDDim

func (c *ClientController) SubscribeSmartylightingStreetlights10ActionStreetlightIDDim(params SmartylightingStreetlights10ActionStreetlightIDDimParameters, fn func(msg DimLightMessage, done bool)) error

SubscribeSmartylightingStreetlights10ActionStreetlightIDDim will subscribe to new messages from 'smartylighting/streetlights/1/0/action/{streetlightId}/dim' channel.

Callback function 'fn' will be called each time a new message is received. The 'done' argument indicates when the subscription is canceled and can be used to clean up resources.

func (*ClientController) UnsubscribeAll

func (c *ClientController) UnsubscribeAll()

UnsubscribeAll will unsubscribe all remaining subscribed channels

func (*ClientController) UnsubscribeSmartylightingStreetlights10ActionStreetlightIDDim

func (c *ClientController) UnsubscribeSmartylightingStreetlights10ActionStreetlightIDDim(params SmartylightingStreetlights10ActionStreetlightIDDimParameters)

UnsubscribeSmartylightingStreetlights10ActionStreetlightIDDim will unsubscribe messages from 'smartylighting/streetlights/1/0/action/{streetlightId}/dim' channel

type ClientSubscriber

type ClientSubscriber interface {
	// SmartylightingStreetlights10ActionStreetlightIDDim
	SmartylightingStreetlights10ActionStreetlightIDDim(msg DimLightMessage, done bool)
}

ClientSubscriber represents all handlers that are expecting messages for Client

type DimLightMessage

type DimLightMessage struct {
	// Payload will be inserted in the message payload
	Payload DimLightPayloadSchema
}

DimLightMessage is the message expected for 'DimLight' channel

func NewDimLightMessage

func NewDimLightMessage() DimLightMessage

type DimLightPayloadSchema

type DimLightPayloadSchema struct {
	// Description: Percentage to which the light should be dimmed to.
	Percentage *int64 `json:"percentage"`

	// Description: Date and time when the message was sent.
	SentAt *SentAtSchema `json:"sent_at"`
}

DimLightPayloadSchema is a schema from the AsyncAPI specification required in messages

type Error

type Error struct {
	Channel string
	Err     error
}

func (*Error) Error

func (e *Error) Error() string

type LightMeasuredMessage

type LightMeasuredMessage struct {
	// Headers will be used to fill the message headers
	Headers struct {
		Mqmd *struct {
			CorrelID *string `json:"correl_id"`
		} `json:"mqmd"`
	}

	// Payload will be inserted in the message payload
	Payload LightMeasuredPayloadSchema
}

LightMeasuredMessage is the message expected for 'LightMeasured' channel

func NewLightMeasuredMessage

func NewLightMeasuredMessage() LightMeasuredMessage

func (LightMeasuredMessage) CorrelationID

func (msg LightMeasuredMessage) CorrelationID() string

CorrelationID will give the correlation ID of the message, based on AsyncAPI spec

func (*LightMeasuredMessage) SetAsResponseFrom

func (msg *LightMeasuredMessage) SetAsResponseFrom(req MessageWithCorrelationID)

SetAsResponseFrom will correlate the message with the one passed in parameter. It will assign the 'req' message correlation ID to the message correlation ID, both specified in AsyncAPI spec.

type LightMeasuredPayloadSchema

type LightMeasuredPayloadSchema struct {
	// Description: Light intensity measured in lumens.
	Lumens *int64 `json:"lumens"`

	// Description: Date and time when the message was sent.
	SentAt *SentAtSchema `json:"sent_at"`
}

LightMeasuredPayloadSchema is a schema from the AsyncAPI specification required in messages

type MessageWithCorrelationID

type MessageWithCorrelationID interface {
	CorrelationID() string
}

type SentAtSchema

type SentAtSchema time.Time

SentAtSchema is a schema from the AsyncAPI specification required in messages Description: Date and time when the message was sent.

func (SentAtSchema) MarshalJSON added in v0.6.1

func (t SentAtSchema) MarshalJSON() ([]byte, error)

MarshalJSON will override the marshal as this is not a normal 'time.Time' type

func (*SentAtSchema) UnmarshalJSON added in v0.6.1

func (t *SentAtSchema) UnmarshalJSON(data []byte) error

UnmarshalJSON will override the unmarshal as this is not a normal 'time.Time' type

type SmartylightingStreetlights10ActionStreetlightIDDimParameters added in v0.9.0

type SmartylightingStreetlights10ActionStreetlightIDDimParameters struct {
	StreetlightID string
}

SmartylightingStreetlights10ActionStreetlightIDDimParameters represents SmartylightingStreetlights10ActionStreetlightIDDim channel parameters

type SmartylightingStreetlights10EventStreetlightIDLightingMeasuredParameters added in v0.9.0

type SmartylightingStreetlights10EventStreetlightIDLightingMeasuredParameters struct {
	StreetlightID string
}

SmartylightingStreetlights10EventStreetlightIDLightingMeasuredParameters represents SmartylightingStreetlights10EventStreetlightIDLightingMeasured channel parameters

type UniversalMessage

type UniversalMessage struct {
	CorrelationID *string
	Payload       []byte
}

UniversalMessage is a wrapper that will contain all information regarding a message

Jump to

Keyboard shortcuts

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