messaging

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 2020 License: MIT Imports: 9 Imported by: 13

Documentation

Index

Constants

View Source
const (
	CurrentVersion = "1.0"
)
View Source
const (
	MessagingKey = "Key.MessagingKey"
)

Variables

View Source
var (
	ErrHandleRequest = errors.New("Request handle failed")
	ErrRequestFailed = errors.New("Request Failed")
)
View Source
var (
	ErrNoData               = errors.New("No Data")
	ErrInvalidMessage       = errors.New("Invalid Message")
	ErrOperationNotPermited = errors.New("Operation Not Permited")
)
View Source
var (
	ErrEncrypt      = errors.New("Failed to Encrypt")
	ErrSignature    = errors.New("Failed to Sign message")
	ErrNotSigned    = errors.New("Message Not Signed")
	ErrVerifyFailed = errors.New("Fail to verify signature")
)

Functions

func CompressMessage added in v0.1.0

func CompressMessage(message *Message, level int) error

func DecodeObject added in v0.1.0

func DecodeObject(data []byte, object BankObject) error

Decode store BankObject from bytes. Decoded with gob

func DecompressMessage added in v0.1.0

func DecompressMessage(message *Message) error

func DecryptMessageFrom added in v0.1.0

func DecryptMessageFrom(ctx context.Context, to *security.Key, from security.EncryptionPublicKey, message *Message) error

func EncodeObject added in v0.1.0

func EncodeObject(object BankObject) ([]byte, error)

encode return bytes from BankObject. Encoded with gob

func EncryptMessageFor added in v0.1.0

func EncryptMessageFor(ctx context.Context, from *security.Key, to security.EncryptionPublicKey, message *Message) error

func FromMessage added in v0.1.0

func FromMessage(message *Message, object BankObject) error

func RequestMessage added in v0.0.2

func RequestMessage(ctx context.Context, appName string, subject string, req, resp BankObject) error

func SignMessage added in v0.1.0

func SignMessage(ctx context.Context, key *security.Key, message *Message) error

func ToNats

func ToNats(messaging Messaging) *nats.Conn

func VerifyMessageSignature added in v0.1.0

func VerifyMessageSignature(key security.SignaturePublicKey, message *Message) (bool, error)

func WithMessaging added in v0.1.0

func WithMessaging(ctx context.Context, messaging Messaging) context.Context

WithMessaging returns a context with the messaging set

Types

type BankObject added in v0.1.0

type BankObject interface {
	Encode() ([]byte, error)
	Decode(data []byte) error
}

type Message added in v0.1.0

type Message struct {
	Version string // Version for compatibility
	From    string `json:",omitempty"` // From is the public key of sender
	Data    []byte `json:",omitempty"` // Data payload
	Flags   uint   `json:",omitempty"` // Flags for Compressed, Encrypted, Signed
	Error   string `json:",omitempty"` // Error in message processing
}

Message used for all communication between components

func HandleRequest added in v0.0.2

func HandleRequest(ctx context.Context, appName string, message *Message, request BankObject, handle RequestHandler) (*Message, error)

func NewMessage added in v0.1.0

func NewMessage() *Message

func ToMessage added in v0.1.0

func ToMessage(from string, object BankObject) *Message

func (*Message) Decode added in v0.1.0

func (m *Message) Decode(data []byte) error

Decode return Message from bytes. Decoded with gob

func (*Message) Encode added in v0.1.0

func (m *Message) Encode() ([]byte, error)

Encode return bytes from Message. Encoded with gob

func (*Message) IsCompressed added in v0.1.0

func (m *Message) IsCompressed() bool

func (*Message) IsEncrypted added in v0.1.0

func (m *Message) IsEncrypted() bool

func (*Message) IsSigned added in v0.1.0

func (m *Message) IsSigned() bool

func (*Message) SetCompressed added in v0.1.0

func (m *Message) SetCompressed(compressed bool)

func (*Message) SetEncrypted added in v0.1.0

func (m *Message) SetEncrypted(encrypted bool)

func (*Message) SetSigned added in v0.1.0

func (m *Message) SetSigned(signed bool)

type MessageFlag added in v0.1.0

type MessageFlag uint32

type MessageHandler added in v0.1.0

type MessageHandler func(ctx context.Context, subject string, message *Message) (*Message, error)

type Messaging added in v0.1.0

type Messaging interface {
	NC() NC

	SubscribeWorkers(ctx context.Context, subject string, workerCount int, handle MessageHandler)
	Subscribe(ctx context.Context, subject string, handle MessageHandler)

	Publish(ctx context.Context, subject string, message *Message) error

	Request(ctx context.Context, subject string, message *Message) (*Message, error)
	RequestWithTimeout(ctx context.Context, subject string, message *Message, timeout time.Duration) (*Message, error)
}

func FromContext added in v0.1.0

func FromContext(ctx context.Context) Messaging

type NC added in v0.1.0

type NC interface{}

Messaging (Nats)

type RequestHandler added in v0.0.2

type RequestHandler func(ctx context.Context, request BankObject) (BankObject, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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