indismqgo

package module
v0.0.0-...-172cf88 Latest Latest
Warning

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

Go to latest
Published: Dec 3, 2017 License: Apache-2.0 Imports: 11 Imported by: 0

README

Documentation

Index

Constants

View Source
const (
	ActionACK         = 0
	ActionGET         = 1
	ActionHEAD        = 2
	ActionPOST        = 3
	ActionPUT         = 4
	ActionDELETE      = 5
	ActionCONNECT     = 6
	ActionOPTIONS     = 7
	ActionTRACE       = 8
	ActionPATCH       = 9
	ActionRESPONSE    = 10
	ActionSUBSCRIBE   = 11
	ActionUNSUBSCRIBE = 12
	ActionCAST        = 13
)
View Source
const (
	GuaranteeNONE          = 0
	GuaranteeAT_LEAST_ONCE = 1
)
View Source
const (
	StatusContinue           = 100 // RFC 7231, 6.2.1
	StatusSwitchingProtocols = 101 // RFC 7231, 6.2.2
	StatusProcessing         = 102 // RFC 2518, 10.1

	StatusOK                   = 200 // RFC 7231, 6.3.1
	StatusCreated              = 201 // RFC 7231, 6.3.2
	StatusAccepted             = 202 // RFC 7231, 6.3.3
	StatusNonAuthoritativeInfo = 203 // RFC 7231, 6.3.4
	StatusNoContent            = 204 // RFC 7231, 6.3.5
	StatusResetContent         = 205 // RFC 7231, 6.3.6
	StatusPartialContent       = 206 // RFC 7233, 4.1
	StatusMultiStatus          = 207 // RFC 4918, 11.1
	StatusAlreadyReported      = 208 // RFC 5842, 7.1
	StatusIMUsed               = 226 // RFC 3229, 10.4.1

	StatusMultipleChoices  = 300 // RFC 7231, 6.4.1
	StatusMovedPermanently = 301 // RFC 7231, 6.4.2
	StatusFound            = 302 // RFC 7231, 6.4.3
	StatusSeeOther         = 303 // RFC 7231, 6.4.4
	StatusNotModified      = 304 // RFC 7232, 4.1
	StatusUseProxy         = 305 // RFC 7231, 6.4.5

	StatusTemporaryRedirect = 307 // RFC 7231, 6.4.7
	StatusPermanentRedirect = 308 // RFC 7538, 3

	StatusBadRequest                   = 400 // RFC 7231, 6.5.1
	StatusUnauthorized                 = 401 // RFC 7235, 3.1
	StatusPaymentRequired              = 402 // RFC 7231, 6.5.2
	StatusForbidden                    = 403 // RFC 7231, 6.5.3
	StatusNotFound                     = 404 // RFC 7231, 6.5.4
	StatusMethodNotAllowed             = 405 // RFC 7231, 6.5.5
	StatusNotAcceptable                = 406 // RFC 7231, 6.5.6
	StatusProxyAuthRequired            = 407 // RFC 7235, 3.2
	StatusRequestTimeout               = 408 // RFC 7231, 6.5.7
	StatusConflict                     = 409 // RFC 7231, 6.5.8
	StatusGone                         = 410 // RFC 7231, 6.5.9
	StatusLengthRequired               = 411 // RFC 7231, 6.5.10
	StatusPreconditionFailed           = 412 // RFC 7232, 4.2
	StatusRequestEntityTooLarge        = 413 // RFC 7231, 6.5.11
	StatusRequestURITooLong            = 414 // RFC 7231, 6.5.12
	StatusUnsupportedMediaType         = 415 // RFC 7231, 6.5.13
	StatusRequestedRangeNotSatisfiable = 416 // RFC 7233, 4.4
	StatusExpectationFailed            = 417 // RFC 7231, 6.5.14
	StatusTeapot                       = 418 // RFC 7168, 2.3.3
	StatusUnprocessableEntity          = 422 // RFC 4918, 11.2
	StatusLocked                       = 423 // RFC 4918, 11.3
	StatusFailedDependency             = 424 // RFC 4918, 11.4
	StatusUpgradeRequired              = 426 // RFC 7231, 6.5.15
	StatusPreconditionRequired         = 428 // RFC 6585, 3
	StatusTooManyRequests              = 429 // RFC 6585, 4
	StatusRequestHeaderFieldsTooLarge  = 431 // RFC 6585, 5
	StatusUnavailableForLegalReasons   = 451 // RFC 7725, 3

	StatusInternalServerError           = 500 // RFC 7231, 6.6.1
	StatusNotImplemented                = 501 // RFC 7231, 6.6.2
	StatusBadGateway                    = 502 // RFC 7231, 6.6.3
	StatusServiceUnavailable            = 503 // RFC 7231, 6.6.4
	StatusGatewayTimeout                = 504 // RFC 7231, 6.6.5
	StatusHTTPVersionNotSupported       = 505 // RFC 7231, 6.6.6
	StatusVariantAlsoNegotiates         = 506 // RFC 2295, 8.1
	StatusInsufficientStorage           = 507 // RFC 4918, 11.5
	StatusLoopDetected                  = 508 // RFC 5842, 7.2
	StatusNotExtended                   = 510 // RFC 2774, 7
	StatusNetworkAuthenticationRequired = 511 // RFC 6585, 6
)

