extensions

package
v2.2.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2017 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APNSMessageHandler

type APNSMessageHandler struct {
	CertificatePath string
	Config          *viper.Viper

	InflightMessagesMetadata map[string]interface{}
	InvalidTokenHandlers     []interfaces.InvalidTokenHandler
	IsProduction             bool
	Logger                   *log.Logger
	LogStatsInterval         time.Duration

	PushQueue interfaces.APNSPushQueue

	StatsReporters []interfaces.StatsReporter

	Topic string

	CacheCleaningInterval int
	// contains filtered or unexported fields
}

APNSMessageHandler implements the messagehandler interface

func NewAPNSMessageHandler

func NewAPNSMessageHandler(
	certificatePath string,
	isProduction bool,
	config *viper.Viper,
	logger *log.Logger,
	pendingMessagesWG *sync.WaitGroup,
	statsReporters []interfaces.StatsReporter,
	feedbackReporters []interfaces.FeedbackReporter,
	invalidTokenHandlers []interfaces.InvalidTokenHandler,
	queue interfaces.APNSPushQueue,
) (*APNSMessageHandler, error)

NewAPNSMessageHandler returns a new instance of a APNSMessageHandler

func (*APNSMessageHandler) CleanMetadataCache added in v1.1.0

func (a *APNSMessageHandler) CleanMetadataCache()

CleanMetadataCache clears expired requests from memory

func (*APNSMessageHandler) Cleanup added in v0.2.0

func (a *APNSMessageHandler) Cleanup() error

Cleanup closes connections to APNS

func (*APNSMessageHandler) HandleMessages

func (a *APNSMessageHandler) HandleMessages(msgChan *chan []byte)

HandleMessages get messages from msgChan and send to APNS

func (*APNSMessageHandler) HandleResponses

func (a *APNSMessageHandler) HandleResponses()

HandleResponses from apns

func (*APNSMessageHandler) LogStats added in v1.0.0

func (a *APNSMessageHandler) LogStats()

LogStats from time to time

type CCSMessageWithMetadata added in v0.2.0

type CCSMessageWithMetadata struct {
	gcm.CCSMessage
	Timestamp int64                  `json:"timestamp"`
	Metadata  map[string]interface{} `json:"metadata,omitempty"`
}

CCSMessageWithMetadata is a enriched CCSMessage with a metadata field

type GCMMessageHandler

type GCMMessageHandler struct {
	Config *viper.Viper

	GCMClient                interfaces.GCMClient
	InflightMessagesMetadata map[string]interface{}
	InvalidTokenHandlers     []interfaces.InvalidTokenHandler
	IsProduction             bool
	Logger                   *log.Logger
	LogStatsInterval         time.Duration

	PingInterval int
	PingTimeout  int

	StatsReporters []interfaces.StatsReporter

	CacheCleaningInterval int
	// contains filtered or unexported fields
}

GCMMessageHandler implements the messagehandler interface

func NewGCMMessageHandler

func NewGCMMessageHandler(
	senderID, apiKey string,
	isProduction bool,
	config *viper.Viper,
	logger *log.Logger,
	pendingMessagesWG *sync.WaitGroup,
	statsReporters []interfaces.StatsReporter,
	feedbackReporters []interfaces.FeedbackReporter,
	invalidTokenHandlers []interfaces.InvalidTokenHandler,
	client interfaces.GCMClient,
) (*GCMMessageHandler, error)

NewGCMMessageHandler returns a new instance of a GCMMessageHandler

func (*GCMMessageHandler) CleanMetadataCache added in v1.1.0

func (g *GCMMessageHandler) CleanMetadataCache()

CleanMetadataCache clears cache after timeout

func (*GCMMessageHandler) Cleanup added in v0.2.0

func (g *GCMMessageHandler) Cleanup() error

Cleanup closes connections to GCM

func (*GCMMessageHandler) HandleMessages

func (g *GCMMessageHandler) HandleMessages(msgChan *chan []byte)

HandleMessages get messages from msgChan and send to GCM

func (*GCMMessageHandler) HandleResponses

