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()); }
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()); }
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()); }