HTTP status codes as registered with IANA. See: http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

Variables

View Source
var EnumNamesAction = map[int]string{
	ActionACK:         "ACK",
	ActionGET:         "GET",
	ActionHEAD:        "HEAD",
	ActionPOST:        "POST",
	ActionPUT:         "PUT",
	ActionDELETE:      "DELETE",
	ActionCONNECT:     "CONNECT",
	ActionOPTIONS:     "OPTIONS",
	ActionTRACE:       "TRACE",
	ActionPATCH:       "PATCH",
	ActionRESPONSE:    "RESPONSE",
	ActionSUBSCRIBE:   "SUBSCRIBE",
	ActionUNSUBSCRIBE: "UNSUBSCRIBE",
	ActionCAST:        "CAST",
}
View Source
var EnumNamesGuarantee = map[int]string{
	GuaranteeNONE:          "NONE",
	GuaranteeAT_LEAST_ONCE: "AT_LEAST_ONCE",
}

Functions

func NewRandID

func NewRandID() []byte

newRandID generates a random UUID according to RFC 4122

func NewUUID

func NewUUID() []byte

func Process

func Process(ctx Context, m *MsgBuffer, conn Connection) error

func ProcessRaw

func ProcessRaw(ctx Context, data []byte, conn Connection) error

func StatusText

func StatusText(code int) string

StatusText returns a text for the HTTP status code. It returns the empty string if the code is unknown.

func WaitTimeout

func WaitTimeout(wg *sync.WaitGroup, timeout time.Duration) bool

waitTimeout waits for the waitgroup for the specified max timeout. Returns true if waiting timed out.

Types

type Connection

type Connection interface {
	Send(m *MsgBuffer) error
}
type Queue interface {
	QueuePut(msg *MsgBuffer, conn Connection)
	// QueuePop() interface{}
	// QueuePeek() interface{}
	//QueueDel(key string)
	QueueAck(key string, conn Connection)
}

type ConnectionStore

type ConnectionStore interface {
	GetConnection(key string) Connection
	SetConnection(key string, val Connection)
	DelConnection(key string)
}

type Context

type Context interface {
	Recieve(m *MsgBuffer, conn Connection) error
	RecieveRaw(data []byte, conn Connection) error
	Name([]byte) []byte
	Debug(*bool) bool
}

type ContextImpl

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

func (*ContextImpl) Debug

func (c *ContextImpl) Debug(set *bool) bool

func (*ContextImpl) Name

func (c *ContextImpl) Name(set []byte) []byte

func (*ContextImpl) Recieve

func (c *ContextImpl) Recieve(m *MsgBuffer, conn Connection) error

func (*ContextImpl) RecieveRaw

func (c *ContextImpl) RecieveRaw(data []byte, conn Connection) error

type Handler

