broadcaster

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jan 26, 2017 License: BSD-3-Clause Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AllEventsFilter

type AllEventsFilter struct {
	Filter
}

func (*AllEventsFilter) Matches

func (f *AllEventsFilter) Matches(msg *Message, subscriber *Subscriber) bool

func (*AllEventsFilter) String

func (f *AllEventsFilter) String() string

type Broadcaster

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

func NewBroadcaster

func NewBroadcaster(ctx *common.Context, metrics Metrics) *Broadcaster

func (*Broadcaster) Broadcast

func (b *Broadcaster) Broadcast(message *Message) bool

func (*Broadcaster) Deauthenticate

func (b *Broadcaster) Deauthenticate(user string)

func (*Broadcaster) Run

func (b *Broadcaster) Run()

func (*Broadcaster) Subscribe

func (b *Broadcaster) Subscribe(subscriber *Subscriber) bool

func (*Broadcaster) Unsubscribe

func (b *Broadcaster) Unsubscribe(subscriber *Subscriber) bool

type ContestFilter

type ContestFilter struct {
	Filter
	// contains filtered or unexported fields
}

func (*ContestFilter) Matches

func (f *ContestFilter) Matches(msg *Message, subscriber *Subscriber) bool

func (*ContestFilter) String

func (f *ContestFilter) String() string

type Filter

type Filter interface {
	String() string
	Matches(msg *Message, subscriber *Subscriber) bool
}

func NewFilter

func NewFilter(filter string) (Filter, error)

type Message

type Message struct {
	Contest string `json:"contest,omitempty"`
	Problem string `json:"problem,omitempty"`
	User    string `json:"user,omitempty"`
	Public  bool   `json:"public"`
	Message string `json:"message"`
}

type Metrics

type Metrics interface {
	IncrementWebSocketsCount(delta int)
	IncrementSSECount(delta int)
	IncrementMessagesCount()
	IncrementChannelDropCount()
	ObserveDispatchMessageLatency(latency time.Duration)
	ObserveProcessMessageLatency(latency time.Duration)
}

type ProblemFilter

type ProblemFilter struct {
	Filter
	// contains filtered or unexported fields
}

func (*ProblemFilter) Matches

func (f *ProblemFilter) Matches(msg *Message, subscriber *Subscriber) bool

func (*ProblemFilter) String

func (f *ProblemFilter) String() string

type QueuedMessage

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

func (*QueuedMessage) Dispatched

func (m *QueuedMessage) Dispatched()

func (*QueuedMessage) Processed

func (m *QueuedMessage) Processed()

type SSETransport

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

func (*SSETransport) Close

func (t *SSETransport) Close()

func (*SSETransport) Init

func (t *SSETransport) Init(close chan<- struct{})

func (*SSETransport) Ping

func (t *SSETransport) Ping() error

func (*SSETransport) ReadLoop

func (t *SSETransport) ReadLoop()

func (*SSETransport) Send

func (t *SSETransport) Send(message *QueuedMessage) error

func (*SSETransport) String

func (t *SSETransport) String() string

type Subscriber

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

func NewSubscriber

func NewSubscriber(
	ctx *common.Context,
	client *http.Client,
	requestURL *url.URL,
	authToken string,
	filterString string,
	transport Transport,
) (*Subscriber, error)

func (*Subscriber) Matches

func (s *Subscriber) Matches(msg *Message) bool

func (*Subscriber) Run

func (s *Subscriber) Run()

func (*Subscriber) Send

func (s *Subscriber) Send() chan<- *QueuedMessage

type Transport

type Transport interface {
	fmt.Stringer
	Init(close chan<- struct{})
	Close()
	Ping() error
	ReadLoop()
	Send(message *QueuedMessage) error
}

func NewSSETransport

func NewSSETransport(w http.ResponseWriter) Transport

func NewWebSocketTransport

func NewWebSocketTransport(
	sock *websocket.Conn,
	writeDeadlineDelay time.Duration,
) Transport

type UpstreamError

type UpstreamError struct {
	HTTPStatusCode int
	Contents       []byte
}

func (*UpstreamError) Error

func (e *UpstreamError) Error() string

type UserFilter

type UserFilter struct {
	Filter
	// contains filtered or unexported fields
}

func (*UserFilter) Matches

func (f *UserFilter) Matches(msg *Message, subscriber *Subscriber) bool

func (*UserFilter) String

func (f *UserFilter) String() string

type ValidateFilterResponse

type ValidateFilterResponse struct {
	User         string   `json:"user"`
	Admin        bool     `json:"admin"`
	ProblemAdmin []string `json:"problem_admin"`
	ContestAdmin []string `json:"contest_admin"`
}

type WebSocketTransport

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

func (*WebSocketTransport) Close

func (t *WebSocketTransport) Close()

func (*WebSocketTransport) Init

func (t *WebSocketTransport) Init(close chan<- struct{})

func (*WebSocketTransport) Ping

func (t *WebSocketTransport) Ping() error

func (*WebSocketTransport) ReadLoop

func (t *WebSocketTransport) ReadLoop()

func (*WebSocketTransport) Send

func (t *WebSocketTransport) Send(message *QueuedMessage) error

func (*WebSocketTransport) String

func (t *WebSocketTransport) String() string

Jump to

Keyboard shortcuts

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