Commit 1988240b authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Add runtime user account retrieval functions.

parent a9a3db7f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ func (s *ApiServer) GetUsers(ctx context.Context, in *api.GetUsersRequest) (*api
		facebookIDs = in.GetFacebookIds()
	}

	users, err := GetUsers(s.db, s.logger, s.tracker, ids, usernames, facebookIDs)
	users, err := GetUsers(s.logger, s.db, s.tracker, ids, usernames, facebookIDs)
	if err != nil {
		return nil, status.Error(codes.Internal, "Error retrieving user accounts.")
	}
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import (
	"go.uber.org/zap"
)

func GetUsers(db *sql.DB, logger *zap.Logger, tracker Tracker, ids, usernames, fbIDs []string) (*api.Users, error) {
func GetUsers(logger *zap.Logger, db *sql.DB, tracker Tracker, ids, usernames, fbIDs []string) (*api.Users, error) {
	query := `
SELECT id, username, display_name, avatar_url, lang_tag, location, timezone, metadata,
	facebook_id, google_id, gamecenter_id, steam_id, edge_count, create_time, update_time
+8 −9
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ func NewMatchHandler(logger *zap.Logger, db *sql.DB, config Config, socialClient
	vm.PreloadModule("nakama", nakamaModule.Loader)

	// Create the context to be used throughout this match.
	ctx := vm.CreateTable(6, 6)
	ctx := vm.CreateTable(0, 6)
	ctx.RawSetString(__CTX_ENV, ConvertMap(vm, config.GetRuntime().Environment))
	ctx.RawSetString(__CTX_MODE, lua.LString(Match.String()))
	ctx.RawSetString(__CTX_MATCH_ID, lua.LString(fmt.Sprintf("%v:%v", id.String(), node)))
@@ -231,7 +231,7 @@ func NewMatchHandler(logger *zap.Logger, db *sql.DB, config Config, socialClient
	}

	// Set up the dispatcher that exposes control functions to the match loop.
	mh.dispatcher = vm.SetFuncs(vm.CreateTable(2, 2), map[string]lua.LGFunction{
	mh.dispatcher = vm.SetFuncs(vm.CreateTable(0, 2), map[string]lua.LGFunction{
		"broadcast_message": mh.broadcastMessage,
		"match_kick":        mh.matchKick,
	})
@@ -315,17 +315,17 @@ func loop(mh *MatchHandler) {

	// Drain the input queue into a Lua table.
	size := len(mh.inputCh)
	input := mh.vm.CreateTable(size, size)
	input := mh.vm.CreateTable(size, 0)
	for i := 1; i <= size; i++ {
		msg := <-mh.inputCh

		presence := mh.vm.CreateTable(4, 4)
		presence := mh.vm.CreateTable(0, 4)
		presence.RawSetString("user_id", lua.LString(msg.UserID.String()))
		presence.RawSetString("session_id", lua.LString(msg.SessionID.String()))
		presence.RawSetString("username", lua.LString(msg.Username))
		presence.RawSetString("node", lua.LString(msg.Node))

		in := mh.vm.CreateTable(3, 3)
		in := mh.vm.CreateTable(0, 3)
		in.RawSetString("sender", presence)
		in.RawSetString("op_code", lua.LNumber(msg.OpCode))
		if msg.Data != nil {
@@ -383,7 +383,7 @@ func JoinAttempt(resultCh chan *MatchJoinResult, userID, sessionID uuid.UUID, us
		}
		mh.Unlock()

		presence := mh.vm.CreateTable(4, 4)
		presence := mh.vm.CreateTable(0, 4)
		presence.RawSetString("user_id", lua.LString(userID.String()))
		presence.RawSetString("session_id", lua.LString(sessionID.String()))
		presence.RawSetString("username", lua.LString(username))
@@ -452,10 +452,9 @@ func Leave(leaves []*MatchPresence) func(mh *MatchHandler) {
		}
		mh.Unlock()

		size := len(leaves)
		presences := mh.vm.CreateTable(size, size)
		presences := mh.vm.CreateTable(len(leaves), 0)
		for i, p := range leaves {
			presence := mh.vm.CreateTable(4, 4)
			presence := mh.vm.CreateTable(0, 4)
			presence.RawSetString("user_id", lua.LString(p.UserID.String()))
			presence.RawSetString("session_id", lua.LString(p.SessionID.String()))
			presence.RawSetString("username", lua.LString(p.Username))
+2 −2
Original line number Diff line number Diff line
@@ -55,12 +55,12 @@ func (r *LocalMessageRouter) SendToPresenceIDs(logger *zap.Logger, presenceIDs [
		session := r.sessionRegistry.Get(presenceID.SessionID)
		if session == nil {
			if logger.Core().Enabled(zap.DebugLevel) {
				logger.Debug("No session to route to", zap.Any("sid", presenceID.SessionID))
				logger.Debug("No session to route to", zap.String("sid", presenceID.SessionID.String()))
			}
			continue
		}
		if err := session.SendBytes(payloadBytes); err != nil {
			logger.Error("Failed to route to", zap.Any("sid", presenceID.SessionID), zap.Error(err))
			logger.Error("Failed to route to", zap.String("sid", presenceID.SessionID.String()), zap.Error(err))
		}
	}
}
+3 −5
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ func NewLuaContext(l *lua.LState, env *lua.LTable, mode ExecutionMode, uid strin
		}
	}

	lt := l.CreateTable(size, size)
	lt := l.CreateTable(0, size)
	lt.RawSetString(__CTX_ENV, env)
	lt.RawSetString(__CTX_MODE, lua.LString(mode.String()))

@@ -80,8 +80,7 @@ func NewLuaContext(l *lua.LState, env *lua.LTable, mode ExecutionMode, uid strin
}

func ConvertMap(l *lua.LState, data map[string]interface{}) *lua.LTable {
	size := len(data)
	lt := l.CreateTable(size, size)
	lt := l.CreateTable(0, len(data))

	for k, v := range data {
		lt.RawSetString(k, convertValue(l, v))
@@ -127,8 +126,7 @@ func convertValue(l *lua.LState, val interface{}) lua.LValue {
	case map[string]interface{}:
		return ConvertMap(l, v)
	case []interface{}:
		size := len(val.([]interface{}))
		lt := l.CreateTable(size, size)
		lt := l.CreateTable(len(val.([]interface{})), 0)
		for k, v := range v {
			lt.RawSetInt(k+1, convertValue(l, v))
		}
Loading