type Handler func(*MsgBuffer, Connection) error

Handler

type HandlerStore

type HandlerStore interface {
	GetHandler(key string) Handler
	SetHandler(key string, val Handler)
	DelHandler(key string)
}

type MessageStore

type MessageStore interface {
	GetMessage(key string) (m *MsgBuffer)
	SetMessage(key string, m *MsgBuffer)
	DelMessage(key string)
}

type MsgBuffer

type MsgBuffer struct {
	Data      []byte
	Fields    *IndisMQ.Imq
	Callback  Handler
	Timestamp int64

	Context Context
	// contains filtered or unexported fields
}

Msg ... Imq.Msg.rawData Imq.Msg.

func MakeCtxReply

func MakeCtxReply(ctx Context, m *MsgBuffer, statusCode uint16, body []byte) (*MsgBuffer, error)

func NewCtxConnectionMsg

func NewCtxConnectionMsg(ctx Context, to []byte, authorization []byte, callback Handler) (*MsgBuffer, error)

func NewMsgBuffer

func NewMsgBuffer(msgId []byte, action int8, status uint16, to []byte, from []byte, path []byte, authorization []byte, body []byte, meta map[string]string, callback Handler) (*MsgBuffer, error)

func ParseMsg

func ParseMsg(data []byte, ctx Context) (m *MsgBuffer)

ParseMsg ...

func (*MsgBuffer) Meta

func (m *MsgBuffer) Meta() map[string]string

Meta read only access to metadata

func (*MsgBuffer) String

func (m *MsgBuffer) String() string

func (*MsgBuffer) ToObject

func (m *MsgBuffer) ToObject() *MsgObject

type MsgObject

type MsgObject struct {
	MsgID         string
	Action        int8
	Status        uint16
	To            string
	From          string
	Path          string
	Authorization string
	Body          []byte
	Meta          map[string]string
	Callback      Handler
}

func NewCtxMsgObject

func NewCtxMsgObject(ctx Context, to string, action int8, path string, body []byte, callback Handler) *MsgObject

func NewMsgObject

func NewMsgObject(msgId string, action int8, status uint16, to string, from string, path string, auth string, body []byte, meta map[string]string, callback Handler) *MsgObject

func (*MsgObject) ToBuffer

func (o *MsgObject) ToBuffer() (*MsgBuffer, error)

type OnConnection

type OnConnection interface {
	OnConnection(m *MsgBuffer, conn Connection) (ok bool)
	OnDisconnected(m *MsgBuffer, conn Connection) (ok bool)
}

for context

type OnMessage

type OnMessage interface {
	OnMessage(m *MsgBuffer, conn Connection) (ok bool)
}

type OnUnknown

type OnUnknown interface {
	OnUnknown(m *MsgBuffer, conn Connection) (queue bool)
}

type QueueStore

type QueueStore interface {
	ProcessTimeout()
	// PutQueue(msg *MsgBuffer, conn Connection)
	// PopQueue()
	// GetQueue(key string) Queue
	// GetQueueOrNew(key string) Queue
	// DelQueue(key string)
	// AckQueue(key string, conn Connection)
	//SetQueue(key string, q Queue)
	// PutQueue(msg *MsgBuffer, conn Connection) (queue Queue)
	// PutQueueReply(msg *MsgBuffer, conn Connection) (queue Queue)
	// GetQueueReply(m *MsgBuffer) (msg *MsgBuffer, conn Connection, queue Queue)
	ProcessQueue(key string)
}

type Subscriber

type Subscriber interface {
	OnSubscribe(m *MsgBuffer, conn Connection) (ok bool)
	OnUnsubscribe(m *MsgBuffer, conn Connection)
}

type SubscriberStore

type SubscriberStore interface {
	AddSubscriber(client string, path string)
	AddChannel(path string)
	DelChannel(path string)
	DelSubscriber(client string, path string)
	DelSubscriberAll(client string)
	GetSubscriberList(key string) map[string]bool
}

type Subscribers

type Subscribers interface {
	ConnectionStore
	SubscriberStore
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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