diff --git a/go.mod b/go.mod index 727896d42f13672ff5ca1c2d7bf2b2af967645bd..360f69b68598644b637201e8b028fa42d24a4355 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/gorilla/mux v1.7.4 github.com/gorilla/websocket v1.4.2 github.com/grpc-ecosystem/grpc-gateway/v2 v2.0.1 - github.com/heroiclabs/nakama-common v0.0.0-20210310182534-5118454ac852 + github.com/heroiclabs/nakama-common v0.0.0-20210324184331-c33a19836925 github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect github.com/jackc/pgx v3.5.0+incompatible github.com/jmhodges/levigo v1.0.0 // indirect diff --git a/go.sum b/go.sum index 4d35da10d9f3196605965d534c70df21f052219e..c72246922b0cdfaa61bb235b0826c0d8c490738a 100644 --- a/go.sum +++ b/go.sum @@ -187,6 +187,8 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/heroiclabs/nakama-common v0.0.0-20210310182534-5118454ac852 h1:CQ1sqllnrpnDySXVxB8H0GKVG9ht/TjziZOnAixUzR0= github.com/heroiclabs/nakama-common v0.0.0-20210310182534-5118454ac852/go.mod h1:li7bMQwOYA0NjT3DM4NKQBNruULPa2hrqdiSaaTwui4= +github.com/heroiclabs/nakama-common v0.0.0-20210324184331-c33a19836925 h1:ga9O6p73ddcCbLZ48IBJBq06SOtBB7X8GM/Sku0WxTY= +github.com/heroiclabs/nakama-common v0.0.0-20210324184331-c33a19836925/go.mod h1:li7bMQwOYA0NjT3DM4NKQBNruULPa2hrqdiSaaTwui4= github.com/heroiclabs/nakama-common v1.12.1 h1:3ZB9CW5iCF/bWipFeULEBzZz/j/QYPGjbs7HyRUITu8= github.com/heroiclabs/nakama-common v1.12.1/go.mod h1:li7bMQwOYA0NjT3DM4NKQBNruULPa2hrqdiSaaTwui4= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= diff --git a/server/runtime_go_nakama.go b/server/runtime_go_nakama.go index 487367ba42775f725de9e525b76214e306c1c2da..70cc2e4286edcaa2cec715b82b0bf159dfd12eb1 100644 --- a/server/runtime_go_nakama.go +++ b/server/runtime_go_nakama.go @@ -1023,7 +1023,7 @@ func (n *RuntimeGoNakamaModule) StreamSendRaw(mode uint8, subject, subcontext, l return nil } -func (n *RuntimeGoNakamaModule) SessionDisconnect(ctx context.Context, sessionID string) error { +func (n *RuntimeGoNakamaModule) SessionDisconnect(ctx context.Context, sessionID string, reason ...runtime.PresenceReason) error { sid, err := uuid.FromString(sessionID) if err != nil { return errors.New("expects valid session id") diff --git a/server/session_registry.go b/server/session_registry.go index 9a1300037e6235b32a4faa6813a7efabe7abde5a..2f59a46fb006475b378d06708d56ac5795759518 100644 --- a/server/session_registry.go +++ b/server/session_registry.go @@ -62,7 +62,7 @@ type SessionRegistry interface { Get(sessionID uuid.UUID) Session Add(session Session) Remove(sessionID uuid.UUID) - Disconnect(ctx context.Context, sessionID uuid.UUID) error + Disconnect(ctx context.Context, sessionID uuid.UUID, reason ...runtime.PresenceReason) error } type LocalSessionRegistry struct { @@ -107,11 +107,15 @@ func (r *LocalSessionRegistry) Remove(sessionID uuid.UUID) { r.metrics.GaugeSessions(float64(count)) } -func (r *LocalSessionRegistry) Disconnect(ctx context.Context, sessionID uuid.UUID) error { +func (r *LocalSessionRegistry) Disconnect(ctx context.Context, sessionID uuid.UUID, reason ...runtime.PresenceReason) error { session, ok := r.sessions.Load(sessionID) if ok { // No need to remove the session from the map, session.Close() will do that. - session.(Session).Close("server-side session disconnect", runtime.PresenceReasonLeave) + reasonOverride := runtime.PresenceReasonDisconnect + if len(reason) > 0 { + reasonOverride = reason[0] + } + session.(Session).Close("server-side session disconnect", reasonOverride) } return nil } diff --git a/vendor/github.com/heroiclabs/nakama-common/runtime/runtime.go b/vendor/github.com/heroiclabs/nakama-common/runtime/runtime.go index 93f6fd7870c137d332762e1cb77143866dc6b035..e0b82ded8b8e8f41069b2aa3c6077080010a16c4 100644 --- a/vendor/github.com/heroiclabs/nakama-common/runtime/runtime.go +++ b/vendor/github.com/heroiclabs/nakama-common/runtime/runtime.go @@ -892,7 +892,7 @@ type NakamaModule interface { StreamSend(mode uint8, subject, subcontext, label, data string, presences []Presence, reliable bool) error StreamSendRaw(mode uint8, subject, subcontext, label string, msg *rtapi.Envelope, presences []Presence, reliable bool) error - SessionDisconnect(ctx context.Context, sessionID string) error + SessionDisconnect(ctx context.Context, sessionID string, reason ...PresenceReason) error SessionLogout(userID, token, refreshToken string) error MatchCreate(ctx context.Context, module string, params map[string]interface{}) (string, error) diff --git a/vendor/modules.txt b/vendor/modules.txt index be20eb9f4e60918cbe78154b5dce2fb2cc08f0a8..22a593989587b762f548487ab1536624a9497460 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -149,7 +149,7 @@ github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/internal/genopena github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options github.com/grpc-ecosystem/grpc-gateway/v2/runtime github.com/grpc-ecosystem/grpc-gateway/v2/utilities -# github.com/heroiclabs/nakama-common v0.0.0-20210310182534-5118454ac852 +# github.com/heroiclabs/nakama-common v0.0.0-20210324184331-c33a19836925 ## explicit github.com/heroiclabs/nakama-common/api github.com/heroiclabs/nakama-common/rtapi