mirror of
https://github.com/tmrts/go-patterns.git
synced 2026-02-04 14:46:19 +00:00
Include more patterns and a logo
This commit is contained in:
62
publish_subscribe.go
Normal file
62
publish_subscribe.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrTopicClosed = errors.New("Topic has been closed")
|
||||
)
|
||||
|
||||
// Message
|
||||
type Message string
|
||||
|
||||
// Topic
|
||||
type Topic struct {
|
||||
Subscribers []Authentication
|
||||
MessageHistory []struct {
|
||||
Author string
|
||||
Message Message
|
||||
Timestamp time.Time
|
||||
}
|
||||
}
|
||||
|
||||
// Subscribe
|
||||
func (t *Topic) Subscribe(Authentication) (Subscription, error) {
|
||||
// Implementation
|
||||
}
|
||||
|
||||
// Unsubscribe
|
||||
func (t *Topic) Unsubscribe(Subscription) error {
|
||||
// Implementation
|
||||
}
|
||||
|
||||
// Delete
|
||||
func (t *Topic) Delete() error {
|
||||
// Implementation
|
||||
}
|
||||
|
||||
type Subscription struct {
|
||||
ch chan<- Message
|
||||
|
||||
Inbox chan Message
|
||||
}
|
||||
|
||||
// Publish
|
||||
func (s *Subscription) Publish(msg Message) error {
|
||||
if _, ok := ch; !ok {
|
||||
return ErrTopicClosed
|
||||
}
|
||||
|
||||
ch <- msg
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Authentication
|
||||
type Authentication struct {
|
||||
}
|
||||
|
||||
func main() {
|
||||
}
|
||||
Reference in New Issue
Block a user