Skip to content

Commit

Permalink
Define SimpleHandler struct
Browse files Browse the repository at this point in the history
  • Loading branch information
high-moctane committed Aug 21, 2024
1 parent ce8c891 commit 3fb4bf2
Showing 1 changed file with 42 additions and 34 deletions.
76 changes: 42 additions & 34 deletions handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,47 +41,55 @@ type SimpleHandlerBase interface {
ServeNostrClientMsg(context.Context, ClientMsg) (<-chan ServerMsg, error)
}

func NewSimpleHandler(h SimpleHandlerBase) Handler {
return HandlerFunc(
func(ctx context.Context, send chan<- ServerMsg, recv <-chan ClientMsg) (err error) {
ctx, err = h.ServeNostrStart(ctx)
type SimpleHandler struct {
base SimpleHandlerBase
}

func NewSimpleHandler(base SimpleHandlerBase) *SimpleHandler {
return &SimpleHandler{base: base}
}

func (h *SimpleHandler) ServeNostr(
ctx context.Context,
send chan<- ServerMsg,
recv <-chan ClientMsg,
) error {
ctx, err := h.base.ServeNostrStart(ctx)
if err != nil {
return fmt.Errorf("failed to start: %w", err)
}
defer func() { err = errors.Join(err, h.base.ServeNostrEnd(ctx)) }()

for {
select {
case <-ctx.Done():
return ctx.Err()

case cmsg, ok := <-recv:
if !ok {
return ErrRecvClosed
}
smsgCh, err := h.base.ServeNostrClientMsg(ctx, cmsg)
if err != nil {
return
return fmt.Errorf("failed to serve client msg: %w", err)
}
defer func() { err = errors.Join(err, h.ServeNostrEnd(ctx)) }()

for {
select {
case <-ctx.Done():
return ctx.Err()
if smsgCh != nil {
L:
for {
select {
case <-ctx.Done():
return ctx.Err()

case cmsg, ok := <-recv:
if !ok {
return ErrRecvClosed
}
smsgCh, err := h.ServeNostrClientMsg(ctx, cmsg)
if err != nil {
return err
}
if smsgCh != nil {
L:
for {
select {
case <-ctx.Done():
return ctx.Err()

case smsg, ok := <-smsgCh:
if !ok {
break L
}
sendServerMsgCtx(ctx, send, smsg)
}
case smsg, ok := <-smsgCh:
if !ok {
break L
}
sendServerMsgCtx(ctx, send, smsg)
}
}
}
},
)
}
}
}

type DefaultSimpleHandlerBase struct{}
Expand Down

0 comments on commit 3fb4bf2

Please sign in to comment.