mirror of
https://github.com/m1k1o/neko.git
synced 2025-05-10 07:37:26 +02:00
update control WS.
This commit is contained in:
parent
4bbf3bb039
commit
2e090eb54d
6 changed files with 42 additions and 95 deletions
|
@ -12,71 +12,35 @@ func (h *MessageHandlerCtx) controlRelease(session types.Session) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
h.logger.Debug().Str("id", session.ID()).Msgf("host called %s", event.CONTROL_RELEASE)
|
||||
h.sessions.ClearHost()
|
||||
|
||||
h.sessions.Broadcast(
|
||||
message.Control{
|
||||
Event: event.CONTROL_RELEASE,
|
||||
ID: session.ID(),
|
||||
message.ControlHost{
|
||||
Event: event.CONTROL_HOST,
|
||||
HasHost: false,
|
||||
}, nil)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *MessageHandlerCtx) controlRequest(session types.Session) error {
|
||||
// TODO: Allow implicit requests.
|
||||
host := h.sessions.GetHost()
|
||||
|
||||
if host == nil {
|
||||
// set host
|
||||
h.sessions.SetHost(session)
|
||||
|
||||
// let everyone know
|
||||
h.sessions.Broadcast(
|
||||
message.Control{
|
||||
Event: event.CONTROL_LOCKED,
|
||||
ID: session.ID(),
|
||||
}, nil)
|
||||
} else {
|
||||
if host != nil {
|
||||
// tell session there is a host
|
||||
if err := session.Send(
|
||||
message.Control{
|
||||
Event: event.CONTROL_REQUEST,
|
||||
ID: host.ID(),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// tell host session wants to be host
|
||||
return host.Send(
|
||||
message.Control{
|
||||
Event: event.CONTROL_REQUESTING,
|
||||
ID: session.ID(),
|
||||
return session.Send(
|
||||
message.ControlHost{
|
||||
Event: event.CONTROL_HOST,
|
||||
HasHost: true,
|
||||
HostID: host.ID(),
|
||||
})
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *MessageHandlerCtx) controlGive(session types.Session, payload *message.Control) error {
|
||||
if !session.IsHost() {
|
||||
h.logger.Debug().Str("id", session.ID()).Msg("is not the host")
|
||||
return nil
|
||||
}
|
||||
|
||||
target, ok := h.sessions.Get(payload.ID)
|
||||
if !ok {
|
||||
h.logger.Debug().Str("id", payload.ID).Msg("can't find target session")
|
||||
return nil
|
||||
}
|
||||
|
||||
h.sessions.SetHost(target)
|
||||
|
||||
h.sessions.SetHost(session)
|
||||
h.sessions.Broadcast(
|
||||
message.ControlTarget{
|
||||
Event: event.CONTROL_GIVE,
|
||||
ID: session.ID(),
|
||||
Target: target.ID(),
|
||||
message.ControlHost{
|
||||
Event: event.CONTROL_HOST,
|
||||
HasHost: true,
|
||||
HostID: session.ID(),
|
||||
}, nil)
|
||||
|
||||
return nil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue