Ejemplo n.º 1
0
        public override void Query(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.presence.QueryRequest request, System.Action <bnet.protocol.presence.QueryResponse> done)
        {
            Logger.Trace("Query() {0}: {1}", request.EntityId.GetHighIdType(), request.EntityId.Low);

            var builder = bnet.protocol.presence.QueryResponse.CreateBuilder();
            var toon    = ToonManager.GetToonByLowID(request.EntityId.Low);

            foreach (var key in request.KeyList)
            {
                var field = toon.QueryField(key);
                if (field != null)
                {
                    builder.AddField(field);
                }
            }

            done(builder.Build());
        }
Ejemplo n.º 2
0
        public override void Query(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.presence.QueryRequest request, Action <bnet.protocol.presence.QueryResponse> done)
        {
            var builder = bnet.protocol.presence.QueryResponse.CreateBuilder();

            switch (request.EntityId.GetHighIdType())
            {
            case EntityIdHelper.HighIdType.AccountId:
                var account = AccountManager.GetAccountByPersistentID(request.EntityId.Low);
                foreach (var key in request.KeyList)
                {
                    Logger.Trace("Query() {0} {1} - {2}, {3}, {4}", this.Client, account, (FieldKeyHelper.Program)key.Program, (FieldKeyHelper.OriginatingClass)key.Group, key.Field);
                    var field = account.QueryField(key);
                    if (field != null)
                    {
                        builder.AddField(field);
                    }
                }
                break;

            case EntityIdHelper.HighIdType.GameAccountId:
                var gameaccount = GameAccountManager.GetAccountByPersistentID(request.EntityId.Low);
                foreach (var key in request.KeyList)
                {
                    Logger.Trace("Query() {0} {1} - {2}, {3}, {4}", this.Client, gameaccount, (FieldKeyHelper.Program)key.Program, (FieldKeyHelper.OriginatingClass)key.Group, key.Field);
                    var field = gameaccount.QueryField(key);
                    if (field != null)
                    {
                        builder.AddField(field);
                    }
                }
                break;

            default:
                Logger.Warn("Recieved an unhandled Presence.Query request with type {0} (0x{1})", request.EntityId.GetHighIdType(), request.EntityId.High.ToString("X16"));
                break;
            }

            done(builder.Build());
        }
Ejemplo n.º 3
0
        public override void Query(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.presence.QueryRequest request, Action <bnet.protocol.presence.QueryResponse> done)
        {
            var builder = bnet.protocol.presence.QueryResponse.CreateBuilder();

            switch (request.EntityId.GetHighIdType())
            {
            case EntityIdHelper.HighIdType.AccountId:
                var account = AccountManager.GetAccountByPersistentID(request.EntityId.Low);
                Logger.Trace("Query() {0} {1}", this.Client, account);
                foreach (var key in request.KeyList)
                {
                    var field = account.QueryField(key);
                    if (field != null)
                    {
                        builder.AddField(field);
                    }
                }

                break;

            case EntityIdHelper.HighIdType.ToonId:
                var toon = ToonManager.GetToonByLowID(request.EntityId.Low);
                Logger.Trace("Query() {0} {1}", this.Client, toon);
                foreach (var key in request.KeyList)
                {
                    var field = toon.QueryField(key);
                    if (field != null)
                    {
                        builder.AddField(field);
                    }
                }

                break;
            }

            done(builder.Build());
        }