core

package
v0.1.10 Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2020 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const ConstAppAuthors = "MD KAWSER MUNSHI"
View Source
const ConstAppDescription = "Pisig is a reusable high performance websocket focused web framework"
View Source
const ConstAppName = "pisig"

APP RELATED CONSTANTS

View Source
const ConstAppNameLong = "pisig service"
View Source
const ConstAppVersion = "v0.1.10"

Variables

This section is empty.

Functions

func WebsocketFileDescriptor

func WebsocketFileDescriptor(conn net.Conn) int

Types

type CORSOptions

type CORSOptions struct {
	// If set, all origins are allowed.
	AllowAllOrigins bool
	// A list of allowed origins. Wild cards and FQDNs are supported.
	AllowOrigins []string
	// If set, allows to share auth credentials such as cookies.
	AllowCredentials bool
	// A list of allowed HTTP methods.
	AllowMethods []string
	// A list of allowed HTTP headers.
	AllowHeaders []string
	// A list of exposed HTTP headers.
	ExposeHeaders []string
	// Max age of the CORS headers.
	MaxAge time.Duration
}

CORSOptions represents Access Control options.

func (*CORSOptions) CROSCheckAllowNext

func (o *CORSOptions) CROSCheckAllowNext(writer http.ResponseWriter, request *http.Request) bool

CROSCheckAllowNext enables CORS for requests those match the provided options.

func (*CORSOptions) Header

func (o *CORSOptions) Header(origin string) (headers map[string]string)

Header converts options into CORS headers.

func (*CORSOptions) IsOriginAllowed

func (o *CORSOptions) IsOriginAllowed(origin string) (allowed bool)

IsOriginAllowed looks up if the origin matches one of the patterns generated from CORSOptions.AllowOrigins patterns.

func (*CORSOptions) PreflightHeader

func (o *CORSOptions) PreflightHeader(origin, rMethod, rHeaders string) (headers map[string]string)

PreflightHeader converts options into CORS headers for a preflight response.

type EPool

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

func NewEPool

func NewEPool(pisigContext *PisigContext,
	removeConnectionHook EPoolRemoveConnectionHook,
) (*EPool, error)

func (*EPool) AddConnection

func (ePool *EPool) AddConnection(conn net.Conn) error

func (*EPool) GetConnection

func (ePool *EPool) GetConnection(connectionId int) (net.Conn, bool)

func (*EPool) GetConnectionIdSlice

func (ePool *EPool) GetConnectionIdSlice() []int

func (*EPool) GetConnectionMap

func (ePool *EPool) GetConnectionMap() map[int]net.Conn

func (*EPool) GetConnectionSlice

func (ePool *EPool) GetConnectionSlice() []net.Conn

func (*EPool) ProcessWebSocketMessage

func (ePool *EPool) ProcessWebSocketMessage(conn net.Conn, msg []byte, opCode byte) error

func (*EPool) RemoveConnection

func (ePool *EPool) RemoveConnection(conn net.Conn) error

func (*EPool) RunMainEventLoop

func (ePool *EPool) RunMainEventLoop()

func (*EPool) Setup

func (ePool *EPool) Setup()

func (*EPool) TotalActiveConnections

func (ePool *EPool) TotalActiveConnections() int

func (*EPool) Wait

func (ePool *EPool) Wait() ([]net.Conn, error)

type EPoolRemoveConnectionHook

type EPoolRemoveConnectionHook func(conn net.Conn) error

type EPoolProcessMessageHook func(conn net.Conn, msg []byte, opCode byte) error

type HTTPMiddlewareView

type HTTPMiddlewareView interface {
	ProcessAllowNext(pisig *Pisig) MiddlewareHandlerFunc
}

type HTTPView

type HTTPView interface {
	Process(pisig *Pisig) http.HandlerFunc
}

type InterfaceMap

type InterfaceMap map[string]interface{}

type MiddlewareHandlerFunc

type MiddlewareHandlerFunc func(http.ResponseWriter, *http.Request) bool

type Pisig

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

func NewPisig

func NewPisig(args ...interface{}) *Pisig

func NewPisigSimple

