asyncapi

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Feb 8, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package "asyncapi" 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")

	// ErrTimedOut is given when any timeout happen
	ErrTimedOut = fmt.Errorf("%w: time out", 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

NewAppController links the application to the broker

func (*AppController) Close

func (ac *AppController) Close()

Close will clean up any existing resources on the controller

func (*AppController) Listen

func (ac *AppController) Listen(irq chan interface{})

Listen will let the controller handle subscriptions and will be interrupted only when an struct is sent on the interrupt channel

func (*AppController) PublishUserSignedin

func (ac *AppController) PublishUserSignedin(msg UserSignedinMessage) error

PublishUserSignedin will publish messages to 'user/signedin' channel

func (*AppController) PublishUserSignedup

func (ac *AppController) PublishUserSignedup(msg UserSignedUpExtraWordingMessage) error

PublishUserSignedup will publish messages to 'user/signedup' channel

func (*AppController) SubscribeAll

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

SubscribeAll will subscribe to channels on which the app is expecting messages

func (*AppController) SubscribeUserDelete

func (ac *AppController) SubscribeUserDelete(fn func(msg UserDeleteMessage)) error

SubscribeUserDelete will subscribe to new messages from 'user/delete' channel

func (*AppController) SubscribeUserModify

func (ac *AppController) SubscribeUserModify(fn func(msg UserModifyExtraWordingMessage)) error

func (*AppController) UnsubscribeAll

func (ac *AppController) UnsubscribeAll()

UnsubscribeAll will unsubscribe all remaining subscribed channels

func (*AppController) UnsubscribeUserDelete

func (ac *AppController) UnsubscribeUserDelete()

UnsubscribeUserDelete will unsubscribe messages from 'user/delete' channel

func (*AppController) UnsubscribeUserModify

func (ac *AppController) UnsubscribeUserModify()

UnsubscribeUserModify will unsubscribe messages from 'user/modify' channel

type AppSubscriber

type AppSubscriber interface {
	// UserDelete
	UserDelete(msg UserDeleteMessage)

	// UserModify
	UserModify(msg UserModifyExtraWordingMessage)
}

AppSubscriber represents all application handlers that are expecting messages from clients

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

NewClientController links the client to the broker

func (*ClientController) Close

func (cc *ClientController) Close()

Close will clean up any existing resources on the controller

func (*ClientController) Listen added in v0.2.0

func (cc *ClientController) Listen(irq chan interface{})

Listen will let the controller handle subscriptions and will be interrupted only when an struct is sent on the interrupt channel

func (*ClientController) PublishUserDelete

func (cc *ClientController) PublishUserDelete(msg UserDeleteMessage) error

PublishUserDelete will publish messages to 'user/delete' channel

func (*ClientController) PublishUserModify

func (cc *ClientController) PublishUserModify(msg UserModifyExtraWordingMessage) error

PublishUserModify will publish messages to 'user/modify' channel

func (*ClientController) SubscribeAll

func (cc *ClientController) SubscribeAll(cs ClientSubscriber) error

SubscribeAll will subscribe to channels on which the client is expecting messages

func (*ClientController) SubscribeUserSignedin

func (cc *ClientController) SubscribeUserSignedin(fn func(msg UserSignedinMessage)) error

SubscribeUserSignedin will subscribe to new messages from 'user/signedin' channel

func (*ClientController) SubscribeUserSignedup

func (cc *ClientController) SubscribeUserSignedup(fn func(msg UserSignedUpExtraWordingMessage)) error

SubscribeUserSignedup will subscribe to new messages from 'user/signedup' channel

func (*ClientController) UnsubscribeAll

func (cc *ClientController) UnsubscribeAll()

UnsubscribeAll will unsubscribe all remaining subscribed channels

func (*ClientController) UnsubscribeUserSignedin

func (cc *ClientController) UnsubscribeUserSignedin()

UnsubscribeUserSignedin will unsubscribe messages from 'user/signedin' channel

func (*ClientController) UnsubscribeUserSignedup

func (cc *ClientController) UnsubscribeUserSignedup()

UnsubscribeUserSignedup will unsubscribe messages from 'user/signedup' channel

func (*ClientController) WaitForUserSignedup added in v0.2.0

func (cc *ClientController) WaitForUserSignedup(correlationID string, pub func() error, timeout time.Duration) (UserSignedUpExtraWordingMessage, error)

WaitForUserSignedup will wait for a specific message by its correlation ID

The pub function is the publication function that should be used to send the message It will be called after subscribing to the channel to avoid race condition, and potentially loose the message

type ClientSubscriber

type ClientSubscriber interface {
	// UserSignedin
	UserSignedin(msg UserSignedinMessage)

	// UserSignedup
	UserSignedup(msg UserSignedUpExtraWordingMessage)
}

ClientSubscriber represents all application handlers that are expecting messages from application

type Limit

type Limit int32

Limit is a component of the AsyncAPI specification required in messages

type Number

type Number float64

Number is a component of the AsyncAPI specification required in messages

type Number32

type Number32 float32

Number32 is a component of the AsyncAPI specification required in messages

type Number64

type Number64 float64

Number64 is a component of the AsyncAPI specification required in messages

type SchemaStruct

type SchemaStruct string

SchemaStruct is a component of the AsyncAPI specification required in messages

type Total

type Total int64

Total is a component of the AsyncAPI specification required in messages

type UniversalMessage

type UniversalMessage struct {
	CorrelationID string
	Payload       []byte
}

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

type UserDeleteMessage

type UserDeleteMessage struct {
	// Payload will be inserted in the message payload
	Payload int64
}

UserDeleteMessage is the message expected for 'UserDelete' channel

func NewUserDeleteMessage added in v0.2.0

func NewUserDeleteMessage() UserDeleteMessage

type UserModifyExtraWordingMessage

type UserModifyExtraWordingMessage struct {
	// Payload will be inserted in the message payload
	Payload struct {
		// Name
		Name string `json:"name"`
	}
}

UserModifyExtraWordingMessage is the message expected for 'UserModifyExtraWording' channel

func NewUserModifyExtraWordingMessage added in v0.2.0

func NewUserModifyExtraWordingMessage() UserModifyExtraWordingMessage

type UserSignedUpExtraWording

type UserSignedUpExtraWording string

UserSignedUpExtraWording is a component of the AsyncAPI specification required in messages

type UserSignedUpExtraWordingMessage

type UserSignedUpExtraWordingMessage struct {
	// Headers will be used to fill the message headers
	Headers struct {
		// CorrelationID
		CorrelationID string `json:"correlation_id"`
	}

	// Payload will be inserted in the message payload
	Payload struct {
		// Name of the user
		DisplayName string `json:"display_name"`

		// Email of the user
		Email string `json:"email"`

		// Schema
		Schema SchemaStruct `json:"schema"`
	}
}

UserSignedUpExtraWordingMessage is the message expected for 'UserSignedUpExtraWording' channel

func NewUserSignedUpExtraWordingMessage added in v0.2.0

func NewUserSignedUpExtraWordingMessage() UserSignedUpExtraWordingMessage

type UserSignedinMessage

type UserSignedinMessage struct {
	// Payload will be inserted in the message payload
	Payload int64
}

UserSignedinMessage is the message expected for 'UserSignedin' channel

func NewUserSignedinMessage added in v0.2.0

func NewUserSignedinMessage() UserSignedinMessage

Jump to

Keyboard shortcuts

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