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

@ -52,6 +52,11 @@ const (
BORADCAST_STATUS = "broadcast/status"
)
const (
SEND_UNICAST = "send/unicast"
SEND_BROADCAST = "send/broadcast"
)
const (
FILE_CHOOSER_DIALOG_OPENED = "file_chooser_dialog/opened"
FILE_CHOOSER_DIALOG_CLOSED = "file_chooser_dialog/closed"

View File

@ -167,3 +167,22 @@ type BroadcastStatus struct {
IsActive bool `json:"is_active"`
URL string `json:"url,omitempty"`
}
/////////////////////////////
// Send (opaque comunication channel)
/////////////////////////////
type SendUnicast struct {
Event string `json:"event,omitempty"`
Sender string `json:"sender"`
Receiver string `json:"receiver"`
Subject string `json:"subject"`
Body string `json:"body"`
}
type SendBroadcast struct {
Event string `json:"event,omitempty"`
Sender string `json:"sender"`
Subject string `json:"subject"`
Body string `json:"body"`
}

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
}