func NewPisigSimple(corsOptions *CORSOptions,
	pisigSettings *settings.PisigSettings,
	pisigResponse message.PisigMessage,
	onlineUserStore storage.OnlineUserStore) *Pisig

func (*Pisig) AddMiddlewareView

func (p *Pisig) AddMiddlewareView(middlewareView HTTPMiddlewareView)

func (*Pisig) AddOnlineUser

func (p *Pisig) AddOnlineUser(uniqueId string, groupId string, socketId int, data interface{}) bool

func (*Pisig) AddService

func (p *Pisig) AddService(topicNameList []string, pisigService PisigService) bool

func (*Pisig) AddView

func (p *Pisig) AddView(urlPattern string, view HTTPView)

func (*Pisig) AddWSConn added in v0.1.4

func (p *Pisig) AddWSConn(conn net.Conn) bool

func (*Pisig) AddWSConnection

func (p *Pisig) AddWSConnection(conn net.Conn) bool

func (*Pisig) AddWebSocketConnection

func (p *Pisig) AddWebSocketConnection(conn net.Conn) bool

func (*Pisig) GetOnlineSocketIdList

func (p *Pisig) GetOnlineSocketIdList() []int

func (*Pisig) GetOnlineSocketList

func (p *Pisig) GetOnlineSocketList() []net.Conn

func (*Pisig) GetTopicListenerList

func (p *Pisig) GetTopicListenerList(topicName string) []interface{}

func (*Pisig) GetTotalOnlineWSConnection

func (p *Pisig) GetTotalOnlineWSConnection() int

func (*Pisig) GetTotalOnlineWebSocketConnection

func (p *Pisig) GetTotalOnlineWebSocketConnection() int

func (*Pisig) GetWSConn added in v0.1.6

func (p *Pisig) GetWSConn(sockedId int) net.Conn

func (*Pisig) GetWebSocketConnection added in v0.1.6

func (p *Pisig) GetWebSocketConnection(sockedId int) net.Conn

func (*Pisig) MiddlewareViewList

func (p *Pisig) MiddlewareViewList() []HTTPMiddlewareView

func (*Pisig) PisigContext

func (p *Pisig) PisigContext() *PisigContext

func (*Pisig) ProduceTopic

func (p *Pisig) ProduceTopic(topic event.Topic)

func (*Pisig) Publish added in v0.1.2

func (p *Pisig) Publish(topic event.Topic)

Publish to the specific topic/channel

func (*Pisig) RunHTTPServer

func (p *Pisig) RunHTTPServer()

func (*Pisig) RunTopicDispatcher

func (p *Pisig) RunTopicDispatcher()

func (*Pisig) RunWebSocketServer added in v0.1.5

func (p *Pisig) RunWebSocketServer(u *ws.Upgrader)

func (*Pisig) SendMessageToAll

func (p *Pisig) SendMessageToAll(message []byte)

Send message to all active websocket connection

func (*Pisig) SendMessageToGroup

func (p *Pisig) SendMessageToGroup(groupId string, message []byte)

Send message to the specific group of active websocket connection

func (*Pisig) SendMessageToUser

func (p *Pisig) SendMessageToUser(uniqueId string, message []byte)

Send message to the specific user active websocket connection

func (*Pisig) Subscribe added in v0.1.2

func (p *Pisig) Subscribe(topicNameList []string, pisigService PisigService) bool

Subscribe pisig service to the specified topic/channel name list

type PisigContext

type PisigContext struct {
	PisigStore           *cache.PisigStore
	PisigServiceRegistry *PisigServiceRegistry

	CORSOptions   *CORSOptions
	PisigMessage  message.PisigMessage
	PisigSettings *settings.PisigSettings

	OnlineUserStore storage.OnlineUserStore

	TopicQueue event.TopicQueue //will be initialized during pisig instance creation
}

func NewPisigContext

func NewPisigContext() *PisigContext

Create new PisigContext

func (*PisigContext) GetCORSOptions

func (pc *PisigContext) GetCORSOptions() *CORSOptions

func (*PisigContext) GetOnlineUserStore

func (pc *PisigContext) GetOnlineUserStore() storage.OnlineUserStore

