DBQueryRequestHandler.cs 959 B

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using ETModel;
  3. namespace ETHotfix
  4. {
  5. [MessageHandler(AppType.DB)]
  6. public class DBQueryRequestHandler : AMRpcHandler<DBQueryRequest, DBQueryResponse>
  7. {
  8. protected override void Run(Session session, DBQueryRequest message, Action<DBQueryResponse> reply)
  9. {
  10. RunAsync(session, message, reply).NoAwait();
  11. }
  12. protected async ETVoid RunAsync(Session session, DBQueryRequest message, Action<DBQueryResponse> reply)
  13. {
  14. DBQueryResponse response = new DBQueryResponse();
  15. try
  16. {
  17. DBCacheComponent dbCacheComponent = Game.Scene.GetComponent<DBCacheComponent>();
  18. ComponentWithId component = await dbCacheComponent.Get(message.CollectionName, message.Id);
  19. response.Component = component;
  20. if (message.NeedCache && component != null)
  21. {
  22. dbCacheComponent.AddToCache(component, message.CollectionName);
  23. }
  24. reply(response);
  25. }
  26. catch (Exception e)
  27. {
  28. ReplyError(response, e, reply);
  29. }
  30. }
  31. }
  32. }