DBQueryBatchRequestHandler.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System;
  2. using System.Collections.Generic;
  3. using ETModel;
  4. namespace ETHotfix
  5. {
  6. [MessageHandler(AppType.DB)]
  7. public class DBQueryBatchRequestHandler : AMRpcHandler<DBQueryBatchRequest, DBQueryBatchResponse>
  8. {
  9. protected override void Run(Session session, DBQueryBatchRequest message, Action<DBQueryBatchResponse> reply)
  10. {
  11. RunAsync(session, message, reply).NoAwait();
  12. }
  13. protected async ETVoid RunAsync(Session session, DBQueryBatchRequest message, Action<DBQueryBatchResponse> reply)
  14. {
  15. DBQueryBatchResponse response = new DBQueryBatchResponse();
  16. try
  17. {
  18. DBCacheComponent dbCacheComponent = Game.Scene.GetComponent<DBCacheComponent>();
  19. List<ComponentWithId> components = await dbCacheComponent.GetBatch(message.CollectionName, message.IdList);
  20. response.Components = components;
  21. if (message.NeedCache)
  22. {
  23. foreach (ComponentWithId component in components)
  24. {
  25. dbCacheComponent.AddToCache(component, message.CollectionName);
  26. }
  27. }
  28. reply(response);
  29. }
  30. catch (Exception e)
  31. {
  32. ReplyError(response, e, reply);
  33. }
  34. }
  35. }
  36. }