func (*PisigContext) GetPisigMessage

func (pc *PisigContext) GetPisigMessage() message.PisigMessage

func (*PisigContext) GetPisigServiceRegistry

func (pc *PisigContext) GetPisigServiceRegistry() *PisigServiceRegistry

func (*PisigContext) GetPisigSettings

func (pc *PisigContext) GetPisigSettings() *settings.PisigSettings

func (*PisigContext) GetPisigStore

func (pc *PisigContext) GetPisigStore() *cache.PisigStore

func (*PisigContext) ProduceTopic

func (pc *PisigContext) ProduceTopic(topic event.Topic)

func (*PisigContext) Publish added in v0.1.2

func (pc *PisigContext) Publish(topic event.Topic)

type PisigService

type PisigService interface {
	SetPisig(pisig *Pisig)

	GroupName() string
	ServiceName() string
	ServiceVersion() string
	ServiceAuthors() string

	Process(topic event.Topic, synchronous bool) (error, *event.Topic)
}

type PisigServiceRegistry

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

func NewPisigServiceRegistry

func NewPisigServiceRegistry() *PisigServiceRegistry

func (*PisigServiceRegistry) AddService

func (psr *PisigServiceRegistry) AddService(pisigService PisigService) (bool, error)

func (*PisigServiceRegistry) AddTopicListener

func (psr *PisigServiceRegistry) AddTopicListener(topicName string, pisigService PisigService)

func (*PisigServiceRegistry) GetAllAvailableServices added in v0.1.9

func (psr *PisigServiceRegistry) GetAllAvailableServices() map[string][]string

func (*PisigServiceRegistry) GetDefaultServiceMap added in v0.1.10

func (psr *PisigServiceRegistry) GetDefaultServiceMap() map[string]string

func (*PisigServiceRegistry) GetDefaultServiceName added in v0.1.5

func (psr *PisigServiceRegistry) GetDefaultServiceName(groupName string) (string, bool)

func (*PisigServiceRegistry) GetGroupList

func (psr *PisigServiceRegistry) GetGroupList() []string

func (*PisigServiceRegistry) GetService

func (psr *PisigServiceRegistry) GetService(groupName string, serviceName string) (PisigService, error)

func (*PisigServiceRegistry) GetServiceList

func (psr *PisigServiceRegistry) GetServiceList() []string

func (*PisigServiceRegistry) GetTopicListenerList

func (psr *PisigServiceRegistry) GetTopicListenerList(topicName string) []interface{}

func (*PisigServiceRegistry) IsGroupExistsInList

func (psr *PisigServiceRegistry) IsGroupExistsInList(groupName string) bool

func (*PisigServiceRegistry) IsServiceExists

func (psr *PisigServiceRegistry) IsServiceExists(groupName string, serviceName string) bool

func (*PisigServiceRegistry) IsServiceExistsInList

func (psr *PisigServiceRegistry) IsServiceExistsInList(serviceName string) bool

func (*PisigServiceRegistry) SetDefaultServiceName added in v0.1.5

func (psr *PisigServiceRegistry) SetDefaultServiceName(groupName, serviceName string)

type TopicDispatcher

type TopicDispatcher struct {
	Pisig              *Pisig
	TopicQueuePoolSize int
	TopicProducerQueue event.TopicQueue
	TopicQueuePool     event.TopicQueuePool
}

func NewTopicDispatcher

func NewTopicDispatcher(pisig *Pisig, topicQueue event.TopicQueue) *TopicDispatcher

func (*TopicDispatcher) Run

func (td *TopicDispatcher) Run()

type TopicProcessor

type TopicProcessor struct {
	Pisig *Pisig

	TopicQueue     event.TopicQueue
	TopicQueuePool event.TopicQueuePool
	// contains filtered or unexported fields
}

func NewTopicProcessor

func NewTopicProcessor(pisig *Pisig, topicQueuePool event.TopicQueuePool) TopicProcessor

func (TopicProcessor) Start

func (tp TopicProcessor) Start()

func (TopicProcessor) Stop

func (tp TopicProcessor) Stop()

Stop topic processor

Jump to

Keyboard shortcuts

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