prepare code skeleton to develop remaining managers
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package prism
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
type NoticeReceived struct {
|
||||
Message string
|
||||
At time.Time
|
||||
}
|
||||
|
||||
type Notice struct {
|
||||
PeerID string
|
||||
Message string
|
||||
Timestamp time.Time
|
||||
}
|
||||
|
||||
type NoticeHandler struct {
|
||||
envoy *Envoy
|
||||
inbox <-chan InboxMessage
|
||||
notices chan Notice
|
||||
|
||||
ctx context.Context
|
||||
cancel context.CancelFunc
|
||||
wg sync.WaitGroup
|
||||
}
|
||||
|
||||
func NewNoticeHandler(e *Envoy) *NoticeHandler {
|
||||
// SubscribeInbox([]string{"NOTICE"})
|
||||
// make(chan Notice, 16)
|
||||
// context.WithCancel from e.Context()
|
||||
// wg.Add(1); go h.route()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *NoticeHandler) Notices() <-chan Notice { return h.notices }
|
||||
|
||||
func (h *NoticeHandler) Close() {
|
||||
// h.cancel()
|
||||
// h.wg.Wait()
|
||||
// close(h.notices)
|
||||
}
|
||||
|
||||
func (h *NoticeHandler) route() {
|
||||
defer h.wg.Done()
|
||||
// select ctx.Done | inbox msg
|
||||
// msg: envelope.FindNotice → on err continue
|
||||
// push Notice{PeerID, Message, time.Now()} to h.notices (blocking)
|
||||
// e.Observer().Record(e.PeerID(), NoticeReceived{...})
|
||||
}
|
||||
Reference in New Issue
Block a user