send unicast & broadcast.

This commit is contained in:
Miroslav Šedivý
2021-01-28 15:56:50 +01:00
parent c27658d54c
commit 8e13a60677
4 changed files with 69 additions and 0 deletions

View File

@ -86,6 +86,18 @@ func (h *MessageHandlerCtx) Message(session types.Session, raw []byte) bool {
err = utils.Unmarshal(payload, raw, func() error {
return h.keyboardModifiers(session, payload)
})
// Send Events
case event.SEND_UNICAST:
payload := &message.SendUnicast{}
err = utils.Unmarshal(payload, raw, func() error {
return h.sendUnicast(session, payload)
})
case event.SEND_BROADCAST:
payload := &message.SendBroadcast{}
err = utils.Unmarshal(payload, raw, func() error {
return h.sendBroadcast(session, payload)
})
default:
return false
}

View File

@ -0,0 +1,33 @@
package handler
import (
"demodesk/neko/internal/types"
"demodesk/neko/internal/types/message"
"demodesk/neko/internal/types/event"
)
func (h *MessageHandlerCtx) sendUnicast(session types.Session, payload *message.SendUnicast) error {
receiver, ok := h.sessions.Get(payload.Receiver)
if !ok {
h.logger.Debug().Str("id", session.ID()).Msg("receiver ID not found")
return nil
}
return receiver.Send(message.SendUnicast{
Event: event.SEND_UNICAST,
Sender: session.ID(),
Receiver: receiver.ID(),
Subject: payload.Subject,
Body: payload.Body,
})
}
func (h *MessageHandlerCtx) sendBroadcast(session types.Session, payload *message.SendBroadcast) error {
h.sessions.Broadcast(message.SendBroadcast{
Event: event.SEND_BROADCAST,
Sender: session.ID(),
Subject: payload.Subject,
Body: payload.Body,
}, []string{ session.ID() })
return nil
}