func (g *GCMMessageHandler) HandleResponses()

HandleResponses from gcm

func (*GCMMessageHandler) LogStats added in v1.0.0

func (g *GCMMessageHandler) LogStats()

LogStats from time to time

type KafkaConsumer added in v0.2.0

type KafkaConsumer struct {
	Brokers       string
	Config        *viper.Viper
	Consumer      interfaces.KafkaConsumerClient
	ConsumerGroup string
	ChannelSize   int
	Logger        *logrus.Logger

	OffsetResetStrategy string

	SessionTimeout int
	Topics         []string

	HandleAllMessagesBeforeExiting bool
	// contains filtered or unexported fields
}

KafkaConsumer for getting push requests

func NewKafkaConsumer added in v0.2.0

func NewKafkaConsumer(
	config *viper.Viper,
	logger *logrus.Logger,
	clientOrNil ...interfaces.KafkaConsumerClient,
) (*KafkaConsumer, error)

NewKafkaConsumer for creating a new KafkaConsumer instance

func (*KafkaConsumer) Cleanup added in v0.2.0

func (q *KafkaConsumer) Cleanup() error

Cleanup closes kafka consumer connection

func (*KafkaConsumer) ConsumeLoop added in v0.2.0

func (q *KafkaConsumer) ConsumeLoop() error

ConsumeLoop consume messages from the queue and put in messages to send channel

func (*KafkaConsumer) MessagesChannel added in v0.2.0

func (q *KafkaConsumer) MessagesChannel() *chan []byte

MessagesChannel returns the channel that will receive all messages got from kafka

func (*KafkaConsumer) PendingMessagesWaitGroup added in v0.2.0

func (q *KafkaConsumer) PendingMessagesWaitGroup() *sync.WaitGroup

PendingMessagesWaitGroup returns the waitGroup that is incremented every time a push is consumed

func (*KafkaConsumer) StopConsuming added in v0.2.0

func (q *KafkaConsumer) StopConsuming()

StopConsuming stops consuming messages from the queue

type KafkaGCMMessage added in v0.2.0

type KafkaGCMMessage struct {
	gcm.XMPPMessage
	Metadata   map[string]interface{} `json:"metadata,omitempty"`
	PushExpiry int64                  `json:"push_expiry,omitempty"`
}

KafkaGCMMessage is a enriched XMPPMessage with a Metadata field

type KafkaProducer added in v0.2.0

type KafkaProducer struct {
	Brokers  string
	Config   *viper.Viper
	Producer interfaces.KafkaProducerClient
	Logger   *log.Logger
	Topic    string
}

KafkaProducer for producing push feedbacks to a kafka queue

func NewKafkaProducer added in v0.2.0

func NewKafkaProducer(config *viper.Viper, logger *log.Logger, clientOrNil ...interfaces.KafkaProducerClient) (*KafkaProducer, error)

NewKafkaProducer for creating a new KafkaProducer instance

func (*KafkaProducer) SendFeedback added in v0.2.0

func (q *KafkaProducer) SendFeedback(feedback []byte)

SendFeedback sends the feedback to the kafka Queue

type Notification

type Notification struct {
	DeviceToken string
	Payload     interface{}
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
	PushExpiry  int64                  `json:"push_expiry,omitempty"`
}

Notification is the notification base struct

type PGClient

type PGClient struct {
	Config  *viper.Viper
	DB      interfaces.DB
	Options *pg.Options
}

PGClient is the struct that connects to PostgreSQL

func NewPGClient

func NewPGClient(prefix string, config *viper.Viper, pgOrNil ...interfaces.DB) (*PGClient, error)

NewPGClient creates a new client

func (*PGClient) Cleanup added in v0.2.0

func (c *PGClient) Cleanup() error

Cleanup closes PG connection

func (*PGClient) Close

func (c *PGClient) Close() error

Close the connections to PG

func (*PGClient) Connect

func (c *PGClient) Connect(prefix string, db interfaces.DB) error

Connect to PG

func (*PGClient) IsConnected

func (c *PGClient) IsConnected() bool

IsConnected determines if the client is connected to PG

