/DotNet/Source/ProtoBufRemote/ServiceThunkHelpers.cs

https://code.google.com/p/protobuf-remote/ · C# · 176 lines · 166 code · 10 blank · 0 comment · 31 complexity · a7494eadde2fdf488b8e48be89609af9 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. namespace ProtoBufRemote
  4. {
  5. internal static class ServiceThunkHelpers
  6. {
  7. public static bool VerifyParameterCount(IList<RpcMessage.Parameter> parameters, int expectedCount,
  8. RpcMessage.Result resultMessage)
  9. {
  10. if (parameters.Count != expectedCount)
  11. {
  12. if (resultMessage != null)
  13. {
  14. resultMessage.IsFailed = true;
  15. resultMessage.ErrorMessage = "Wrong number of parameters";
  16. }
  17. return false;
  18. }
  19. return true;
  20. }
  21. public static bool IntFromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  22. ref int value)
  23. {
  24. string error = null;
  25. if (!ParameterConverter.IntFromMessage(parameter, ref value, ref error))
  26. {
  27. if (resultMessage != null)
  28. {
  29. resultMessage.IsFailed = true;
  30. resultMessage.ErrorMessage =
  31. String.Format("Cannot convert call parameter value into expected int type ({0})", error);
  32. }
  33. return false;
  34. }
  35. return true;
  36. }
  37. public static bool UintFromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  38. ref uint value)
  39. {
  40. string error = null;
  41. if (!ParameterConverter.UintFromMessage(parameter, ref value, ref error))
  42. {
  43. if (resultMessage != null)
  44. {
  45. resultMessage.IsFailed = true;
  46. resultMessage.ErrorMessage =
  47. String.Format("Cannot convert call parameter value into expected uint type ({0})", error);
  48. }
  49. return false;
  50. }
  51. return true;
  52. }
  53. public static bool Int64FromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  54. ref long value)
  55. {
  56. string error = null;
  57. if (!ParameterConverter.Int64FromMessage(parameter, ref value, ref error))
  58. {
  59. if (resultMessage != null)
  60. {
  61. resultMessage.IsFailed = true;
  62. resultMessage.ErrorMessage =
  63. String.Format("Cannot convert call parameter value into expected long type ({0})", error);
  64. }
  65. return false;
  66. }
  67. return true;
  68. }
  69. public static bool Uint64FromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  70. ref ulong value)
  71. {
  72. string error = null;
  73. if (!ParameterConverter.Uint64FromMessage(parameter, ref value, ref error))
  74. {
  75. if (resultMessage != null)
  76. {
  77. resultMessage.IsFailed = true;
  78. resultMessage.ErrorMessage =
  79. String.Format("Cannot convert call parameter value into expected ulong type ({0})", error);
  80. }
  81. return false;
  82. }
  83. return true;
  84. }
  85. public static bool BoolFromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  86. ref bool value)
  87. {
  88. string error = null;
  89. if (!ParameterConverter.BoolFromMessage(parameter, ref value, ref error))
  90. {
  91. if (resultMessage != null)
  92. {
  93. resultMessage.IsFailed = true;
  94. resultMessage.ErrorMessage =
  95. String.Format("Cannot convert call parameter value into expected bool type ({0})", error);
  96. }
  97. return false;
  98. }
  99. return true;
  100. }
  101. public static bool FloatFromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  102. ref float value)
  103. {
  104. string error = null;
  105. if (!ParameterConverter.FloatFromMessage(parameter, ref value, ref error))
  106. {
  107. if (resultMessage != null)
  108. {
  109. resultMessage.IsFailed = true;
  110. resultMessage.ErrorMessage =
  111. String.Format("Cannot convert call parameter value into expected float type ({0})", error);
  112. }
  113. return false;
  114. }
  115. return true;
  116. }
  117. public static bool DoubleFromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  118. ref double value)
  119. {
  120. string error = null;
  121. if (!ParameterConverter.DoubleFromMessage(parameter, ref value, ref error))
  122. {
  123. if (resultMessage != null)
  124. {
  125. resultMessage.IsFailed = true;
  126. resultMessage.ErrorMessage =
  127. String.Format("Cannot convert call parameter value into expected double type ({0})", error);
  128. }
  129. return false;
  130. }
  131. return true;
  132. }
  133. public static bool StringFromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  134. ref string value)
  135. {
  136. string error = null;
  137. if (!ParameterConverter.StringFromMessage(parameter, ref value, ref error))
  138. {
  139. if (resultMessage != null)
  140. {
  141. resultMessage.IsFailed = true;
  142. resultMessage.ErrorMessage =
  143. String.Format("Cannot convert call parameter value into expected int type ({0})", error);
  144. }
  145. return false;
  146. }
  147. return true;
  148. }
  149. public static bool ProtoFromMessage(RpcMessage.Parameter parameter, RpcMessage.Result resultMessage,
  150. ref object value, Type paramType)
  151. {
  152. string error = null;
  153. if (!ParameterConverter.ProtoFromMessage(parameter, paramType, ref value, ref error))
  154. {
  155. if (resultMessage != null)
  156. {
  157. resultMessage.IsFailed = true;
  158. resultMessage.ErrorMessage =
  159. String.Format("Cannot convert call parameter value into expected protobuf type ({0})", error);
  160. }
  161. return false;
  162. }
  163. return true;
  164. }
  165. }
  166. }