public DeferredProcessExitCode Run(MessageBroker msgbroker) { return(Run(msgbroker, false)); }
public static DeferredProcessExitCode CreateAndExecute(MessageBroker messageBroker, BrokeredMessage message, int instanceNumber, int threadNumber) { DeferredProcessExitCode retval = DeferredProcessExitCode.NothingToDo; DeferredProcess newprocess = null; try { Type deferredType = Assembly.GetAssembly(typeof(DeferredProcess)).GetType(message.Properties["Class"].ToString()); if (deferredType == null) { return(DeferredProcessExitCode.NothingToDo); } newprocess = (DeferredProcess)Activator.CreateInstance(deferredType); newprocess.ID = message.Properties["ID"] != null ? message.Properties["ID"].ToString() : ""; foreach (PropertyInfo pi in deferredType.GetProperties()) { Type declaringType = pi.PropertyType; try { switch (declaringType.Name) { case "Double": pi.SetValue(newprocess, double.Parse(message.Properties[pi.Name].ToString()), null); break; case "Float": pi.SetValue(newprocess, float.Parse(message.Properties[pi.Name].ToString()), null); break; case "Int64": pi.SetValue(newprocess, Int64.Parse(message.Properties[pi.Name].ToString()), null); break; case "Int32": pi.SetValue(newprocess, Int32.Parse(message.Properties[pi.Name].ToString()), null); break; case "DateTime": pi.SetValue(newprocess, DateTime.Parse(message.Properties[pi.Name].ToString()), null); break; case "Boolean": pi.SetValue(newprocess, Boolean.Parse(message.Properties[pi.Name].ToString()), null); break; default: pi.SetValue(newprocess, message.Properties[pi.Name], null); break; } } catch { //Ignore the property setting error } } //Time the execution long ts = DateTime.UtcNow.Ticks; retval = newprocess.Execute(messageBroker); double milliseconds = (new TimeSpan(DateTime.UtcNow.Ticks - ts)).TotalMilliseconds; } catch { retval = DeferredProcessExitCode.Error; } finally { newprocess = null; } return(retval); }
protected virtual DeferredProcessExitCode Execute(MessageBroker messageBroker) { throw new NotImplementedException(); }