func (*PGClient) WaitForConnection

func (c *PGClient) WaitForConnection(timeout int) error

WaitForConnection loops until PG is connected

type ResponseWithMetadata added in v0.2.0

type ResponseWithMetadata struct {
	push.Response
	Timestamp int64                  `json:"timestamp"`
	Metadata  map[string]interface{} `json:"metadata,omitempty"`
}

ResponseWithMetadata is a enriched Response with a Metadata field

type StatsD added in v0.2.0

type StatsD struct {
	Client interfaces.StatsDClient
	Config *viper.Viper
	Logger *logrus.Logger
}

StatsD for sending metrics

func NewStatsD added in v0.2.0

func NewStatsD(config *viper.Viper, logger *logrus.Logger, clientOrNil ...interfaces.StatsDClient) (*StatsD, error)

NewStatsD for creating a new StatsD instance

func (*StatsD) Cleanup added in v0.2.0

func (s *StatsD) Cleanup() error

Cleanup closes statsd connection

func (*StatsD) HandleNotificationFailure added in v0.2.0

func (s *StatsD) HandleNotificationFailure(err *errors.PushError)

HandleNotificationFailure stores each type of failure

func (*StatsD) HandleNotificationSent added in v0.2.0

func (s *StatsD) HandleNotificationSent()

HandleNotificationSent stores notification count in StatsD

func (*StatsD) HandleNotificationSuccess added in v0.2.0

func (s *StatsD) HandleNotificationSuccess()

HandleNotificationSuccess stores notifications success in StatsD

func (*StatsD) ReportGoStats added in v0.2.0

func (s *StatsD) ReportGoStats(
	numGoRoutines int,
	allocatedAndNotFreed, heapObjects, nextGCBytes, pauseGCNano uint64,
)

ReportGoStats reports go stats in statsd

type TimeoutHeap added in v1.1.0

type TimeoutHeap []*timeoutNode

TimeoutHeap is a array of timeoutNode, which has request ID and expiration time

func NewTimeoutHeap added in v1.1.0

func NewTimeoutHeap(
	config *viper.Viper,
) *TimeoutHeap

NewTimeoutHeap creates and returns a new TimeoutHeap

func (*TimeoutHeap) AddRequest added in v1.1.0

func (th *TimeoutHeap) AddRequest(deviceToken string)

AddRequest pushes new request

func (*TimeoutHeap) HasExpiredRequest added in v1.1.0

func (th *TimeoutHeap) HasExpiredRequest() (string, bool)

HasExpiredRequest removes expired request, if any

func (TimeoutHeap) Len added in v1.1.0

func (th TimeoutHeap) Len() int

Len returns the length of the heap

func (TimeoutHeap) Less added in v1.1.0

func (th TimeoutHeap) Less(i, j int) bool

Less returns true if request at index i expires before request at index j

func (*TimeoutHeap) Pop added in v1.1.0

func (th *TimeoutHeap) Pop() interface{}

Pop pops the device token of the next request that expires

func (*TimeoutHeap) Push added in v1.1.0

func (th *TimeoutHeap) Push(x interface{})

Push receives device token string and pushes it to heap

func (TimeoutHeap) Swap added in v1.1.0

func (th TimeoutHeap) Swap(i, j int)

Swap swaps requests at index i and j

type TokenPG added in v0.2.0

type TokenPG struct {
	Client *PGClient
	Config *viper.Viper
	Logger *logrus.Logger
	// contains filtered or unexported fields
}

TokenPG for sending metrics

func NewTokenPG added in v0.2.0

func NewTokenPG(config *viper.Viper, logger *logrus.Logger, dbOrNil ...interfaces.DB) (*TokenPG, error)

NewTokenPG for creating a new TokenPG instance

func (*TokenPG) Cleanup added in v0.2.0

func (t *TokenPG) Cleanup() error

Cleanup closes statsd connection

func (*TokenPG) HandleToken added in v0.2.0

func (t *TokenPG) HandleToken(token string) error

HandleToken handles an invalid token

Jump to

Keyboard shortcuts

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