wrote revised library skeleton
This commit is contained in:
@@ -1 +1,62 @@
|
||||
package prism
|
||||
|
||||
import (
|
||||
"context"
|
||||
"git.wisehodl.dev/jay/go-honeybee"
|
||||
"log/slog"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Types
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Letters
|
||||
|
||||
type InboundLetter struct {
|
||||
ID string
|
||||
Data Envelope
|
||||
At time.Time
|
||||
}
|
||||
|
||||
// Clerk
|
||||
|
||||
type Clerk struct {
|
||||
inbox <-chan honeybee.InboxMessage
|
||||
|
||||
// wiring phase
|
||||
mu sync.Mutex
|
||||
started bool
|
||||
pending []clerkSub
|
||||
known map[string]struct{}
|
||||
|
||||
// runtime phase
|
||||
routes clerkRoutes
|
||||
|
||||
ctx context.Context
|
||||
cancel context.CancelFunc
|
||||
wg sync.WaitGroup
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
type clerkSub struct {
|
||||
ch chan InboundLetter
|
||||
labels map[string]struct{}
|
||||
}
|
||||
|
||||
type clerkRoutes = map[string][]chan InboundLetter
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Clerk
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
func NewClerk() *Clerk {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Clerk) Subscribe() {}
|
||||
|
||||
func (c *Clerk) Start() {}
|
||||
|
||||
func (c *Clerk) Close() {}
|
||||
|
||||
Reference in New Issue
Block a user