Destroy() does not return error.

This commit is contained in:
Miroslav Šedivý
2021-08-29 19:17:10 +02:00
parent a03507227d
commit a95a987fb6
8 changed files with 37 additions and 63 deletions

View File

@ -236,10 +236,8 @@ func (manager *WebSocketManagerCtx) Upgrade(w http.ResponseWriter, r *http.Reque
logger.Info().Msg("replacing peer connection")
// replace peer connection
if err := session.GetWebSocketPeer().Destroy(); err != nil {
logger.Warn().Err(err).Msg("previous connection closed with an error")
}
// destroy previous peer connection
session.GetWebSocketPeer().Destroy()
}
peer := &WebSocketPeerCtx{

View File

@ -10,7 +10,6 @@ import (
"demodesk/neko/internal/types"
"demodesk/neko/internal/types/event"
"demodesk/neko/internal/types/message"
"demodesk/neko/internal/utils"
)
type WebSocketPeerCtx struct {
@ -41,24 +40,27 @@ func (peer *WebSocketPeerCtx) Send(v interface{}) error {
return peer.connection.WriteMessage(websocket.TextMessage, raw)
}
func (peer *WebSocketPeerCtx) Destroy() error {
func (peer *WebSocketPeerCtx) Destroy() {
peer.mu.Lock()
defer peer.mu.Unlock()
if peer.connection == nil {
return nil
return
}
var errs []error
// send disconnect
err := peer.Send(
if err := peer.Send(
message.SystemDisconnect{
Event: event.SYSTEM_DISCONNECT,
Message: "connection destroyed",
})
errs = append(errs, err)
}); err != nil {
peer.logger.Warn().Err(err).Msg("failed to send disconnect event")
}
// close connection
err = peer.connection.Close()
errs = append(errs, err)
if err := peer.connection.Close(); err != nil {
peer.logger.Warn().Err(err).Msg("peer connection destroyed with an error")
} else {
peer.logger.Info().Msg("peer connection destroyed")
}
return utils.ErrorsJoin(errs)
peer.connection = nil
}