public MessagingCenterResponse CallServiceMethod(MessagingCenterPackage package) { if (WpClients.All(c => c.ConnectionId != Context.ConnectionId)) return ErrorResponse(null, "CONNECTIONS LIMIT HAS REACHED", MessagingCenterErrors.ERROR_LIMIT_CONNECTIONS_REACHED); if (package == null) return ErrorResponse(null, "PACKAGE IS NULL", MessagingCenterErrors.ERROR_MESSANGING_CENTERE_PACKAGE_IS_NULL); if (string.IsNullOrEmpty(package.Method)) return ErrorResponse(package, "NO METHOD REQUESTED", MessagingCenterErrors.ERROR_MESSANGING_CENTERE_NO_METHOD_REQUESTED); var mmethodInfo = GetType().GetMethod(package.Method); if (mmethodInfo == null) return ErrorResponse(package, $"METHOD [{package.Method}] NOT FOUND", MessagingCenterErrors.ERROR_MESSANGING_CENTERE_METHOD_NOT_FOUND); try { return (MessagingCenterResponse)mmethodInfo.Invoke(this, new object[] { package }); } catch (Exception mex) { return ErrorResponse(package, $"EXCEPTION DURING THE EXECUTION OF {package.Method}", MessagingCenterErrors.ERROR_MESSANGING_CENTERE_DURING_THE_EXECUTION, mex); } }
public MessagingCenterResponse ErrorResponse(MessagingCenterPackage package, string message, int errorCode, Exception exception = null) { WpException mex = new WpException(errorCode, message, exception) { Metadata = JsonConvert.SerializeObject(package) }; Logger.Log(mex); return MessagingCenterResponse.CreateError(mex); }
public static MessagingCenterResponse Process(MessagingCenterPackage package) { return Module.CenterConnection.CallServiceMethod(package); }