Beispiel #1
0
        static bool IsOnlyUser(WorldSession mySession)
        {
            // check if there is any session connected from a different address
            string myAddr   = mySession ? mySession.GetRemoteAddress() : "";
            var    sessions = Global.WorldMgr.GetAllSessions();

            foreach (var session in sessions)
            {
                if (session && myAddr != session.GetRemoteAddress())
                {
                    return(false);
                }
            }
            return(true);
        }
        public void Invoke(WorldSession session, MethodCall methodCall, CodedInputStream stream)
        {
            var request = (IMessage)Activator.CreateInstance(requestType);

            request.MergeFrom(stream);

            BattlenetRpcErrorCode status;

            if (responseType != null)
            {
                var response = (IMessage)Activator.CreateInstance(responseType);
                status = (BattlenetRpcErrorCode)methodCaller.DynamicInvoke(session, request, response);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server Method: {1}) Returned: {2} Status: {3}.", session.GetRemoteAddress(), request, response, status);
                if (status == 0)
                {
                    session.SendBattlenetResponse(methodCall.GetServiceHash(), methodCall.GetMethodId(), methodCall.Token, response);
                }
                else
                {
                    session.SendBattlenetResponse(methodCall.GetServiceHash(), methodCall.GetMethodId(), methodCall.Token, status);
                }
            }
            else
            {
                status = (BattlenetRpcErrorCode)methodCaller.DynamicInvoke(session, request);
                Log.outDebug(LogFilter.ServiceProtobuf, "{0} Client called server Method: {1}) Status: {2}.", session.GetRemoteAddress(), request, status);
                if (status != 0)
                {
                    session.SendBattlenetResponse(methodCall.GetServiceHash(), methodCall.GetMethodId(), methodCall.Token, status);
                }
            }
        }