TranslationJob_Main.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System.Collections.Generic;
  2. namespace I2.Loc
  3. {
  4. using TranslationDictionary = Dictionary<string, TranslationQuery>;
  5. public class TranslationJob_Main : TranslationJob
  6. {
  7. TranslationJob_WEB mWeb;
  8. TranslationJob_POST mPost;
  9. TranslationJob_GET mGet;
  10. TranslationDictionary _requests;
  11. GoogleTranslation.fnOnTranslationReady _OnTranslationReady;
  12. public string mErrorMessage;
  13. public TranslationJob_Main(TranslationDictionary requests, GoogleTranslation.fnOnTranslationReady OnTranslationReady)
  14. {
  15. _requests = requests;
  16. _OnTranslationReady = OnTranslationReady;
  17. //mWeb = new TranslationJob_WEB(requests, OnTranslationReady);
  18. mPost = new TranslationJob_POST(requests, OnTranslationReady);
  19. }
  20. public override eJobState GetState()
  21. {
  22. if (mWeb != null)
  23. {
  24. var state = mWeb.GetState();
  25. switch (state)
  26. {
  27. case eJobState.Running: return eJobState.Running;
  28. case eJobState.Succeeded:
  29. {
  30. mJobState = eJobState.Succeeded;
  31. break;
  32. }
  33. case eJobState.Failed:
  34. {
  35. mWeb.Dispose();
  36. mWeb = null;
  37. mPost = new TranslationJob_POST(_requests, _OnTranslationReady);
  38. break;
  39. }
  40. }
  41. }
  42. if (mPost != null)
  43. {
  44. var state = mPost.GetState();
  45. switch (state)
  46. {
  47. case eJobState.Running: return eJobState.Running;
  48. case eJobState.Succeeded:
  49. {
  50. mJobState = eJobState.Succeeded;
  51. break;
  52. }
  53. case eJobState.Failed:
  54. {
  55. mPost.Dispose();
  56. mPost = null;
  57. mGet = new TranslationJob_GET(_requests, _OnTranslationReady);
  58. break;
  59. }
  60. }
  61. }
  62. if (mGet != null)
  63. {
  64. var state = mGet.GetState();
  65. switch (state)
  66. {
  67. case eJobState.Running: return eJobState.Running;
  68. case eJobState.Succeeded:
  69. {
  70. mJobState = eJobState.Succeeded;
  71. break;
  72. }
  73. case eJobState.Failed:
  74. {
  75. mErrorMessage = mGet.mErrorMessage;
  76. if (_OnTranslationReady != null)
  77. _OnTranslationReady(_requests, mErrorMessage);
  78. mGet.Dispose();
  79. mGet = null;
  80. break;
  81. }
  82. }
  83. }
  84. return mJobState;
  85. }
  86. public override void Dispose()
  87. {
  88. if (mPost != null) mPost.Dispose();
  89. if (mGet != null) mGet.Dispose();
  90. mPost = null;
  91. mGet = null;
  92. }
  93. }
  94. }